ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
15 февраля
1570783 Топик полностью
AlexBi (Вчера, 22:53, просмотров: 184)
Столкнулся с проблемой использования встроенного I2C у Artery AT32F407 Мне нужно передать данные сперва по одному адресу, потом по другому. Работу веду по прерываниям. Первая порция передается нормально, а дальше начинаются проблемы. Генерить рестарт на шине модуль I2C не умеет, генерить стоп тоже проблема, вместо этого предлагается еще раз генерить старт. Я так и делаю, но после этого начинаются чудеса. Первый байт (адрес с битом направления передачи) передается, а дальше 

почему-то модуль I2C переходит в состояние приема по шине и не передает, а принимает, судя по сигналам на шине. Пробовал разные варианты, рабочего не нашел. Полный сброс модуля I2C перед началом передачи не помогает, т.к.в паузе линия SCL держится в нуле, за время сброса она физически не успевает перейти в единицу и стартовавший заново модуль считает шину занятой. Может кто-то уже сталкивался с такой проблемой и знает как ее решить?