Именно. Решил вопрос с CH32V006, ведомым, посадив в главный цикл
"надзирателя" - который по системному таймеру проверяет по таймеру,
ОК обмен или нет. И если не ОК, то сначала вырубает слейва совсем,
берёт GPIO под своё управление. И, сначала, убеждается, что уровни
высокие на обоих линиях шины, и лишь затем включает модуль. Кроме того, после включения модуля, ждёт интервал минимального стоп-сигнала и перепроверяет, что сам модуль I2C - не BUSY (если BUSY - значит, зависли фильтры на входах или неудчно попал на передачу мастера). Начинаю снова.
И лишь затем, как модуль сказал "ОК, свободно", пускаю его в ожидание адреса. Так - работает. И если ковырять гвоздиком шину - восстанавливается.
Ещё, пришлось улучшить ЭМС. Радиостанция 2Вт 433МГц подвешивала то мастер, то слейва, то обоих. Пока не сделал массу между узлами I2C более надёжной.