ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
411628
amusin (22.05.2013 15:19, просмотров: 6615)
STM32 I2C. ST предлагает дождаться снятия флага BUSY перед следующей транзакцией. Опыт показывает, что при помехах (тырк-тырк пинцетом между GND и SCL/SDA) можно не дождаться. ST рекомендует сбрасывать клок I2C (через RCC) перед настройкой узла.  Итак. Перед каждой транзакцией реинициализирую I2C. Последнее прерывание на выдачу последнего байта, взвод флага (событие ОС). Приложение, дождавшись флага, реинициализирует I2C и передает новый пакет. Но делает оно это рановато, когда еще последний байт не вытолкнут полностью на шину. Решение в лоб - после получения флага вставить задержку - работает, но некрасиво, да и шина простаивает. Попробовал выталкивать на один байт больше, рубя его на середине стопом, но выяснилось, что такой стоп не нравится слейву (второй I2C в этом же МК) - он на него просто не реагирует. Вопрос: как выкручиваетесь?