ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
18 мая
1587495 Топик полностью
Nikolay_Po (Сегодня, 18:48, просмотров: 21) ответил LightElf на Вопрос к тем бедуинам, кто всяких этих мелких таракашек (x003 всякого пошиба) активно щупал и юзал. Есть ли среди них такие, в которых нормально и надежно работает I2C слейв? Возникла потребность запилить переходничок из "странного" в I2C, но памятуя о том что чуть менее чем везде и мастер-то нормально не работает, как-то стремновато...
Именно. Решил вопрос с CH32V006, ведомым, посадив в главный цикл "надзирателя" - который по системному таймеру проверяет по таймеру, ОК обмен или нет. И если не ОК, то сначала вырубает слейва совсем, берёт GPIO под своё управление. И, сначала, убеждается, что уровни высокие на обоих линиях шины, и лишь затем включает модуль. 

Кроме того, после включения модуля, ждёт интервал минимального стоп-сигнала и перепроверяет, что сам модуль I2C - не BUSY (если BUSY - значит, зависли фильтры на входах или неудчно попал на передачу мастера). Начинаю снова.

И лишь затем, как модуль сказал "ОК, свободно", пускаю его в ожидание адреса. Так - работает. И если ковырять гвоздиком шину - восстанавливается.

Ещё, пришлось улучшить ЭМС. Радиостанция 2Вт 433МГц подвешивала то мастер, то слейва, то обоих. Пока не сделал массу между узлами I2C более надёжной.