i2c_master_write_read_device() function
Perform a write followed by a read to a device on the I2C bus. A repeated start signal is used between the `write` and `read`, thus, the bus is not released until the two transactions are finished. This function is a wrapper to `i2c_master_start()`, `i2c_master_write()`, `i2c_master_read()`, etc... It shall only be called in I2C master mode.
Arguments
i2c_num
I2C port number to perform the transfer on
device_address
I2C device's 7-bit address
write_buffer
Bytes to send on the bus
write_size
Size, in bytes, of the write buffer
read_buffer
Buffer to store the bytes received on the bus
read_size
Size, in bytes, of the read buffer
ticks_to_wait
Maximum ticks to wait before issuing a timeout.
Return value
- ESP_OK Success - ESP_ERR_INVALID_ARG Parameter error - ESP_FAIL Sending command error, slave hasn't ACK the transfer. - ESP_ERR_INVALID_STATE I2C driver not installed or not in master mode. - ESP_ERR_TIMEOUT Operation timeout because the bus is busy.
i2c_master_write_read_device() calls 9 functions:
![]()
i2c_master_write_read_device()
i2c_master_write_read_device() reads 3 variables:
![]()
i2c_master_write_read_device()