2026.10.12 SPI通信协议复习
part1:SPI定义和理解
SPI采取的同步全双工 的模式,并且仅支持一主多从 的模式,通信线主要有时钟线SCK (部分地方称为SCLK),MOSI (主机输出从机输入),MISO (主机输入从机输出),SS(片选,选择从机,低电平有效),通过其表意就可分析出各线在通信中的作用,由于一主多从的模式,实际应用开发中主机上应有多条SS,但单个从机通信时,其它从机应保持高阻态,同时输出端口应配置为推挽输出,输入端口应配置为上拉/浮空输入
part2:SPI存在的意义以及与I2C的对比
I2C是一个很强大的通信协议,它最大限度地通过软件模拟的方式节省了硬件资源,并且支持多主多从,多主机仲裁,主从应答的模式,能实现更复杂情景下的应用,但存在一个缺点:通信速率上限受到很大限制,由于I2C的弱上拉开漏模式,使得通信线上升沿相对于下降沿来说是慢很多的,这就导致了I2C的通信速率不会很快,常见的有100khz,400khz,3.4Mhz,但通常采用的I2C仍然是khz级别的,而SPI的出现恰好可以解决这个问题,由于SPI有两根数据线,可以保证上升沿和下降沿都很迅速,通信速率会大大提高,常见的SPI都是几十Mhz级别的,所以在一些需要高速传输的情景SPI是非常常用的,尽管它需要更多的硬件资源
part3:SPI工作原理和4种工作模式
1.工作原理
SPI的工作原理我觉得可以用"交换"这个词来形容,在主机和从机内部的数据移位寄存器中均存储着8bit数据,当SS=0选中从机后,根据SCK的上升边沿来不断将主机从机高位bit同时移出当前寄存器,并移入目标寄存器,边沿的指示不同跟4种工作模式有关,当8bit数据全部"交换"后,完成一字节的收发,然后SS=1(如果不想继续通信),一般来说主机收数据,数据一般给0x00或者0xFF来去跟从机交换

2. 4种工作模式
由 CPOL (Clock Polarity)和 CPHA(Clock Phase)组合成 4 种模式:
| 模式 | CPOL | CPHA | 空闲电平 | 采样边沿 | 移出边沿 |
|---|---|---|---|---|---|
| Mode 0 | 0 | 0 | 低 | 上升沿 | 下降沿 |
| Mode 1 | 0 | 1 | 低 | 下降沿 | 上升沿 |
| Mode 2 | 1 | 0 | 高 | 下降沿 | 上升沿 |
| Mode 3 | 1 | 1 | 高 | 上升沿 | 下降沿 |
- CPOL=0:空闲低;CPOL=1:空闲高
- CPHA=0:第一个边沿采样;CPHA=1:第二个边沿采样



