Возможно, наиболее эффективный способ увеличения свободного пространства на плате и повышения плотности размещения компонентов – это минимизация количества проводников на печатной плате. Широко используемой архитектурой, делающей такую миниатюризацию возможной, является шина I2C. Эта шина, состоящая только из двунаправленной лини данных SDA и линии передачи тактовых сигналов SCL, не требует выборки микросхемы или иных дополнительных подключений. Микроконтроллеры NXP, Microchip и других производителей содержат интерфейсы I2C, но реализовать интерфейс также можно программно. Для выполнения этой задачи каждому ведущему или ведомому приемопередатчику присваивается 7-битный адрес, и на заводе-изготовителе или с помощью специальных выводов программируется устройство с двумя или четырьмя вариантами адресов. Количество устройств, имеющих интерфейс I2C, увеличивается, но некоторые из их 128 адресов зарезервированы для специальных функций, поэтому не все адреса доступны разработчику. К тому же, в каком-то приложении два или более устройств могут иметь один и тот же адрес. На Рисунке 1 аналоговый коммутатор IC1, управляемый по шине I2C, подключает дополнительные ветви, содержащие устройства с одинаковыми адресами, к главной шине I2C. IC2 и IC3, например, имеют одинаковые адреса, но расположены на разных дополнительных шинах.
Рисунок 1. | Этот аналоговый коммутатор, управляемый по линиям интерфейса I2C, втрое увеличивает количество устройств, подключенных к шине. |
Схема на Рисунке 1 предотвращает одновременное обращение ведущего к нескольким ведомым. При возникновении такой ситуации данные повреждаются во время их чтения ведущим, а все ведомые устройства могут не принять данные от ведущего. Аналоговый коммутатор принимает двунаправленные сигналы, необходимые для линии SDA. Коммутатор имеет низкое сопротивление в открытом состоянии, почти не создает утечек в линиях и предоставляет четыре ведомых адреса. Коммутаторы управляются одновременно с помощью простого протокола отправки байтов (адрес плюс 8-битная команда). Три вспомогательные шины можно переключать «на лету». Включение питания переводит переключатели в мягкий режим – в выключенное состояние с временем переключения 12 мс. Затем байт команды 11000000 устанавливает коммутаторы в жесткий режим (время переключения 400 нс). Последующие команды выбирают нужную дополнительную шину. Например, команда 1000011 выбирает дополнительную шину #1. Основная шина I2C имеет стандартные подтягивающие резисторы, а на дополнительных шинах используются более высокоомные резисторы подтяжки, обеспечивающие состояние высокого импеданса при невыбранной шине. Схема на Рисунке 1 позволяет добавить на шину в три раза больше устройств. Для еще большего увеличения количества подключаемых устройств можно заменить MAX4562 на MAX4572, 14 переключателей которого позволяют добавить до семи дополнительных шин.