SPI(Serial Peripheral Interface)是Motorola公司推出的一种同步串行接口技术,通过串行外围设备接口,能与外部设备之间进行全双工同步串行通信,其功能类似于51串行接口的方式0,有4个引脚:MISO,MOSI,SCK,CS.
基本概念
标准的SPI总线接口有4根通信线路,一条总线上也挂载多个SPI从设备(一主多从),是一种全双工同步通信总线。
MISO(Master Input Slave Output):主设备输入从设备输出,主设备读取从设备的数据,也有一些器件称之为SDI,就是串行数据输入的意思;
MOSI(Master Output Slave Input):主设备输出从设备输入,主设备向从设备发送数据,另一种称法是SDO,就是串行数据输出的意思;
SCK(Serial Clock):和IIC相同,无论是主设备还是从设备,所有数据的传输都是以这条线路上的时钟为同步,所以SPI和IIC都是属于同步串行接口;
SS(Slave Select):IIC可以通过寻址来找到总线上的指定设备,SPI则是用SS线来使能需要操作的设备,设备多的话,也可能使用多个IO口或者数据选择器、译码器之类。也有的器件称为CS。
支持SPI接口的设备有EEPROM,FLASH,RTC,AD转换器等。现在很多器件都是SPI的变种,三线SPI(MISO,MOSI复用)是一种半双工同步串行通信。
硬件接线时,所有SPI设备的SCK、MOSI、MISO分别连在一起,主机另外引出多条SS控制线,分别接到各从机的SS引脚,引脚配置方面输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入。由下图可以看出其接线方式。
SPI总线通信规则
SPI数据传送
数据传输时主从设备的数据移位寄存器同时工作。 主机移位寄存器的最高位发送到从机移位寄存器的最