●SPI总线
1、何为SPI
SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。
2、SPI模型
(1)MOSI:主器件数据输出,从器件数据输入
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK :时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制
3、SPI时序
SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合,下图表现了这四种时序
CPOL是用来决定SCK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平;CPOL=1时,空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样;CPHA=1,在每个周期的第二个时钟沿采样。
SPI主模块和与之通信的外设音时钟相位和极性应该一致。
●STM32的SPI接口
1、接口特性
1)基于三条线的全双工同步传输
2)8位或者16位的数据帧
3)主模式或从模式
4)最先以为LSB或者MSB
5)SPI总线忙标志
2、功能说明
NSS引脚可以选择软件管理,这样比较容易操作,而从器件的NSS引脚可以用单片机的一个GPIO口来驱动,只要将IO电平拉低就可以选中从器件
3、时序
注意,主器件的相位和极性一定要和从器件匹配。
4、将STM32配置成主器件
5、寄存器
1)控制寄存器SPI_CR1
2)控制寄存器SPI_CR1
●代码
1、初始化
2、收发数据