什么是SPI?
SPI(Serial Peripheral Interface)是一种串行外设接口协议,用于在微控制器(MCU)或微处理器之间进行通信。SPI协议通常用于连接主设备(通常是微控制器)与外部从设备(如传感器、存储器芯片、显示器等)之间,以传输数据和控制信息。
SPI时钟极性(CPOL)
SPI时钟极性指的是当没有数据传输时,时钟信号SCK处于哪种电平状态。时钟极性有两种:
- CPOL = 0(极性低)
- 当没有数据传输时,SCK信号保持低电平。
- 在数据传输期间,SCK信号会在每个比特时间内从低变到高,再从高回到低。
- CPOL = 1(极性高)
- 当没有数据传输时,SCK信号保持高电平。
- 在数据传输期间,SCK信号会从高电平跳变到低电平,再从低电平跳变回高电平。
SPI时钟相位(CPHA)
SPI时钟相位定义了数据采样的时刻,即是在时钟的上升沿还是下降沿进行采样。时钟相位也有两种情况:
- CPHA = 0
- 数据在时钟的第一个边沿(通常是上升沿)被采样。
- 在第一个边沿之后,数据线上的电平代表有效数据。
- CPHA = 1
- 数据在时钟的第二个边沿(通常是下降沿)被采样。
- 在第一个边沿之后,数据线上的电平可能会改变,直到第二个边沿数据才是有效的。
SPI工作模式
根据时钟极性和时钟相位的不同组合,SPI可以有四种基本的工作模式:
- CPOL = 0, CPHA = 0
- SCK信号在空闲时为低电平,数据在上升沿被采样。
- CPOL = 0, CPHA = 1
- SCK信号在空闲时为低电平,数据在下降沿被采样。
- CPOL = 1, CPHA = 0
- SCK信号在空闲时为高电平,数据在下降沿被采样。
- CPOL = 1, CPHA = 1
- SCK信号在空闲时为高电平,数据在上升沿被采样。
注意事项
为了确保SPI主机与SPI从机之间的正确通信,时钟极性和时钟相位的设置必须匹配。如果不一致,可能导致数据传输错误或无法通信