标准SPI协议应用笔记:四种模式区分(CPOL/CPHA)
前言
标准的四线SPI包括CS、MISO、MOSI、CLK四根线,同时根据时钟线的相位和极性可以分为四种模式
CPOL
代表时钟的极性Polarity,即时钟线有效时(active)和无效时(inacitve)的电平。一般规定:
CPOL=0时,为初始电平(无效电平)为低电平,有效电平为高电平;
CPOL=1时,为初始电平(无效电平)为高电平,有效电平为低电平。
CPHA
代表时钟的相位Phase,即时钟线采样时是上升沿(Leading Edge)还是下降沿(Trailing Edge)。一般规定:
CPHA=0时,数据位被采样(sampled)时的边沿为第一个边沿,被改变(launched)时为第二个边沿。
CPHA=1时,数据位被采样(sampled)时的边沿为第二个边沿,被改变(launched)时为第一个边沿。
关于相关被采样和被改变时的边沿信号到底时上升沿还是下降沿,要结合CPOL来一起看
模式区别
下面以两张时序图为例,假设数据以MSB方式传输,每次传输8bit。下图中红色竖线代表数据被采样(sampled)时的位置,蓝色表示被改变(launched)时的位置。
上图为当以CPHA=0时,即以第一个跳变沿为采样点时,不同CPOL的区别。
可以看到当CPOL为0时:CLK初始电平为低电平,当出现第一个跳变沿时,数据线的信号被采样,该跳变沿为上升沿;采样结束后,CLK线开始出现第二个跳变沿,这时候数据线的信号允许被改变,该跳变沿为下降沿。
同理可看到CPOL为1时:CLK初始电平为高电平,当出现第一个跳变沿时,数据线的信号被采样,该跳变沿为下降沿;采样结束后,CLK线开始出现第二个跳变沿,这时候数据线的信号允许被改变,该跳变沿为上升沿。
上图为当以CPHA=1时,即以第二个跳变沿为采样点时,不同CPOL的区别。
可以看到当CPOL为0时:CLK初始电平为低电平,当出现第一个跳变沿时,这时候数据线的信号允许被改变,该跳变沿为上升沿;采样结束后,CLK线开始出现第二个跳变沿,数据线的信号被采样,该跳变沿为下降沿。
同理可看到CPOL为1时:CLK初始电平为高电平,当出现第一个跳变沿时,这时候数据线的信号允许被改变,该跳变沿为下降沿;采样结束后,CLK线开始出现第二个跳变沿,数据线的信号被采样,该跳变沿为上升沿。
总结
可以看到,所谓不同模式的区别只是被采样的时机和CLK初始电平的不同而已,不同芯片的模式顺序可能略有不同,但本质都一致的,用户在进行通信接口对接是要确认后SPI的模式匹配。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!