STM32双机SPI全双工通信

(基于STM32F407的SPI全双工通信时序不同步问题!!)

首先吐槽一波,调一个星期的SPI,始终没有很好的效果。

网上有很多SPI主从通信的例子,但是两片STM32单片机进行通信,基本很少,就算有,别人也不公开啊!!!没办法,自己研究呗!!

就是主机发给从机,从机能接收到数据,而从机发给主机,主机要么接收不到数据,要么接收的数据出错!!很难过!!本来打算放弃了,但是无意间浏览一个帖子,启发了我,给了我思路;

一直使用的SPI通信协议为 Motorola SPI 通信协议,什么是 Motorola SPI 通信??我也不知道,就知道调用库函数,用了什么协议都不知道,血淋淋的教训。所以啊,学习还是要看本质,会调用库函数永远都不能成为高手。PS:库函数里面使用的SPI的通信协议就是 Motorola SPI 通信协议;

问题就出在这个地方,使用的协议本身的限制,就造成了时序不同步的问题。怎么办??换协议------------TI协议

TI协议是什么??TI协议就是德州器件公司使用含有SPI功能器件上面的协议。通过更改SPI的寄存器,使用TI模式,就解决了时序不同步问题!

下面是SPI配置代码一部分:

	SPI1->CR2|=0X10;							//开启SPI的TI模式

SPI在TI协议下连续传输时序图

STM32双机SPI全双工通信_第1张图片
STM32双机SPI全双工通信_第2张图片

重点的部分已经说完,就不放源代码了,自己动手会学的更多!

你可能感兴趣的:(STM32经验总结)