i2c на кремниевом изображении c8051f32x (с использованием USBXpress)
Я имею I2C (SMBus), работающий должным образом в этом uC, и имею графический интерфейс VB, который может связываться через USB (используя USBXpress) и делать транзакции I2C от uC до отдельной IC. Проблема в том, что я проводил опрос в регистре IC на IC каждые 1 с. Когда я выполняю асинхронную транзакцию I2C с графическим интерфейсом, время от времени я полагаю, что она сталкивается с транзакцией I2C опроса, и все данные I2C смещаются в GUI (т. Е. Данные регистра 0x00 отображаются в регистре 0x01) . Данные I2C в IC выглядят корректно (следя за шиной I2C с помощью LA). Что именно происходит и как я могу это исправить?
1 ответ
Если опрос между uC и I2C происходит по той же шине I2C, которая используется вашим приложением с графическим интерфейсом, вам необходимо убедиться, что доступ к I2C контролируется таким образом, что одна транзакция завершается до того, как разрешается начать другую. Может быть, вы уже делаете это, но это не ясно из вопроса.
Также может помочь размещение некоторого кода или псевдокода кода UC.