SPI(Serial Peripheral Interface)即串行外设接口,是一种同步串行通信接口规范,主要应用于嵌入式系统中的短距离通信。该接口由摩托罗拉在20世纪80年代中期开发,后发展成了行业规范,且现在仍然是行业内比较流行的通信协议之一。
1、SPI通信协议的主要特点
高速、全双工、同步通信:SPI是一种高速的、全双工(允许数据同时在两个方向上传输,即有两个信道)的、同步(电路共享同一个时钟CLK,而所有的状态变化都是在时钟的上升沿(或下降沿)完成)的通信总线,能够在短时间内高效地完成数据的传输。
占用管脚少:在芯片的管脚上至多仅需使用四根线(SDI/MISO、SDO/MOSI、SCK、CS/SS),节约了芯片的管脚,为PCB的布局节省空间。
简单易用:由于其简单易用的特性,越来越多的芯片集成了SPI通信协议。
2、SPI的工作原理
主从模式:SPI分为主模式和从模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备和一个或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave)。主机的MISO需要接从机的MISO,主机的MOSI需要接从机的MOSI,不能交叉接。
信号线定义:
- SDI/MISO(主设备输入/从设备输出):在从模式下发送数据,在主模式下接收数据。
- SDO/MOSI(主设备输出/从设备输入):在主模式下发送数据,在从模式下接收数据。
- SCK(时钟信号):由主设备产生,用于同步数据的传输。
- CS/SS(片选信号):由主设备控制,用于选择特定的从设备进行通信,且主机的CS线数量由从机的数量决定决定。
通信过程:
- 主设备首先拉低从设备的CS/SS线,表示与该设备进行通信。
- 主设备通过发送SCK时钟信号,告知从机即将进行的读写操作。
- 数据在主设备和从设备之间通过MOSI和MISO信号线同时传输,实现全双工通信。
3、SPI的四种模式
SPI通信有四种不同的操作模式,这些模式通过时钟极性(CPOL)和时钟相位(CPHA)来定义:
Mode 0:CPOL=0,CPHA=0。时钟空闲态为低电平,数据在时钟上升沿采样,下降沿输出。
Mode 1:CPOL=0,CPHA=1。时钟空闲态为低电平,数据在时钟下降沿采样,上升沿输出。
Mode 2:CPOL=1,CPHA=0。时钟空闲态为高电平,数据在时钟下降沿采样,上升沿输出。
Mode 3:CPOL=1,CPHA=1。时钟空闲态为高电平,数据在时钟上升沿采样,下降沿输出。