I2CMaster_WriteThenRead 函数

标头: #include <applibs/i2c.h>

在 I2C 主接口上执行合并的写入后读取操作。 操作显示为单个总线事务,步骤如下:

  1. 启动条件
  2. 重复启动条件
  3. 停止条件
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

参数

  • fd I2C 主接口的文件描述符。

  • address 此操作的目标 I2C 设备的 地址

  • writeData 要传输到目标设备的数据。

  • lenWriteData 要传输的数据的字节长度。

  • readData 从目标设备接收数据的输出缓冲区。 此缓冲区必须包含足够的空间才能接收 lenReadData 字节。

  • lenReadData 要接收的数据的字节长度。

错误

如果遇到错误并设置为 errno 错误值,则返回 -1。

  • EBUSY:接口繁忙或 I2C 线路处于低位。

  • ENXIO:操作未收到来自从属设备的 ACK。

  • ETIMEDOUT:操作在完成前超时;可以使用 I2CMaster_SetTimeout 函数调整超时持续时间。

还可以指定任何其他 errno 错误;此类错误不是确定性的,并且可能不会通过系统更新保留相同的行为。

返回值

返回成功写入和读取的总字节数,如果失败,则返回 -1,在这种情况下 errno ,将 设置为错误值。 部分结果(包括传输 0 个字节)被视为成功。

应用程序清单要求

若要访问 I2c 接口,应用程序必须在 应用程序清单的 I2cMaster 字段中标识它。