I2C

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

I2C1, I2C2, I2C3

Объекты из класса уже созданы и для начала работы с ними, достаточно выполнить метод I2Cn.setup, подставив вместо n — номер шины. К шине I2C1, если она выведена на отдельные контакты, вы можете обращаться как к PrimaryI2C.

Типовой сценарий использования таков:

// Настройка интерфейса
// (необязательна при использовании выделенных I2C)
I2C2.setup({sda: P0, scl: P1, bitrate: 400000});
// Передача пакета данных
I2C2.writeTo(0x28, [0xFF, 0x30]);
// Приём данных
var myTwoBytes = I2C2.readFrom(0x28, 2);

Реализация поддерживает только I²C в режиме ведущего устройства.

Методы

I2C.find(pin)

Статический метод возвращает экземпляр интерфейса I2C, который может работать с пином pin (например, I2C1).

Возвращает undefined, если на пине не поддерживается I²C.

I2C.readFrom(address, quantity)

Запрашивает quantity байт от ведомого устройства с адресом address. Посылает STOP-сигнал на шину I²C по завершению. Возвращает полученные данные в виде буфера Uint8Array.

Адрес устройства должен быть 7-битным числом или объектом вида {address: 12, stop: false}. В последнем случае в конце запроса не будет послан сигнал STOP.

I2C.setup(options)

Настраивает I²C-интерфейс на работу с заданными пинами и на заданной скорости.

В качестве options ожидается объект вида {sda: pin, scl: pin, bitrate: 100000}, где sda и scl — пины с соответствующими функциями, bitrate — скорость передачи.

Если sda или scl не заданы, в качестве значений используются пины по умолчанию для данного I²C-интерфейса.

Если не задан bitrate, используется значение по умолчанию 50000 (50 кГц). Обратите внимание: 400 кГц — максимум для большинства периферии.

Если options не передан вовсе, используются умолчания для всех значений.

Вызов I2C.setup необходим для правильной настройки режима работы пинов интерфейса. Однако для экземпляра PrimaryI2C вызов не обязателен: он настраивается автоматически при старте микроконтроллера.

I2C.writeTo(address, data, …)

Передаёт данные ведомому I²C-устройству с адресом address. Посылает STOP-сигнал на шину после завершения.

В качестве data, … ожидается один или более элемент для передачи. Элементами могут быть целые числа, строки, массивы.

Адрес устройства должен быть 7-битным числом или объектом вида {address: 12, stop: false}. В последнем случае в конце запроса не будет послан сигнал STOP.