Привет! Пытаюсь запустить в проекте 2 модуля I2C. I2C2 работает стабильно, но I2C1 не работает вообще. Код инициализации полностью одинаковый:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); i2c.I2C_ClockSpeed = 100000; i2c.I2C_Mode = I2C_Mode_I2C; i2c.I2C_DutyCycle = I2C_DutyCycle_2; i2c.I2C_OwnAddress1 = ADDRESS; i2c.I2C_Ack = I2C_Ack_Disable; i2c.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_Init(I2C1, &i2c);
ADDRESS определен дефайном.
В чем может быть тут дело?
Добрый день, много может быть вариантов...
Какие устройства подключаются к шинам? Есть ли отличия в схемотехнике? Верный ли адрес устройства для случая, когда не работает? Подтягивающие резисторы? Инициализация выводов gpio для i2c?
И еще надо посмотреть под отладчиком значения регистров I2C1->SR2 и I2C2->SR2.
Для I2C1 установлен бит BUSY. Надо проверить, что выводы GPIO для I2C конфигурируются до(!) включения тактирования I2C.
Если в этом нет проблемы, то тогда придется погружаться глубже, как писал @tech.
Для I2C1 установлен бит BUSY. Надо проверить, что выводы GPIO для I2C конфигурируются до(!) включения тактирования I2C.
Если в этом нет проблемы, то тогда придется погружаться глубже, как писал @tech.
Именно в этом и была ошибка! Огромная благодарность )