Бөлісу құралы:


Функция I2CMaster_WriteThenRead

Заголовок: #include <applibs/i2c.h>

Выполняет комбинированную операцию записи и последующего чтения в интерфейсе I2C master. Операция отображается как одна транзакция шины со следующими шагами:

  1. Условие запуска
  2. Написать
  3. повторяющееся условие запуска
  4. Прочитать
  5. условие остановки
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Параметры

  • fdДескриптор файла для интерфейса I2C master.

  • address Адрес целевого устройства I2C для этой операции.

  • writeData Данные для передачи на целевое устройство.

  • lenWriteData Длина байтов передаваемых данных.

  • readData Выходной буфер, получающий данные с целевого устройства. Этот буфер должен содержать достаточно места для получения lenReadData байтов.

  • lenReadData Длина байтов получаемых данных.

Ошибки

Возвращает значение -1 при обнаружении ошибки и задает errno значение ошибки.

  • EBUSY: интерфейс занят или линия I2C удерживается на низком уровне.

  • ENXIO: операция не получила ACK от подчиненного устройства.

  • ETIMEDOUT: время ожидания операции истекло до завершения; Для настройки времени ожидания можно использовать функцию I2CMaster_SetTimeout .

Можно также указать любой другой errno . Такие ошибки не являются детерминированными, и такое же поведение может не сохраняться при обновлении системы.

Возвращаемое значение

Возвращает объединенное число байтов, успешно записанных и прочитанных, или -1 для сбоя, в этом случае errno устанавливается значение ошибки. Частичный результат, включая передачу 0 байтов, считается успешным.

Требования к манифесту приложения

Чтобы получить доступ к интерфейсу I2c, приложение должно определить его в поле I2cMaster манифеста приложения.