[信息] LAT1525 STM32H7 SPI通信的Underrun特性介绍

[复制链接]
65|0
STM新闻官 发表于 2025-10-29 22:52 | 显示全部楼层 |阅读模式
1. 前言
在 SPI 通讯中,从器件借助主器件提供时钟信号进行发送和接收,收发的时刻由主器件进行控制。在从器件发送模式下,如果主器件的时钟信号已经到来,但是从器件还没有准备好要发送的数据(没有将数据放入 TXFIFO 中),就会发生下溢。若能够正确合理的检测到下溢,并对其进行处理,可以提供数据传输的可靠性。
在 STM32H7 中可以配置下溢检测的位置,下面以 STM32H723 芯片为蓝本进行介绍。

2. 通信格式
我们先理解下 SPI 的时钟相位和极性控制,时钟可以设置为四种基本配置之一。CPOL和 CPHA 两个位的组合控制时钟信号的极性和相位。
•  CPOL(时钟极性):SCK 引脚空闲状态时的电平状态。
o  CPOL=0 : SCK 引脚空闲为低电平
o  CPOL=1 : SCK 引脚空闲为高电平
•  CPHA(时钟相位):定义了哪个时钟边沿用于数据采样或移位(如下图所示)。
o  CPHA=0 : 数据位在奇数时钟边沿采样,偶数时钟边沿或之后将下一个数据位移到数据线上。
o  CPHA=1 : 奇数时钟边沿或之后将当前数据位移到数据线上,数据位在偶数时钟边沿采样。

26145690229f36099e.png

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 字段进行定义)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1401

主题

1719

帖子

25

粉丝
快速回复 在线客服 返回列表 返回顶部