SPI通信协议
1. SPI通信
SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线
四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)
同步,全双工
支持总线挂载多设备(一主多从)
所有SPI设备的SCK、MOSI、MISO分别连在一起。
主机另外引出多条SS控制线,分别接到各从机的SS引脚。
输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入。
SPI主从机的寄存器间的数据传递与队列(queue)机制非常相似,时钟提供时,主机寄存器的数据首位通过MOSI线传输到从机寄存器的末位,如果是1就是上升沿,如果是0就是下降沿。转移了首位的数据,数据往前移动一位,这样从机的首位数据就可以通过MISO线进入主机寄存器的末位。如此往复,交换数据。
2. SPI时序基本单元
2.1 起始、终止条件
2.2 模式0
2.3 模式1
2.4 模式2
2.5 模式3
3. SPI时序
4. SPI外设
STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担
可配置8位/16位数据帧、高位先行/低位先行
时钟频率: fPCLK / (2, 4, 8, 16, 32, 64, 128, 256)
支持多主机模型、主或从操作
可精简为半双工/单工通信
支持DMA。
兼容I2S协议。
STM32F103C8T6 硬件SPI资源:SPI1、SPI2。