ST意法半导体
直播中

李俊

8年用户 1399经验值
私信 关注
[问答]

STM32F746如何实现半双工通信的SPI函数?

STM32F746的参考手册所述,发现利用SPI功能进行半双工通信,可以实现图中使用一根数据线(SDA信号)的双向通信。

请告诉我具体的控制方法。
是否可以通过将 SPIx_CR1 寄存器的 BDIOE 位设置为 0 来切换到接收:输出禁用(仅接收模式)?

对于exsample1,如果时序如下,1处理完成后时钟信号是否自动变为High?
之后在2的过程中,STM32是不是立即开始发送时钟和接收数据呢?

顺序
1. 9位传输完成
2. 将 BDIOE 位设置为 0
3.接收8位

对于exsample2,STM32可以按如下顺序接收数据吗?
那么,是否可以阻止STM32接收一个虚拟时钟周期的一位数据呢?
还是在进程 1 中发送 10 位更好?

顺序
1. 9位传输完成
2. 将 BDIOE 位设置为 0
3.重复8位接收3次

回帖(1)

张子腾

2023-1-5 11:33:41
如果你发送 9 位帧,你也会收到 9 位帧。所以你还需要重新编程帧长度,我不确定你是否可以在不禁用/启用 SPI 的情况下做到这一点。
双向模式下的 Rx 也很棘手,因为一旦您将方向转向 Rx,SPI 就会自动开始生成时钟,并且只有在您将方向转回 Tx 时才会停止。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分