前言

标准的四线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的模式匹配。

原文地址:http://www.cnblogs.com/simpleGao/p/16821244.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性