我的I2C(SMBus)在这个uC中正常工作,并且有一个VB GUI,可以通过USB进行通信(使用USBXpress),并从uC到单独的IC进行I2C事务。问题是我每隔1秒就在IC上注册一个寄存器。当我进行异步GUI I2C事务时,每隔一段时间,我相信它与轮询I2C事务冲突,并且所有I2C数据都在GUI处移位(即,寄存器0x00的数据显示在寄存器0x01上)。 IC中的I2C数据看起来是正确的(通过使用LA监视I2C总线)。到底发生了什么,我该如何解决这个问题?
答案 0 :(得分:0)
如果uC和I2C之间的轮询是通过与GUI应用程序使用的相同的I2C总线进行的,那么您需要确保控制对I2C的访问,以便在允许另一个事务开始之前完成一个事务。也许你已经这样做但是这个问题并不清楚。
此外,发布uC代码的一些代码或伪代码可能会有所帮助。