Cканер шины I2C

Программное исследование адреса устройства, подключенного к микроконтроллеру Arduino по шине I²C.

I²C (IIC, англ. Inter-Integrated Circuit) — последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. Использует две двунаправленные линии связи (SDA и SCL), применяется для соединения низкоскоростных периферийных компонентов с процессорами и микроконтроллерами.

Понадобится только Arduino Uno и  устройство, у которого необходимо узнать адрес. Далее через монитор последовательного порта можно увидеть информацию о подключенных устройствах по I2C шине.

На плате Arduino Uno для шины I²C выделены выводы A4 — SDA и A5 — SCL.

Скетч сканера для загрузки в плату Arduino Uno.

 

Для примера определим адрес модуля RTC DS3231. Собираем схему, загружаем скетч и смотрим результат.

 

Определение адреса RTC DS3231 сканером шины I2C
Схема подключения для определение адреса RTC DS3231

 

В принципе, это не только схема подключения для сканера — по этой схеме подключают модуль часов DS3231 для работы в проектах на Arduino.

 

Скетч Arduino IDE, загруженный в плату
Скетч сканера, загруженный в плату Arduino Uno

 

Результат работы сканера, отображенный в Мониторе порта (вызывается нажатием клавишам Ctrl+Shift+M или из меню Инструменты среды программирования Arduino IDE).

 

Адрес RTC DS3231
Результат работы сканера шины I2C

 

Сканер нашёл два устройства на шине I²C — с адресами 0x57 и 0x68. Так как на модуле присутствуют два физических устройства, каждый из них имеет свой уникальный адрес.

  • часы DS3231 — адрес 0x68
  • память Atmel AT24C32 — адрес 0x57