This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1231H6PM:I2CMCS 控制器忙

Guru**** 2528570 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/981547/tm4c1231h6pm-i2cmcs-controller-is-busy

器件型号:TM4C1231H6PM

大家好、

您好!  

访问 I2C 似乎控制器正忙。 I2CMCS 被触发忙的原因是什么?

寄存器中是否有任何可以更改的内容?  

期待您的回应。 提前感谢您。

此致、

Jonathan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Jonathan、

    根据开始和停止条件置位 BUSY 位、以指示器件何时处于发送或接收数据的过程中。 停止条件应该清除这个位。

    如果该位卡在忙状态、您能否通过示波器或逻辑分析仪查看 I2C 总线以查看是否发送了停止条件?

     I2CMCS 寄存器中是否设置了其他位?

    这是在中间操作还是在第一个数据包上发生?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    感谢您的回答。  

    请确认基于启动和停止条件的繁忙控制是否应为 I2C 总线繁忙而不是控制器繁忙?

    因此、如果该位看起来很忙、请在将总线设置为发送数据之前检查 I2CMCS 寄存器的状态、这会导致其他位无效、因此无法发送 START 位。

    应该注意的是、在发送数据之前检测到此位的状态。 根据调试结果、I2CMCS 寄存器的控制器忙在检测过程中会发生变化、并且始终处于忙状态。

    最后、根据电流测试情况、在没有上拉电阻器的情况下会发生这种现象。 我们的客户想知道是否有其他可能导致这种情况的情况。

    提前感谢。

    此致、

    Jonathan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Jonathan、

    控制器认为总线在 启动 和停止条件之间处于繁忙状态。  '在一个启动条件后、总线被认为是忙、而在一个停止条件后、总线被认为是空闲的。'

    这并不一定意味着 I2C 总线本身是繁忙的、但控制器在启动条件之后没有接收到有效的停止条件、因此它将总线视为繁忙。

    [引用用户="Jonathan Navor"]因此、如果该位看起来很忙、请在将总线设置为发送数据之前检查 I2CMCS 寄存器的状态、从而导致其他位无效、因此无法发送起始位。

    正确、因为控制器正在等待停止条件。

    [引用 USER="Jonathan Navor">最后、根据当前测试情况、这种现象将在没有上拉电阻器的情况下发生。 我们的客户想知道是否有其他可能导致这种情况的情况。

    没有上拉导致这种行为是有道理的。 我可以想到的另一种情况是从器件是否为时钟扩展。 请参阅以下有关时钟拉伸的说明: https://www.i2c-bus.org/i2c-primer/clock-generation-stretching-arbitration/