工具与软件:
要从 UART 迁移到 I2C、需更改 EMDC 生成的代码、如下主题所述:
问题是、有时 I2C 主器件事务处理正常工作、而有时从器件发出 NAK。 可以在任何位置发生-在地址字节本身、或在主器件写入的中间、甚至在主器件读取阶段的任何位置发生。
下面的波形展示了 I2C 主设备成功执行命令0x04读取 HMI 状态机"模式"的读取事务的示例。

下面的波形显示了用于读取 HMI 状态的命令0x04的 I2C 主设备读取事务失败的示例。

当循环中发出相同的读取命令0x04时、I2C 从器件为15个读取/写入事务提供 NAK、然后为4个读取/写入事务提供 NAK。 并且只要主器件发出 I2C 命令、该模式就会一直持续。 此测试中未在 SD24接口上给出信号、这些接口配置为 EMDC 生成的代码以测量单相(一个电压通道、一条电流通道)。

上面波形中的双杠在下面的波形中显示了更多细节。

每个0x04写入命令都具有0x0A、0x55、0xAA、0x06、0x04 在主器件发送的 I2C 上为0x01、0x00、0x00、0x05、0x00。 对于读取、主器件发送0x0A (I2C 地址+读取)、后跟足够的 SCL 周期来从 I2C 从器件读取15个字节。
您能不能解释一下什么原因导致了由 I2C 总线上的 MSP430I2041 I2C 从器件生成的 NAK?
一些可能的可能性:
当 I2041忙于其它任务时、禁用 I2C (eUSCI-B)。 I2C/eUSCI 只是告诉主器件它不能被服务。
2. EMDC 代码中的严格循环需要太长的时间、并且在该繁忙时间内禁用 I2C。
3.中断配置不正确。
EMDC 输出几乎没有更改、只有更改如上文提到的另一个 E2E 主题中所述。 请查看您是否能提供任何见解。