大家好、
您好!
访问 I2C 似乎控制器正忙。 I2CMCS 被触发忙的原因是什么?
寄存器中是否有任何可以更改的内容?
期待您的回应。 提前感谢您。
此致、
Jonathan
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.
大家好、
您好!
访问 I2C 似乎控制器正忙。 I2CMCS 被触发忙的原因是什么?
寄存器中是否有任何可以更改的内容?
期待您的回应。 提前感谢您。
此致、
Jonathan
您好、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/