Что нужно для соединения двух микроконтроллеров по интерфейсу I2C с точки зрения схемотехники
Что проверяют
Для тестировщика железа это проверка, понимаете ли вы физику шины, которую потом придётся диагностировать. По ответу видно, сможете ли вы отделить дефект прошивки от дефекта платы, когда устройство «иногда не отвечает».
Как отвечать
Минимум для связи двух контроллеров:
- две линии и общая земля:
SDAиSCLсоединяются напрямую, земли обязательно объединяются. Без общей земли уровни не определены, и шина работает как получится; - подтягивающие резисторы к питанию: выводы устройств с открытым стоком, они умеют только притягивать линию к нулю, единицу создаёт подтяжка. Резисторы ставятся один раз на шину, а не на каждое устройство, номинал в единицах килоом и подбирается под ёмкость линии и частоту;
- согласование уровней, если контроллеры питаются от разного напряжения. Это главный пункт: при 3,3 и 5 вольт нужен двунаправленный преобразователь, обычно на полевом транзисторе, иначе вход младшего устройства получает лишнее;
- адресация и роли: у ведомого свой адрес, часть адресов зарезервирована, и оба устройства должны поддерживать нужную роль аппаратно. Ведомый режим есть не у каждого контроллера, это проверяют по документации.
Для тестировщика добавьте, чем проверяете: логический анализатор или осциллограф на линиях, форма фронтов, наличие подтверждения от ведомого, зависание шины, когда ведомый держит линию данных прижатой.
Где спотыкаются
Считают шину чисто программной и ищут причину только в прошивке. Отсутствие подтяжки, слишком слабая или слишком сильная подтяжка и длинные провода дают ровно ту же картину «данные иногда бьются».
Соединяют напрямую устройства с разным питанием. Работать может долго, а потом вход выгорает или уровень единицы перестаёт распознаваться при нагреве.
Называют длину провода в метрах как жёсткое ограничение. Шина ограничена суммарной ёмкостью линии, поэтому решают и длина, и число устройств, и номинал подтяжки, и частота: на низкой скорости проходит длинный провод, на высокой не работает и короткий.