0

我有 I2C (SMBus) 在这个 uC 中正常工作,并且有一个 VB GUI,它可以通过 USB(使用 USBXpress)进行通信,并从 uC 到单独的 IC 进行 I2C 事务。问题是我让 uC 每 1 秒轮询一次 IC 上的寄存器。当我执行异步 GUI I2C 事务时,每隔一段时间,我相信它会与轮询 I2C 事务发生冲突,并且所有 I2C 数据都会在 GUI 上移动(即,寄存器 0x​​00 的数据显示在寄存器 0x​​01 上)。IC 中的 I2C 数据看起来是正确的(通过使用 LA 监视 I2C 总线)。到底发生了什么,我该如何解决?

4

1 回答 1

0

如果 uC 和 I2C 之间的轮询发生在与您的 GUI 应用程序使用的 I2C 总线相同的 I2C 总线上,那么您需要确保对 I2C 的访问受到控制,以便一个事务在另一个事务被允许开始之前完成。也许您已经这样做了,但是从问题中并不清楚。

此外,发布一些代码或 uC 代码的伪代码可能会有所帮助。

于 2009-10-28T00:20:05.247 回答