SPI即串行外围设备接口,是全双工的通信总线,有四根线
M:主设备 S:从设备 I:输入 O:输出
MISO:主设备数据输入,从设备数据输出
MOSI:主设备数据输出,从设备数据输入
SCLK:时钟信号,由主设备产生
CS:从设备片选信号,由主设备控制
工作原理:
1)主机和丛集都有一个串行移位寄存器,主机通过他的SPI串行寄存器写入一个字节发起一次传输。
2)串行移位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机,这样,两个移位寄存器的内容就被交换。
3)外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,如主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
状态标志:
TXE(发送缓冲器空闲标志):
TXE=1表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中,当写入SPI_DR时,TXE标志被清零。
RXNE(接收缓冲器非空):
RXNE=1表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清楚此标志。
BUSY(忙标志):
busy标志由硬件设置与清楚(写入此位无效果)
程序配置过程:(来源于战舰STM32F1库函数版本)
1) 配置相关引脚的复用功能,使能 SPI2 时钟
我们要用 SPI2,第一步就要使能 SPI2 的时钟。其次要设置 SPI2 的相关引脚为复用输出,
这样才会连接到 SPI2 上否则这些 IO 口还是默认的状态,也就是标准输入输出口。这里我们使
用的是 PB13、 14、 15 这 3 个(SCK.、 MISO、 MOSI&#