Работа с I2c в проекте (обновлено: 01 Apr 2021, 12:46:27)


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

Максимальная длина линии по стандарту - до 2 метров. При выборе подходящего кабеля и подбора подтяжек длина линии может быть больше, но это не гарантирует стабильную работу.

Схема подключения

SCL - линия синхронизации. Работает всегда в режиме выхода.

SDA - линия данных. Работает в режиме входа и выхода.

На каждую линию требуется обязательная установка резисторов подтяжки - по стандарту 4.7кОм к +3.3в линии питания.

Обратите внимание, что резисторы должны стоять в одном экземпляре ! На готовых китайских платах-модулях датчиков резисторы могут быть уже установлены.

На подключаемое устройство необходимо подать питание 5 или 3.3в в зависимости от требований. Не забываем подключить общую землю (GND).

Настройка опции

На вкладке Hardware требуется указать свободные GPIO для подключения линии. После перенастройки GPIO рекомендуется перезагрузить устройство.

Ограничения для ESP8266: нельзя использовать GPIO 15 и 16 для данной линии.

Ограничения для ESP32: нельзя использовать GPIO 12 и выше 33.

Ограничения для ESP32S2: нельзя использовать GPIO 45.

Информация выше требует уточнения.

Нумерация GPIO используется оригинальная, если плата ESP8266 имеет нумерацию "левую" вида D1..D9... То смотрим корректную распиновку в документации на GPIO.

Проверка работоспособности шины и подключенных устройств

При верно подключенном и исправном устройстве I2C сканер (опция в конструкторе) будет находить адреса подключенных устройств, некоторые найденные адреса будет определять(прошивки новее 4.03.21). Некоторые устройства, например AM2321, сканер не видит(видит только при многократном обновлении страницы сканера).

При неверном подключении устройств будет выведена ошибка линии(прошивки новее 4.03.21) или выдаст большой список адресов(старые прошивки). Ошибка означает, что линия SDA наглухо притянута к GND и не меняет состояние при сканировании устройств - чаще всего это означает, что подключенные и выбранные GPIO линии не совпадают.

У некоторых опций имеется возможность менять адрес в шестеренке. У большинства датчиков/устройств есть возможность поменять адрес перемычками. Адреса устройств не должны быть одинаковые. Текущие требуемые i2c адреса отображаются у установленных опций на вкладке Hardware.