Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Разработка драйверов и драйверные библиотеки > Драйверные библиотеки > Библиотека разработки I²C драйверов (libi2c-master) > DEVCTL-команды > DCMD_I2C_SENDRECV



DCMD_I2C_SENDRECV

Выполнить запись с последующим чтением из slave устройства

Прототип:

#include <hw/i2c.h>
#define DCMD_I2C_SENDRECV __DIOTF( _DCMD_I2C, 7, i2c_sendrecv_t )

Аргументы:

filedes
Дескриптор файла, полученный при открытии устройства.
dcmd
DCMD_I2C_SENDRECV.
dev_data_ptr
Указатель на структуру i2c_sendrecv_t.
n_bytes
Размер структуры i2c_sendrecv_t, полученный с помощью sizeof().
dev_info_ptr
NULL.

Библиотека:

libi2c-master

Описание:

Команда используется в сочетании с вызовом devctl(), а все перечисленные аргументы являются его типовыми параметрами. Команда выполняет передачу с последующим чтением из slave устройства. Эта последовательность обычно используется для чтения значения регистра ведомого устройства. Когда несколько приложений обращаются к одному и тому же ведомому устройству, необходимо выполнять эту последовательность атомарно, чтобы предотвратить прерывание чтения регистра. Хотя эта функциональность также обеспечивается DCMD_I2C_SEND и DCMD_I2C_RECV, ее реализация намного проще.

Исходящие данные:

i2c_sendrecv_t - заголовок сообщения (не изменяется);

uint8_t[] - полученные данные в буфере.

Входящие данные:

i2c_sendrecv_t - заголовок сообщения;

uint8_t[] - указатель на буфер, содержащий данные отправки и получения (Должен быть достаточно большим, чтобы вместить полученные данные).

Коды ошибок:

EIO
Не удалось выполнить чтение или запись. Причины: неверный адрес slave устройства, неверная скорость шины, шина занята.
EINVAL
Неправильный формат сообщения.
ENOMEM
Недостаточно памяти.
EPERM
Ведущий заблокирован другим соединением.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

devctl(), i2c_sendrecv_t




Предыдущий раздел: Библиотека разработки I²C драйверов