I2CMaster_WriteThenRead 函数
标头: #include <applibs/i2c.h>
在 I2C 主接口上执行合并的写入后读取操作。 操作显示为单个总线事务,步骤如下:
- 启动条件
- 写
- 重复启动条件
- 读
- 停止条件
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 字段中标识它。