Я пытаюсь связаться с барометрическим сенсором MS5611, используя протокол I2C. Мое микро - это обнаружение STM32f3. Адрес датчика отправляется, но не команда. Код застревает в цикле while, ожидающем установки бита TXIE. Причина, по которой TXIE не является «одной», заключается в том, что бит подтверждения от MS5611 не отображается. Также в регистре состояния I2C устанавливается бит NACK (не подтвержден), бит STOPF (стоп-флаг).Сообщение I2C не дает мне бит ACK
Адрес датчика MS5611 - 11101100. Это можно увидеть в техническом описании на странице 12. В моем случае значение CSB равно нулю.
Но O-Scope показывает мне другую картину. Я попробовал это в обоих направлениях, но CSB-ноль в CSB один, но без успеха.
CSB нулю: O-scope picture 1
CSB один: где-то в моих комментариях :)
... Я не могу вставить картинку или ссылку, потому что у меня нет достаточного количества очков репутации: -/
Я так думал: Может быть, мое время отключено. Причина, по которой я думаю, связана с условием остановки, которое находится на 9-м SCL-пульсе. В этом месте бит ACK должен начинаться, а не бит STOP.
Итак, почему 9-й импульс высок? и кто дает 9-й импульс, микро или датчик?
номер издания уно: До сих пор, я попытался отправить команду чтения, с обеих комбинаций (11101101 или 11101111), изменены на другие устройства I2C. Этот контроллер имеет два модуля I2C (I2C1 и I2C2), изменил контакты (от PB6, PB7 до PA9 и PA10). Без успеха.
С другой стороны, я обратился к датчику acellometer mems на борту с теми же контактами (PB6, PB7) и тем же кодом. Единственным отличием были временные значения в регистре синхронизации I2C и адрес. Работал как шарм.
Мой вывод, очевидно, в том, что что-то не так с моими значениями времени или с протоколом I2C датчика. Однако я использовал пример настроек синхронизации в справочном руководстве по ST.
Итак, у меня нет другой альтернативы для перехода в режим отладчика и более глубокого изучения значений времени I2C.
Я был бы признателен за любую дополнительную информацию, и спасибо за помощь :)
Какое напряжение находится на выводе CSB? –
Что касается чтения с устройства, подтвердит ли он в этом случае? Попробуйте с помощью 11101101 или 11101111. –