Compartir a través de


Función I2CMaster_WriteThenRead

Encabezado: #include <applibs/i2c.h>

Realiza una operación combinada de escritura y lectura en una interfaz maestra I2C. La operación aparece como una única transacción de bus con los siguientes pasos:

  1. condición de inicio
  2. Escribir
  3. condición de inicio repetida
  4. Leer
  5. condición de detención
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parámetros

  • fd Descriptor de archivo para la interfaz maestra I2C.

  • address La dirección del dispositivo I2C de destino para esta operación.

  • writeData Los datos que se transmitirán al dispositivo de destino.

  • lenWriteData La longitud del byte de los datos que se transmitirán.

  • readData El búfer de salida que recibe datos del dispositivo de destino. Este búfer debe contener suficiente espacio para recibir lenReadData bytes.

  • lenReadData La longitud del byte de los datos que se recibirán.

Errores

Devuelve -1 si se encuentra un error y se establece errno en el valor de error.

  • EBUSY: la interfaz está ocupada o la línea I2C se mantiene baja.

  • ENXIO: la operación no recibió un ACK del dispositivo subordinado.

  • ETIMEDOUT: se ha agotado el tiempo de finalización de la operación; puedes usar la función I2CMaster_SetTimeout para ajustar la duración del tiempo de espera.

También se pueden especificar otros errno errores; estos errores no son deterministas y es posible que no se conserve el mismo comportamiento a través de las actualizaciones del sistema.

Valor devuelto

Devuelve el número combinado de bytes escritos y leídos correctamente, o -1 para error, en cuyo caso errno se establece en el valor de error. Un resultado parcial, incluida una transferencia de 0 bytes, se considera un éxito.

Requisitos del manifiesto de la aplicación

Para acceder a una interfaz I2c, la aplicación debe identificarla en el campo I2cMaster del manifiesto de la aplicación.