一、SPI简介
SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,要求通讯速率
较高的场合。
特点:
1.全双工通信
2.支持DMA
3.支持一主多从
4.传输速率快(10Mhz)
二、SPI通信引脚说明
SSI(片选线):用于与从机进行通信,当主机想与其中一个从机进行通信时,就可以把对应的SS片选线拉低,从而代表选中对应的从机,其他从机为高阻态模式。
SCK(时钟线):主要是在通信时提高时钟,进行通信的同步。
MOSI(主机发送,从机接收):主机通过这根线可以对从机发送数据
MISO (主机接收,从机发送) :从机通过这根线可以对主机发送数据
三、SPI时序图
1.通信起始条件:CS从高电平变为低电平
2.通信结束条件:CS从低电平变为高电平
3.交换一个字节:发送和接收一个字节共有4种模式,主要由CPOL(时钟极性)、CPHA(时钟相位)4种变化而来。
SPI模式 | CPOL | CPHA | 空闲时SCK时钟状态 | 采样时刻 |
---|---|---|---|---|
0 | 0 | 0 | 低电平 | 奇数采样 |
1 | 0 | 1 | 低电平 | 偶数采样 |
2 | 1 | 0 | 高电平 | 奇数采样 |
3 | 1 | 1 | 高电平 | 偶数采样 |
3.1 SPI模式类型
3.1.1 SPI模式0
CPOL=0:空闲状态时,SCK为低电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
在SCK时钟上升沿之前,MOSI和MISO同时移入数据。在SCK下降沿之前,数据被移出
3.1.2 SPI模式1
CPOL=0:空闲状态时,SCK为低电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据
在SCK时钟上升沿时,MOSI和MISO同时移入数据。在SCK下降沿时,移出数据
3.1.3 SPI模式2
CPOL=1:空闲状态时,SCK为高电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
在SCK时钟下升沿之前,MOSI和MISO同时移入数据。在SCK上降沿之前,数据被移出
3.1.4 SPI模式3
CPOL=0:空闲状态时,SCK为高电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据