+1 Нужно тайм-аут использовать. Я часто подключаю кучу внешних блоков по I2C через "умощнители" P82B715 к одному контроллеру. Гоню по I2C свой протокол с CRC. В случае возникновения ошибки делаю задержку в 1 мс и далее опять посылаю тот же пакет. Всё работает безукоризненно в даже условиях сильных помех (электрические шкафы с кучей пускателей и другой электрики).