目录
一,SPI通信协议简介
SPI(Serial Peripheral Interface,串行外设接口缩写)是一种同步全双工的通信协议(因为它具有时钟线,主设备和从设备也能同时发送和接收数据),它使用四根线进行通信:主设备数据输出从设备输入(MOSI)、主设备数据输入从设备输出(MISO)、时钟线(SCLK)、片选信号线(CS)。
SPI通信速率可以达到几Mbps~几百bps。
SPI有主、从两种模式,它是用单独数据线和单独时钟信号保证发送端和接收端完美同步。通常由一主多从,一主一从模式。
图1 一主一从模式
图2 一主多从模式
二,SPI工作过程
图3 SPI工作过程
主设备启动发送过程,将CS/NSS信号拉低,送出时钟脉冲信号
图4 CS片选信号拉低
主设备发送一段数据(称为数据帧)给从设备。数据帧包括数据位、时钟信号和控制信号。主设备通过时钟信号将数据一位一位地发送出去。
从设备接收到数据帧后,进行处理将数据放入自己的移位寄存器中在时钟信号下降沿一位一位读取出来并发送响应数据帧给主设备。响应数据帧的结构和发送数据帧
这样主从设备就实现了全双工通信,可以同时发送和接收数据。
传输完数据之后,等待下一次的时钟信号。
之后主设备将片选信号恢复为高电平,结束通信
三、SPI四种模式
1、极性和相位
时钟极性(CPOL,Clock Polarity)是指SCK的空闲状态,CPOL=0,SCK为低电平;CPOL=1,SCK为高电平。
时钟相位(CPHA ,Clock Phase)表示在时钟在第几个跳边沿采样,CPHA=0,第一个跳变沿(奇)采样接收;CPHA=1,第二个跳变沿(偶)采样接收。
2、四种模式
模式0(CPOL=0,CPHA=0)
CPOL=0,SCK为低电平;CPHA=0,第一个跳变沿采样
模式1(CPOL=0;CPHA=1)
CPOL=0,SCK为低电平;
CPHA=1,数据在第2个跳变沿采样
模式2(CPOL=1,CPHA=0)
CPOL=1,SCK为高电平;
CPHA=0,数据在第1个跳变沿采样
模式3(CPOL=1,CPHA=1)
CPOL=1,SCK为高电平
CPHA=1,数据在第2个跳变沿采样
四,SPI与其他通信协议的优缺点
优点:
1,高速传输
2,简单易用(硬件连接简单)
3,可扩展性强
缺点:
1,传输距离有限
2,无法实现广播
3,无法实现多主控制(不能有两个主机以上)
4,信号线数量多