目录
一、SPI简介
二、spi通信模式
![](https://i-blog.csdnimg.cn/blog_migrate/aba8fbc44c124070e47dbecc5ccbb036.png)
将MOSI引脚连接在一起、将MISO引脚连接在一起,通过这种方式,主器件和从器件之间以串行方式传输数据。
“半双工”通信模式1:1条时钟线和1条双向数据线 (三线模式)
“半双工”通信模式2:1条时钟线和1条单向数据线 (三线模式)
三、Cube_MX实现全双工spi通信
(仅作为交流分享使用)题主选择全双工模式实现spi
选择spi2做主硬件触发方式,打开中断使能,其余设置根据自己所需配置即可,我这里保持默认。其中
CPOL:时钟极性,为“1”时表示,时钟空闲时状态为高,即时钟是低有效;反之为“0”时,时钟则是高有效
CPHA:时钟相位,为“0”时表示在第一个时钟沿开始采样,即第二个时钟沿开始发送数据;为“1”时,表示在第二个时钟沿开始采样,在第一个时钟沿开始发送数据
综上,利用CPOL、CPHA可以得到00、01、10、11等四种SPI总线模式
具体参数设置见上图
选用spi3作为从设备,打开中断使能,其余保持默认即可
generate code完成后使用keil打开代码
将需要发送的数据tdata设置完成,rdata是接收数据。在这里需要注意一下,对于spi应该分清楚SPI没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。
因为之前Cube_MX配置时打开了中断,这里选择中断方式实现spi的函数即可,将参数填写完成。其余实现SPI函数见下图
代码填写完整后,下载代码至板子上,进入debug模式
如图所示,从机正确收到主机发出的数据,证明spi通信成功。
四、总结
以上就是利用HAL库配置spi四线模式通信的全部内容,正常来讲,把协议看一遍,利用Cube_MX这款软件就能正确配置任何你想实现的通信模式,其他两种工作模式如法炮制即可。