Compartir a través de


Función I2CMaster_Read

Encabezado: #include <applibs/i2c.h>

Realiza una operación de lectura en una interfaz maestra I2C. Esta función proporciona la misma funcionalidad que la función de lectura POSIX(2), excepto que especifica la dirección del dispositivo I2C subordinado que es el destino de la operación.

ssize_t I2CMaster_Read(int fd, I2C_DeviceAddress address, uint8_t *buffer, size_t maxLength);

Parámetros

  • fd Descriptor de archivo para la interfaz maestra I2C.

  • address La dirección del dispositivo I2C subordinado que es el origen de la operación de lectura.

  • buffer El búfer de salida que recibe datos del dispositivo subordinado. Este búfer debe contener suficiente espacio para recibir maxLength bytes. Esto puede ser NULL si maxLength es 0.

  • maxLength El número máximo de bytes que se recibirán. El valor puede ser 0.

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 de reloj I2C (SCL) 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 de bytes leídos correctamente; o -1 en caso de error, en cuyo caso errno se establecerá en el valor de error. Una operación de lectura parcial, incluida una lectura de 0 bytes, se considera correcta.

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.