常用通讯-SPI
SPI简介
SPI是Serial Peripheral Interface(串行外设接口)的缩写,SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工的、同步通讯总线。
SPI优点
- 全双工
- 通讯速度快
- 通信简单
SPI缺点
- 没有指定的流控制
- 传输过程中没有应答机制,传输可靠性不如IIC
SPI信号线
SPI通常采用四根信号线进行传输(单向通信时可以三根信号线);
- SCLK:时钟线,时钟信号必须由主设备产生;
- CS:从设备使能控制线,由主设备控制。当有多个从设备与主设备连接时,每个从设备都会一个片选引脚接入到主设备中,当主设备需要与某个从设备通信时,主设备需要将该从设备的片选引脚电平拉高或者拉低。
- MOSI/SDO:数据线。主设备数据输出,从设备数据输入。
- MISO/SDI:数据线。主设备数据输入,从设备数据输出。
SPI接线图
SPI工作模式
SPI有四种工作模式,可以通过CPOL(时钟极性)和CPHA(时钟相位)来控制主设备的工作模式。
- Mode0:CPOL = 0;CPHA = 0;
- Mode1:CPOL = 0;CPHA = 1;
- Mode2:CPOL = 1;CPHA = 0;
- Mode3:CPOL = 1;CPHA = 1;
时钟极性CPOL是用来配置SCLK的电平处于哪种状态时是空闲态或者有效态。
- CPOL = 0:表示SCLK = 0时处于空闲状态;当SCLK = 1时处于有效状态。
- CPOL = 1:表示SCLK = 1时处于空闲状态;当SCLK = 0时处于有效状态。
时钟相位CPHA是用来配置数据采样是在第几个边沿。
- CPHA = 0:表示数据采样是在第1个边沿,数据发送在第2个边沿。
- CPHA = 1:表示数据采样是在第2个边沿,数据发送在第1个边沿。
例如:
- CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
- CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
- CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
- CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。