gpt4 book ai didi

stm32 - I2C 从机 - 时钟拉伸(stretch)

转载 作者:行者123 更新时间:2023-12-02 09:19:58 25 4
gpt4 key购买 nike

你们知道如何启用 I2C 从设备的时钟拉伸(stretch)吗?

将这个函数I2C_StretchClockCmd(I2C2, ENABLE)放在I2C的初始化中就足够了吗?

时钟拉伸(stretch)到底是如何工作的?

最佳答案

对我来说,是的,这就足够了。这是背景:

时钟生成

SCL 时钟始终由 I2C 主设备生成。该规范要求时钟信号的低相位和高相位的最小周期。因此,实际时钟速率可能低于标称时钟速率,例如在 I2C 总线中,由于高电容,上升时间较长。

时钟拉伸(stretch)

I2C 设备可以通过延长 SCL 来减慢通信速度:在 SCL 低电平阶段,总线上的任何 I2C 设备都可以另外压低 SCL 以防止其再次升高,从而使它们能够减慢 SCL 时钟速率或停止I2C通信一段时间。这也称为时钟同步。

注意:I2C 规范没有指定时钟延长的任何超时条件,即任何设备都可以根据需要按住 SCL。

在 I2C 通信中,主设备决定时钟速度。与 RS232 不同,I2C 总线提供显式时钟信号,使主设备和从设备无需精确同步到预定义的波特率。

但是,在某些情况下,I2C 从机无法与主机给出的时钟速度配合,需要稍微放慢速度。这是通过一种称为时钟拉伸(stretch)的机制来完成的。

如果 I2C 从机需要降低总线速度,则允许其抑制时钟。另一方面,主机需要在将时钟信号释放到高电平状态后读回时钟信号,并等待该线实际上变高。

I2C 时钟速度如何影响 I2C 从机引入的时钟拉伸(stretch)持续时间?

时钟拉伸(stretch)是一种现象,即 I2C 从机在每个 I2C 数据传输的第 9 个时钟(在 ACK 阶段之前)将 SCL 线拉低。当 CPU 处理 I2C 中断以评估地址或处理从主设备接收的数据或在主设备从从设备读取数据时准备下一个数据时,时钟被拉低。

时钟拉低的时间取决于 CPU 处理中断所需的时间,因此取决于 CPU 速度而不是 I2C 时钟速度。

关于stm32 - I2C 从机 - 时钟拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862372/

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