您好!
我最近一直在为公司的一款产品研发 I2C 驱动器接口。 控制固件构建在 MSP430FR5969之上、并利用为 I2C 配置的 eUSCI B0。
我在设计高速非阻塞 ISR 状态机方面投入了大量精力、到目前为止、它在大约500kHz 之前完全稳定。
固件仅针对主器件进行配置、硬件配置已由我们的电气工程团队进行验证。
当前的问题是、无论如何配置第一个字节事务、我都能看到相同的接收行为。 如果我将 UCTXSTT 置为有效并对 UCRX0IFG 做出反应、那么我知道这是预期的。 如果我同时使能这两个引脚(UCTXSTT | UCTXSTP)、即使在启用 I2C 线路或中断之前、我也总是在从器件 ACK 后接收一个字节。 用户指南提到只有在 UCTXSTT 未被置位时、才会在 ACK 之后接收到从器件数据;我的问题是、为什么我仍然在另一个字节中计时? 我们的设备对零字节读取*和*写入的反应不同。 如何使用 eUSCI 模块实现完全非阻塞的零字节读取?
此外、是否有关于使用 eUSCI 的非阻塞 I2C 的更详细的参考? 我能够找到的 TI 示例受到严格限制、缺乏边沿大小写和错误条件逻辑。 FSM 图将令人难以置信!
