二十七、STM32——SPI
1 SPI通信概述
SPI(Serial Peripheral interface,串行外围设备接口),是一种高速的、全双工,同步通信总线。
SPI采用主从控制模式(Master-Slave)架构,一般有1个主设备、一个或多个从设备,使得主设备可以与多个从设备之间实现片间通信。
SPI在芯片管脚中只占用四根线节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便。
主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。
1.1 SPI的主从模式
SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主),提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,主设备通过片选信号(SC)选择一个从设备进行同步通信,从而完成数据的交换。
1.2 SPI的四根信号线
4线SPI接口有4根信号线,分别为时钟信号(SCLK)、片选信号(SS/CS)、主设备输出从设备输入(MOSI Master OUT Slave IN )和主设备输入从设备输出(MISO Master IN Slave OUT)。
管脚名称 | 作用 |
---|---|
CS(片选信号) | CS 用于选择从设备,只有片选信号有效时,对Slave的操作才有效。 |
CLK(时钟信号) | CLK 是由主机产生的同步时钟,用于同步数据(Master 设备产生,提供给Slave 设备)。 |
MOSI(Master OUT Slave IN) | 用于传输数据,方向为:Master 设备输出,Slave 设备输入。 |
MISO(Master IN Slave OUT) | 用于传输数据,方向为:Slave 设备输出,Master 设备输入。 |
1.3 数据交换
SCK默认低电平,当SS第一个下降沿的时候,MOSI和MISO移出数据,在SCK的上升沿移入数据,如此循环八次,便交换一个字节,所以SPI通信其实就是交换数据。
见上图,主机想要给从机发送0xAA,交换一个字节后,主机接收到的是0x55,从机则接收到0xAA,我们如果只想接收数据,就随便发送一个数据给从机;只想发送数据实现某种功能,那么从机交换过来的数据我们可以不读。