gpt4 book ai didi

microcontroller - I2C 占空比意义

转载 作者:行者123 更新时间:2023-12-02 01:35:41 29 4
gpt4 key购买 nike

在i2c协议(protocol)中改变占空比有什么意义?大多数高级微 Controller 都具备该功能。

最佳答案

占空比很重要,因为不同的 I²C 模式的占空比略有不同。

查看 I²C 规范 v5 表 10,第 12 页。 48.

     Mode     | t_HIGH | t_LOW | ratio
--------------+--------+-------+-------
Standard-mode | 4.00u | 4.7u | 0.85
Fast-mode | 0.60u | 1.3u | 0.46
Fast-mode Plus| 0.26u | 0.5u | 0.52

为了符合 I²C 规范,您的 Controller 需要确定一个比率。

例如,如果 Controller 使用标准模式时序比,这将阻止您以最大时钟频率实现快速模式时序。

这些是标准中为最小 t_HIGH:t_LOW 定义的比率。但是,请注意 100 kHz 周期为 10 us,但表中的 t_HIGH + t_LOW 小于 10 us。因此,只要满足 t_HIGH 和 t_LOW 最小时序,实际值的比率就可以变化。

这些比率的要点是说明 I²C 时序约束在 I²C 模式之间是不同的。它们不是 Controller 需要保留的强制性比率。

例如,4 us high,6 us low 将是 0.67 比率,但仍会满足标准模式时序。

STM32F4 示例:

STM32F4xx 系列仅支持 100 kHz 和 400 kHz 通信速度(RM0090,修订版 5,第 818 页,第 27.2 节)。

我不知道您的比例从何而来,但引用手册指出(RM0090,修订版 5,第 849 页,第 27.6.8 节)标准模式的比例为 1:1,而标准模式为 1:2 或 9:快速模式的比率为 16。

因此,例如,要实现 100 kHz 的最高标准模式时钟频率,t_HIGH 和 t_LOW 需要编程为 5 us,因为比率为 1:1。

对于快速模式,例如 1:2 的比率,您需要将 t_HIGH 编程为 3.33 us,将 t_LOW 编程为 6.66 us,以达到 100 kHz。然而,这不符合标准模式的时序要求。

因此,您不能使用为快速模式编程的 STM32F4,同时将标准模式时序保持在最高标准模式频率。

反之亦然:您不能使用标准模式并编程 400 kHz 快速模式,因为默认的 1:1 比率超出 2.5 us 的规范,因为 t_LOW 将是 1.25 us < 1.3 us。

关于microcontroller - I2C 占空比意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31384447/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com