1. SPI协议基础解析:从理论到波形观测
SPI(Serial Peripheral Interface)作为一种高速全双工同步串行通信协议,在嵌入式系统和芯片间通信中占据重要地位。我第一次接触SPI是在调试一块传感器模块时,当时用示波器抓取的波形让我真正理解了时钟与数据的舞蹈关系。
SPI的核心优势在于其简单的四线制结构和主从模式设计。与I2C相比,SPI没有复杂的地址机制和应答信号,通信效率更高。典型的SPI系统包含以下信号线:
- SCLK(Serial Clock):主设备产生的同步时钟
- MOSI(Master Out Slave In):主设备输出,从设备输入
- MISO(Master In Slave Out):从设备输出,主设备输入
- SS/CS(Slave Select/Chip Select):从设备片选信号(低电平有效)
关键提示:SPI没有标准协议规范,不同厂商的实现可能存在差异,实际使用前务必查阅器件手册的时序图部分。
2. SPI参数配置详解:时钟极性与相位的艺术
2.1 CPOL与CPHA的四种组合模式
SPI最让人困惑的莫过于时钟极性(CPOL)和时钟相位(CPHA)的配置组合。这直接决定了数据采样的边沿位置,配置错误会导致通信完全失败。通过示波器观察,可以清晰看到四种模式的区别:
| 模式 | CPOL | CPHA | 时钟空闲状态 | 数据采样边沿 |
|---|---|---|---|---|
| 0 | 0 | 0 | 低电平 | 上升沿 |
| 1 | 0 | 1 | 低电平 | 下降沿 |
| 2 | 1 | 0 | 高电平 | 下降沿 |
| 3 | 1 | 1 | 高电平 | 上升沿 |
我在调试STM32与Flash存储器通信时,曾因模式配置错误导致写入数据异常。后来通过逻辑分析仪捕获波形,发现器件手册标注的模式3实际需要配置为模式1才能正常工作——这就是为什么实测比文档更可靠。
2.2 时钟频率与分频系数
SPI时钟频率直接影响
