【问题标题】:why is clock stretching required in I2C为什么在 I2C 中需要时钟拉伸
【发布时间】:2017-10-21 03:55:48
【问题描述】:

时钟延长用于在 I2C 中减慢主设备。如果从设备是基于 I2C 的,则意味着它可以按照标准工作在 100KHZ。

我的困惑是,当主从时钟已经是 100KHz 时,需要什么时钟拉伸?

请为此提供一个示例..

【问题讨论】:

    标签: embedded i2c


    【解决方案1】:

    时钟延长的需要,因为从站可能无法从主站接收数据,或者从站需要额外的时间来处理接收到的数据。

    许多从设备是没有良好缓冲系统的低成本设备,需要长时间读取慢速内存并使用时钟延长来防止溢出。

    它是一种廉价的速度控制系统(与更复杂的异步连接相比),安全且简单。

    这也是一些低成本设备 CPU 在处理繁忙任务时无法在 I2C 上工作,例如传感器可能需要中断并将时钟线保持为低电平,在传感器内部工作完成后,传感器将变为高电平并发送正常速度下的数据。

    参考:http://cache.freescale.com/files/sensors/doc/app_note/AN4481.pdf P.12

    【讨论】:

    • 优秀的参考..你能帮我解决从如何将SCL拉低的困惑吗,因为GPIO是在从机中输入的..
    • 由于SCL通过上拉电阻连接到GPIO,设置GPIO为高电平使SCL为低电平,Master会检测到SCL线为低电平并挂起等待。
    • 你的意思是把GPIO设置为低
    • 将 GPIO 设置为高电平,将 SCL 设置为低电平(接地)
    • @md.jamal 漏极开路输出上拉电阻一起使用,而不是代替它们。使用开漏输出“代替”的是“推挽”输出或各种其他术语,表明它们在低和高方向上都有效驱动,而不仅仅是像开漏输出那样低。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多