Other Parts Discussed in Thread: MSPM0L1228
器件型号: MCF8316C-Q1
主题中讨论的其他器件: MSPM0L1228
我们与遇到 I2C 通信问题 MCF8316C 非常重要、希望提供任何指导。
测试设置
为了验证我们的 I2C 地址恢复策略、我们特意将主机 MCU 配置为使用不正确的默认 I2C 目标地址 (0x02) 启动通信。 预期的行为为:扫描→找到正确的器件地址→恢复正常运行。
观察到的行为(逐步)
- 系统初始化 –~105ms 功率稳定延迟正常完成。
- 地址错误的 I2C (0x02) –收到 NACK;重试 50 次后、会发出 COMM 错误并且状态机进入停止/恢复状态。 (预期)
- I2C 地址扫描 –在找到设备 0x01 ;错误已清除、状态转换为 init/batch-init。 (预期)
- 批初始化开始 –然而、在起始字节上接收到正 ACK 然后 SCL 被延展为低电平 发生超时。 通信错误升高、状态进入有
I2C_NO_RESPONSE原因的恢复状态。 (意外) - 已执行总线恢复 –执行 SCL 切换;总线恢复成功、状态重新进入 INIT。 (部分预期,但根本原因不清楚)
- 问题循环重复 –在下一次尝试时、在第 1 个起始字节上发送 NACK、然后在第二次尝试时发送正 ACK SCL 再次延展到低电平 →系统永远不会达到稳定的运行状态。
核心问题
在初始地址不匹配情况和后续地址扫描恢复之后、MCF8316C 似乎会输入 异常 I2C 状态 。 具体来说:
- 器件间歇性地确认启动条件
- 好了 保持 SCL 为低电平 防止进一步的 I2C 事务
- 标准总线恢复(SCL 切换)会暂时清除症状、但会在下一次通信尝试时再次执行
问题
- 在 I2C 地址不匹配或总线错误事件后、MCF8316C 是否会将 SCL 保持为低电平?
- MCF8316C 是否需要 A 完整下电上电(PWM 移除+重新应用) 才能在发生此类事件后完全复位其内部 I2C 状态机? 如果是、所需的最短 PWM 关断持续时间是多少?
- 除了标准 9 时钟脉冲总线恢复之外、是否有特定于 MCF8316C 的建议 I2C 复位或重新初始化序列?
- 初始 NACK 风暴 (50 次重试至错误的地址 0x02) 是否使 MCF8316C I2C 外设处于锁定状态、即使在 SCL 恢复后也持续存在?