[其他ST产品] 为什么SPI在写的时候最后要去判断接收缓冲区呢?

[复制链接]
2329|35
 楼主| 豌豆爹 发表于 2024-1-5 09:14 | 显示全部楼层 |阅读模式
如图所示: 51000659758283c6e4.jpg
1:为什么SPI在写的时候最后要去判断接收缓冲区呢?
6683659758364a7c4.jpg
2:同样,接收数据的时候要往发送缓冲区写入0xFF
香水城 发表于 2024-1-5 11:26 | 显示全部楼层
不知代码是哪里来的?也没啥基本交代。
一般来讲,SPI工作在全双工模式,收发同时进行;不论收发,时钟都得用主来发;

第一个问题,发送的同时做了个接收,没有什么错,具体用途要看用户的意图。

第二个问题,读的同时先做发送,如果是主机,必须通过发送产生时钟并同时实现接收【读取】。
probedog 发表于 2024-1-5 15:21 | 显示全部楼层
为了确认数据是否已经被正确接收
qiufengsd 发表于 2024-1-6 16:55 | 显示全部楼层
在SPI通信中,通常需要同时进行数据的发送和接收。
plsbackup 发表于 2024-1-6 18:43 | 显示全部楼层
主机可以通过检查接收缓冲区的数据来确定从机是否成功接收了数据。对于某些从机,即使它不需要返回有效数据,也可能返回一个确认位或其他固定值作为回应。
janewood 发表于 2024-1-6 20:43 | 显示全部楼层
如果接收缓冲区中没有接收到数据,SPI设备可能会重新发送数据,以确保数据被正确传输。如果接收缓冲区中接收到数据,SPI设备可以处理接收到的数据,并进行进一步的操作
loutin 发表于 2024-1-6 21:59 | 显示全部楼层
对于某些SPI外设,例如STM32中的SPI外设,其状态寄存器中的RXNE位表示接收缓冲区是否非空。在进行数据传输时,需要不断检查该位,以便在接收缓冲区非空时读取数据。这是因为在全双工通信模式下,发送和接收是同时进行的,即使只接收数据,也需要向从设备发送数据以触发SCK时钟的运行,这样从设备才能向主机发送数据。
albertaabbot 发表于 2024-1-7 22:53 | 显示全部楼层
SPI在写的时候最后要去判断接收缓冲区,这是因为接收缓冲区的数据是来自于外设的反馈。
burgessmaggie 发表于 2024-1-8 16:13 | 显示全部楼层
虽然在很多情况下,SPI通信是全双工的,即数据可以在同一时钟周期内同时在两个方向上传输,但实际应用中并不总是需要双向传输。
jcky001 发表于 2024-1-9 10:27 | 显示全部楼层
SPI在写的时候最后要去判断接收缓冲区是为了确保数据的完整性和正确性,提高系统的可靠性和稳定性。
abotomson 发表于 2024-1-9 20:38 | 显示全部楼层
当发送数据后,SPI设备会将接收到的数据放入接收缓冲区内。因此,为了确认数据是否成功传输,需要检查接收缓冲区的状态。例如,当接收缓冲区满时,接收中断函数会被触发。
timfordlare 发表于 2024-1-9 22:19 | 显示全部楼层
SPI通信有时会采用特定的握手协议,要求主机在写操作后验证从机返回的确认信号,这通常包含在接收缓冲区的数据中。
minzisc 发表于 2024-1-10 10:48 | 显示全部楼层
断接收缓冲区是否有数据是 SPI通信正确进行的关键步骤。
10299823 发表于 2024-1-10 19:20 | 显示全部楼层
确保数据传输的可靠性和准确性。              
mattlincoln 发表于 2024-1-10 20:28 | 显示全部楼层
有一个标志位或者状态寄存器来指示接收缓冲区是否有数据
benjaminka 发表于 2024-1-10 20:44 | 显示全部楼层
在SPI写操作时判断接收缓冲区,是为了确保能够及时读取从设备发送的数据,避免数据丢失
mikewalpole 发表于 2024-1-11 12:35 | 显示全部楼层
当SPI设备发送数据时,它会把数据放入发送缓冲区并启动传输。然而,由于各种原因(如通信错误、线路问题或接收设备的问题),发送的数据可能没有被正确接收。因此,在发送完数据后,SPI设备会检查接收缓冲区,以确认数据是否已经被正确接收。
gygp 发表于 2024-1-11 14:16 | 显示全部楼层
当SPI以主设备模式进行写操作时,主机向从机发送数据,并期望从机响应或至少采样这些数据。这时主机端SPI控制器内部的接收缓冲区也会接收到数据。
dspmana 发表于 2024-1-11 22:05 | 显示全部楼层
SPI在写的时候最后要去判断接收缓冲区的原因是为了确认数据是否已经被正确接收。通过检查接收缓冲区,可以确定是否需要重新发送数据或者处理接收到的数据。
yorkbarney 发表于 2024-1-11 22:14 | 显示全部楼层
STM32的芯片手册指出数据寄存器对应了发送/接收缓冲区并且共用一块寄存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

2316

帖子

6

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