Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Электроника и программирование


Работаем с шиной I2C (SMBus)

Шина I2C представляет собой последовательную шину данных для связи внутренних компонентов устройств. Разработана фирмой Phillips в 1980-х годах.

Шина SMBus основана на шине I2C и широко применяется в современных компьютерах. Основное отличие от оригинальной I2C – ограничение минимальной рабочей частоты за счет введения таймаутов операций передачи данных.

Шина I2C использует две двунаправленные линии передачи данных, которые подтянуты к напряжению питания и управляются схемой открытого коллектора или открытого стока.

SDA – последовательная линия данных;

SCL – последовательная линия тактирования.

Обе линии нагружены резисторами, стандартное напряжение на шине +5В или +3,3В. Однако, оно может быть и другим.

Адресация осуществляется в 7 или 10-битном адресном пространстве, на одну шину возможно подключение до 112 или 1008 устройств соответственно. Основной режим работы на скорости 100 кБит/с или в высокоскоростном режиме 400 кБит/с. Версия протокола 2.0, выпущенная в 1998 году предусматривает возможность работы на скоростях до 3,4 МБит/с.

Пример схемотехники

Пример схемотехники

Не буду рассматривать алгоритм работы шины, т.к. подобной информации очень много в сети, в том числе на русском языке. Предлагаю ознакомиться со статьей в русской Wiki.

Приведу пример библиотеки на языке C, реализующей программную работу по протоколу I2C. Код совершенно не привязан ни к каким конкретным микроконтроллерам (более, того, вообще к микроконтроллерам как таковым) и может быть использован где угодно. Достаточно откорректировать строки, осветственные за управление линиями SDA и SCL. Код снабжен комментариями.
Читать далее


В избранное