SPI
- SPI(Serial Peripheral Interface, 串行外围设备接口)是一种高速、全双工、同步通信总线。SPI通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据传输速率较快;缺点是没有指定的流控制,没有应答机制,在数据可靠性上有一定缺陷!
- SPI接口可以是3线式(SCLK、CS、DIO)或者4线式(SCLK、CS、MOSI、MISO)。
- SPI采用主从控制模式,通常由一个主模块和一个或多个从模块组成(不支持多主机),来自主机或者从机的数据在clk上升沿或下降沿同步,一般使用四条线进行通信(SCLK、CS、MOSI、MISO)。
- MISO(Master Input Slave Output):主设备数据输入,从设备数据输出;
- MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
- SCLK(Serial Clock):时钟信号,由主设备产生;
- CS/SS(Chip Select/Slave Select):从设备片选信号,由主设备控制,通常低电平有效。
SPI 四种通信方式
- 1、SPI总线在传输数据的同时也传输了时钟信号,时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制两个SPI设备何时交换数据以及何时对接收数据进行采样,保证数据在两个设备之间同步传输。
- 2、时钟极性(Clock Polarity,CPOL/CKP),它是指时钟信号在空闲状态下是高电平还是低电平,当时钟空闲时为低电平即 CPOL=0,反之 CPOL=1.
- 3、时钟相位(Clock Phase,CPHA/CKE),它是指时钟信号开始有效的第一个边沿和数据的关系。当时钟信号有效的第一个边沿处于数据稳定期的正中间时定义CPHA=0,反之时钟信号有效的第一个边沿不处于数据稳定期的正中间定义CPHA=1。所以在时钟信号SCK的第一个跳变沿采样即CPHA=0,再时钟信号SCK的第二个跳变沿采样为CPHA=1。
- 4、根据SPI的时钟极性和时钟相位特性可以设置4种不同的SPI通信操作模式:
SPI模式 | CPOL | CPHA | 空闲时SCK时钟 | 采样时刻 |
---|---|---|---|---|
0 | 0 | 0 | 低电平 | 第1个边沿(奇) |
1 | 0 | 1 | 低电平 | 第2个边沿(偶) |
2 | 1 | 0 | 高电平 | 第1个边沿(奇) |
3 | 1 | 1 | 高电平 | 第2个边沿(偶 ) |
- Mode0:CKP=0,CPHA=0,当空闲态时,SCK处于低电平,数据采样是在第1个边沿,即SCK由低电平到高电平的跳变,所以数据采样是在上升沿(准备数据),(发送数据)数据发送是在下降沿。
- Mode1:CKP=0,CPHA=1,当空闲态时,SCK处于低电平,数据发送是在第2个边沿,即SCK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
- Mode2:CKP=1,CPHA=0,当空闲态时,SCK处于高电平,数据采集是在第1个边沿,即SCK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
- Mode3:CKP=1,CPHA=1,当空闲态时,SCK处于高电平,数据发送是在第2个边沿,即SCK由高电平到低电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。