主题中讨论的其他器件:TCA9555、 C2000WARE
我已经为 TMS320F2837xS 系列控制器开发了一个用于多从系统的 I2C 通信驱动程序、我正在对用于28377S 的 LaunchPadXL 进行单元测试。
我遇到了一个用作从器件的评估模块(IO_EXPANDER_EVM、重新组装了 TCA9555)的硬件问题、即使正确解决、TCA9555也不会 ACK。 这是一个硬件设置问题、因为我重新组装了另一个 EVM、其中 TCA9555具有相同的地址引脚配置、工作正常。
我能够检测这些 nack、因为我一直在使用协议分析器来监控 I2C 总线事务。 (在 Addr 列中附加了带有“*”的 snip,表示 nacks)。
我在驱动程序中包含了一个标志、用于指示是否根据 I2C 状态寄存器(I2CSTR)接收到 NACK。 但是、NACK 位似乎永远不会被置位。 我认为在轮询 NACK 位时缺少一些东西。 2837xS 控制器始终是主控制器、并在非重复模式下使用。
我的读取和写入事务中断源是 ACCESS_READY 和 STOP_Condition 检测到的。 我检查中断服务例程中的 NACK 位
每当发出停止条件时、状态寄存器中的 NACK 位是否都会被清除?
我是否必须显式启用 NACK 中断才能检测 NACK? 如果我这么做、正常读取结束时预期的 NACK (由主控制器生成)是否也会生成一个中断、我必须在 ISR 中对此进行说明?
