SPI 通信协议
1. SPI 简介
SPI (Serial Peripheral Interface,串行外设接口) 是一种高速、全双工、同步的串行通信总线。
主要应用于 EEPROM、Flash、RTC(实时时钟)、AD/DA 转换器、DSP、传感器、显示屏驱动等芯片 的数据传输。
特点:
接口简单,速度高(常见几十 MHz,部分可达上百 MHz)。
全双工通信(主机和从机可以同时收发数据)。
硬件资源占用少(一般只需 4 根线)。
主从结构:一个 主机(Master) 可控制一个或多个 从机(Slave)。
2. 四线 SPI 的信号线功能
SCLK(Serial Clock,串行时钟线)
由主机提供的时钟信号,用于同步数据传输。
MOSI(Master Out Slave In,主出从入)
主机的数据输出,从机的数据输入。
MISO(Master In Slave Out,主入从出)
主机的数据输入,从机的数据输出。
CS/SS(Chip Select / Slave Select,片选信号)
低电平有效,用于选择要通信的从机。
一般一个从机对应一根 CS 线。
特殊情况:
若只使用 MOSI 或 MISO,可以实现单工通信。
若多个从机共享同一 SPI 总线,主机通过不同的 CS 线选择对应的从机。
3. SPI 时钟特性
SPI 的数据传输依赖于 时钟极性(CPOL) 和 时钟相位(CPHA) 两个参数。
(1) 时钟极性(CPOL)
定义:决定 时钟空闲状态 的电平。
CPOL = 0 → 空闲时 SCLK 为 低电平。
CPOL = 1 → 空闲时 SCLK 为 高电平。
(2) 时钟相位(CPHA)
定义:决定在时钟的 哪个边沿采样数据。
CPHA = 0 → 在 第一个跳变沿(从空闲态到相反态的那个沿)采样数据。
CPHA = 1 → 在 第二个跳变沿 采样数据。
4. SPI 的四种模式
由于 CPOL 和 CPHA 各有两种取值 (0 或 1),因此 SPI 一共有 4 种工作模式:
模式 | CPOL | CPHA | 时钟空闲电平 | 采样时刻 |
---|---|---|---|---|
模式 0 | 0 | 0 | 低电平 | 上升沿采样 |
模式 1 | 0 | 1 | 低电平 | 下降沿采样 |
模式 2 | 1 | 0 | 高电平 | 下降沿采样 |
模式 3 | 1 | 1 | 高电平 | 上升沿采样 |
5. SPI 优缺点总结
优点:
通信速度高,远快于 I²C。
全双工传输。
硬件电路简单,易于实现。
缺点:
片选线随从机数量增加而增多(N 个从机需要 N 根 CS 线)。
无硬件应答机制,不像 I²C 有 ACK/NACK。
传输距离一般较短,适合板内高速通信。