泡澡青蛙_ 2024-01-02 00:28 采纳率: 0%
浏览 66

求解I2C中为什么接收应答和接受数据要拉高SDA置1

img

img

个人理解:发送数据,主机向从机发送数据后从机应答,可是这里要拉高SDA为1那么主机控制权就给到从机,从机发送应答,此时控制权是从机,主机就发送不了数据给从机了?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-02 02:02
    关注

    【相关推荐】



    • 建议你看下这篇博客👉 :原子的模拟I2C配置有疑问,SDA_IN的时候,为什么还能IIC_SDA=1,也就是配置为输入的时候还能输出?
    • 除此之外, 这篇博客: I2C协议简单总结中的 当存在多个主机同时请求总线控制怎么办?—仲裁,谁先拉低SDA谁掌握总线控制权 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      各个主控制器没有对总线实施控制的优先级别,都是由仲裁决定的。**总线控制随即而定且逐位进行,他们 遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。**在每一位的仲裁期间,当 SCL 为高时,每个主机都检查自己的 SDA 电平是否和自己发送的相同。理论上讲,如果两个主机所传输的内容 完全相同,那么他们能够成功传输而不出现错误。如果一个主机发送高电平但检测到 SDA 电平为低,则认 为自己仲裁失败并关闭自己的 SDA 输出驱动,而另一个主机则继续完成自己的传输。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月2日