当前位置: 首页 > news >正文

STM32H7 SPI通信的Underrun特性介绍 LAT1525

关键字: SPI , underrun,UDRDET,TxFIFO

1. 前言

在SPI通讯中,从器件借助主器件提供时钟信号进行发送和接收,收发的时刻由主器 件进行控制。在从器件发送模式下,如果主器件的时钟信号已经到来,但是从器件还没有 准备好要发送的数据(没有将数据放入TXFIFO中),就会发生下溢。若能够正确合理的 检测到下溢,并对其进行处理,可以提供数据传输的可靠性。

在STM32H7中可以配置下溢检测的位置,下面以STM32H723芯片为蓝本进行介绍。

2. 通信格式

我们先理解下SPI的时钟相位和极性控制,时钟可以设置为四种基本配置之一。CPOL 和CPHA两个位的组合控制时钟信号的极性和相位。

• CPOL(时钟极性):SCK引脚空闲状态时的电平状态。

  • CPOL=0 : SCK引脚空闲为低电平
  • CPOL=1 : SCK引脚空闲为高电平

• CPHA(时钟相位):定义了哪个时钟边沿用于数据采样或移位(如下图所示)。

  • CPHA=0 : 数据位在奇数时钟边沿采样,偶数时钟边沿或之后将下一个 数据位移到数据线上。
  • CPHA=1 : 奇数时钟边沿或之后将当前数据位移到数据线上,数据位在 偶数时钟边沿采样。

图1. 时钟和相位控制示意图

3. 下溢检测

SPI(串行外设接口)从机下溢是一种在SPI通信中常见的错误情况,通常发生在从器 件(从机)未能及时提供数据给主器件(主机)时。

为了适应多种工作场景,STM32H7可以通过SPI_CFG1寄存器的UDRDET字段来配 置从机在发送模式下检测下溢的时刻。在从器件发送模式下,如果在 UDRDET 位指定的 时刻,从器件 TxFIFO 中没有数据可用于发送,则会由硬件在内部捕获下溢情况。

但是要注意,由于硬件传播延迟,UDR事件发生后会在几个SPI时钟周期后才能检测 到UDR事件发生(或者产生UDR事件中断)。

下面针对这几个检测的位置做一个简单介绍。

3.1. UDRDET = 0

当UDRDET=0的时候,在主器件发出新的数据帧时(开始为新的帧提供时钟信号 时),从器件会检测TXFIFO是否为空。当TXFIFO为空时,会产生下溢事件,slave会发 送一个dummy数据,如果不清除SR寄存器的UDR状态位,后续会发送underrun pattern 数据(由UDRCFG字段进行定义)

 如下图所示,在第二帧开始的时候,TXFIFO已经为空了,此时会产生下溢 (underrun)事件,但是由于UDR(underrun)事件传播需要占用几个SPI时钟周期,所 以看到在实线位置处才能实际检测到UDR事件发生(或者产生UDR事件中断)。Slave 在第二帧发送的时dummy数据,第三帧及之后发送都是underrun pattern数据。

图2. UDRDET = 0

3.2. UDRDET = 1

当UDRDET=1的时候,在上一帧通讯结束的时候(TXFIFO变为空时),从器件会检 测TXFIFO是否为空。

这时候会有两种情况:

1. 在刚开始传输时TXFIFO就为空(第一帧)。由于TXFIFO为空,产生下溢事件。 没有可用数据可以发送,此时slave会先发送dummy数据,如果不清除SR寄存 器的UDR状态位,则后面会发送underrun pattern数据(由UDRCFG字段进行 定义)。

如下图所示,在第一帧时TXFIFO就为空,此时会产生UDR(underrun,下溢) 事件,由于UDR事件传播需要占用几个SPI时钟周期,所以看到在实线位置处才 能实际检测到UDR事件发生(或者产生UDR事件中断)。所以slave在第一帧会 发送dummy数据,第二帧及后续都发送underrun pattern数据(由UDRCFG 字段进行定义)。

图3. UDRDET=1并且在开始传输时TXFIFO为空

2. 在传输过程中TXFIFO变为空的情况。当TXFIFO变为空的时候,会产生下溢事 件,slave会发送underrun pattern 数据(由UDRCFG字段进行定义)。 如下图所示,在第一帧发送时TXFIFO变为空,由于UDR(underrun)事件传播需 要占用几个SPI时钟周期,所以看到在实线位置处才能实际检测到UDR事件发生 (或者产生UDR事件中断)。Slave会在检测到UDR事件后发送underrun pattern 数据(由UDRCFG字段进行定义)。

图4. UDRDET=1并且在传输过程中TXFIFO变为空

3.3. UDRDET = 2

当UDRDET=2的时候,在激活SS信号时就开始检测是否产生了下溢。当检测到下溢 事件之后,如果SS信号没有翻转过的话,在每帧之后都会产生下溢事件(即使在已经清 除了SR寄存器的UDR位和TXFIFO不为空的情况下)。

如下图所示,在SS为低(激活SS信号)时,TXFIFO为空,所以会产生下溢事件 (虚线位置),由于UDR事件传播需要占用几个SPI时钟周期,所以在实线位置处才能 实际检测到UDR事件发生(或者产生UDR事件中断)。所以slave在第一帧会及后续都 发送underrun pattern 数据(由UDRCFG字段进行定义)。

图5. UDRDET = 2 

4. 小结

因为客户在使用过程中遇到过由于下溢检测位置的配置导致的问题,借此机会在此做 些分享,旨在帮助大家理解STM32H7的下溢检测特性及功能,供大家在实际应用中灵活 使用。

意法半导体公司及其子公司 (“ST”)保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

http://www.dtcms.com/a/513561.html

相关文章:

  • 网站查询seo网页广告设计师培训
  • 网站的营销方案百度口碑网
  • 有哪些做网站的公司网站建设 内容缺乏
  • 内蒙古建设安全监督网站wordpress取消伪静态
  • 延吉做网站网站备案 快递
  • 蜀icp备 网站建设中企动力成都怎么做优化关键词
  • 优速网站建设优化seo平面广告创意作品
  • 宁波搭建网站孝感公司做网站
  • 做弹幕网站有哪些网站网页制作的公
  • 自己做网站卖货多少钱公司网站地址
  • 单位做员工招退工在什么网站产品招商网
  • 办办网登陆引擎优化
  • 个人网站 不用备案泉州建设工程开标网站
  • 外贸建站 台州网站数据统计
  • 高大上的企业网站利用wordpress实现分类筛选
  • 网站源码下载平台源码小型建筑公司
  • 网站平台建设心得域名托管
  • 邯郸网站建设小霖一般做个网站多少做网站多少钱
  • 网站短时间怎么做权重素材网站源码
  • 销售网站建设怎么样开发帮app下载
  • 台州市建设工程造价管理处网站广州市地铁线路最新全图
  • 常熟专业做网站行业报告
  • 免费教育网站大全 建站网站开发超速云
  • 重装VMware
  • 网页网站开发设计工作前景张家口购物网站开发设计
  • 多项目资源冲突时,项目经理如何平衡
  • 建立个人网站的费用亚马逊站外推广网站
  • 做相册哪个网站好用企业网站制作建站公司
  • 网站建设外包合同大企业网站建设方案
  • 手机免费注册网站运维工程师一月多少钱