1.SPI协议介绍
SPI协议是由摩托罗拉公式提出的通讯协议(Serial Peripheral Interface串行外设接口),是一种高速全双工的通信总线。
SPI通讯使用3条总线(SCK、MOSI、MISO)和片选线CS。
- CS:片选线也叫NSS,当有多个SPI设备与SPI主机相连时,设备的其他信号线SCK、MOSI、MISO同时并联到相同的SPI总线上(无论由多少个从设备,都共用这3条总线),而每个从设备都有独立的CS片选线,有多少个从设备就有多少个CS线。SPI通讯无设备地址,当主机要选择从设备时,把该从设备的CS线拉低该从设备就会被选中,片选有效,主机就可以开始和从设备进行SPI通讯。于是SPI通讯以CS低电平为起始信号,高电平为结束信号
- SCK:时钟线,由主机产生并决定通讯速率。
- MOSI ( Master Output , Slave Input):主机输出从机输入
- MISO ( Master Input, Slave Output ):主机输入从机输出
2.SPI通讯时序
NSS、SCK、MOSI由主机产生,MISO由从机产生,在SCK每个时钟周期MOSI、MISO传输一位数据,数据的输入输出是同时进行的。MSB先行或LSB先行无硬性规定。
MOSI和MISO在SCK上升沿期间变换,在SCK下降沿采样,SPI每次数据传输可以8位或16位为单位,每次传输的单位不受限制。
3.通讯模式
| SPI通讯模式 | CPOL | CPHA | 空闲时SCK时钟 | 采样时刻 |
|---|---|---|---|---|
| 0 | 0 | 0 | 低电平 | 奇数边沿 |
| 1 | 0 | 1 | 低电平 | 偶数边沿 |
| 2 | 1 | 0 | 高电平 | 奇数边沿 |
| 3 | 1 | 1 | 高电平 | 偶数边沿 |
主机需要与从机工作在相同模式下才可以正常通讯。
未完待续