SPI(Serial Peripheral Interface)串行外设接口,SPI协议由Motorola 公司推出。
工作原理:一主一从(两个芯片,一个做主设备,一个做从设备),或者一主多从;主、从设备之间接线方式如图(四根线),三根线的接法不常用(三线只能单向通信);
四根线分别是:
(1):SDO/MOSI – 主设备数据输出,从设备数据输入
(2):SDI/MISO – 主输入,从输出(三根线时,没有SDI/MISO)
(3):SCLK – 时钟信号(主设备产生);
(4):CS/SS – 片选使能,由主设备控制,拉低以使能从设备,否则无法与从设备通信。
接下来就比较啰嗦了:
SPI主、从设备之间通信是由SPI模式(共4种)决定的;
4种模式的选择是通过控制CPOL(时钟极性)和CPHA(时钟相位),来确定;
CPOL是用来配置SCLK电平的有效态的,CPHA是用来配置数据采样是发生在第几个边沿的。
SPI通信4种模式如图,不同的从设备在出厂时配置模式已经固定(无法改变),主、从设备通信需要统一模式,因此只能配置主设备的SPI模式,使主、从设备的CPOL和CPHA一致:
CPOL=0表示当SCLK=0时处于空闲态,所以SCLK处于高电平时有效;
CPOL=1表示当SCLK=1时处于空闲态,所以SCLK处于低电平时有效;
CPHA=0表示数据采样是在第1个边沿,数据发送在第2个边沿;
CPHA=1表示数据采样是在第2个边沿,数据发送在第1个边沿;
Mode0:CPOL=0,CPHA=0;此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
Mode1:CPOL=0,CPHA=1;此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
Mode2:CPOL=1,CPHA=0;此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
Mode3:CPOL=1,CPHA=1;此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
了解部分:
SPI优点:支持全双工通信 数据传输速率块
缺点:没有应答机制,数据可靠性不如IIC