SPI (Serial Peripheral Interface)
SPI是由Motorola公司开发的全双工同步串行通信接口,使用四条线(MOSI、MISO、SCK、CS)进行高速数据传输,常用于MCU与外设(Flash、SD卡、传感器等)之间的通信。
📌 SPI 关键特性
- 四线通信:MOSI(主出从入)、MISO(主入从出)、SCK(时钟)、CS/SS(片选)
- 全双工:可同时发送和接收数据
- 高速传输:通常可达几十MHz,远超I2C
- 主从模式:一主多从,通过不同CS选择从设备
- 模式配置:支持4种模式(CPOL + CPHA组合)
- 无应答机制:不像I2C需要ACK,传输更简单
🔄 SPI 时序波形 WaveDrom驱动
🔧 WaveDrom JSON编辑器
📖 SPI 传输时序说明
1
片选拉低 (CS):主机将CS拉低,选中目标从设备
2
时钟开始 (SCK):主机产生时钟信号,控制数据传输节奏
3
全双工传输:每个时钟周期,MOSI和MISO同时传输数据位
4
数据移位:通常MSB先传输,8位后完成一个字节
5
片选拉高 (CS):传输完成后,CS拉高,释放从设备
⚙️ SPI 四种工作模式
| 模式 | CPOL | CPHA | 空闲时钟 | 采样边沿 | 常见应用 |
|---|---|---|---|---|---|
| 模式0 | 0 | 0 | 低电平 | 上升沿采样 | SD卡、大多数传感器 |
| 模式1 | 0 | 1 | 低电平 | 下降沿采样 | 部分EEPROM |
| 模式2 | 1 | 0 | 高电平 | 下降沿采样 | 部分LCD显示器 |
| 模式3 | 1 | 1 | 高电平 | 上升沿采样 | MMC卡、某些ADC |
说明:
- CPOL (Clock Polarity): 时钟极性,决定空闲时钟电平
- CPHA (Clock Phase): 时钟相位,决定数据采样时刻
- 主从设备必须使用相同的SPI模式才能正确通信
⚡ SPI vs I2C 对比
速度
SPI: 几十MHz
I2C: 最高3.4MHz
线数
SPI: 4+线(每个从机需独立CS)
I2C: 2线
通信方式
SPI: 全双工
I2C: 半双工
寻址
SPI: 硬件CS选择
I2C: 地址寻址