i2cdev - I2C master thread-safe functions for communication with I2C slave¶
- group i2cdev
ESP-IDF I2C master thread-safe functions for communication with I2C slave.
Copyright (c) 2018 Ruslan V. Uss unclerus@gmail.com
MIT Licensed as described in the file LICENSE
Defines
-
I2CDEV_MAX_STRETCH_TIME¶
-
I2C_DEV_TAKE_MUTEX(dev)¶
-
I2C_DEV_GIVE_MUTEX(dev)¶
-
I2C_DEV_CHECK(dev, X)¶
-
I2C_DEV_CHECK_LOGE(dev, X, msg, ...)¶
Enums
Functions
-
esp_err_t i2cdev_init()¶
Init library.
The function must be called before any other functions of this library.
- Returns
ESP_OK on success
-
esp_err_t i2cdev_done()¶
Finish work with library.
Uninstall i2c drivers.
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_create_mutex(i2c_dev_t *dev)¶
Create mutex for device descriptor.
This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.
- Parameters
dev – Device descriptor
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_delete_mutex(i2c_dev_t *dev)¶
Delete mutex for device descriptor.
This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.
- Parameters
dev – Device descriptor
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_take_mutex(i2c_dev_t *dev)¶
Take device mutex.
This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.
- Parameters
dev – Device descriptor
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_give_mutex(i2c_dev_t *dev)¶
Give device mutex.
This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.
- Parameters
dev – Device descriptor
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_probe(const i2c_dev_t *dev, i2c_dev_type_t operation_type)¶
Check the availability of the device.
Issue an operation of
operation_type
to the I2C device then stops.- Parameters
dev – Device descriptor
operation_type – Operation type
- Returns
ESP_OK if device is available
-
esp_err_t i2c_dev_read(const i2c_dev_t *dev, const void *out_data, size_t out_size, void *in_data, size_t in_size)¶
Read from slave device.
Issue a send operation of
out_data
register address, followed by readingin_size
bytes from slave intoin_data
. Function is thread-safe.- Parameters
dev – Device descriptor
out_data – Pointer to data to send if non-null
out_size – Size of data to send
in_data – [out] Pointer to input data buffer
in_size – Number of byte to read
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_write(const i2c_dev_t *dev, const void *out_reg, size_t out_reg_size, const void *out_data, size_t out_size)¶
Write to slave device.
Write
out_size
bytes fromout_data
to slave intoout_reg
register address. Function is thread-safe.- Parameters
dev – Device descriptor
out_reg – Pointer to register address to send if non-null
out_reg_size – Size of register address
out_data – Pointer to data to send
out_size – Size of data to send
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_read_reg(const i2c_dev_t *dev, uint8_t reg, void *in_data, size_t in_size)¶
Read from register with an 8-bit address.
Shortcut to i2c_dev_read().
- Parameters
dev – Device descriptor
reg – Register address
in_data – [out] Pointer to input data buffer
in_size – Number of byte to read
- Returns
ESP_OK on success
-
esp_err_t i2c_dev_write_reg(const i2c_dev_t *dev, uint8_t reg, const void *out_data, size_t out_size)¶
Write to register with an 8-bit address.
Shortcut to i2c_dev_write().
- Parameters
dev – Device descriptor
reg – Register address
out_data – Pointer to data to send
out_size – Size of data to send
- Returns
ESP_OK on success
-
struct i2c_dev_t¶
- #include <i2cdev.h>
I2C device descriptor.
Public Members
-
i2c_port_t port¶
I2C port number.
-
i2c_config_t cfg¶
I2C driver configuration.
-
uint8_t addr¶
Unshifted address.
-
SemaphoreHandle_t mutex¶
Device mutex.
-
uint32_t timeout_ticks¶
HW I2C bus timeout (stretch time), in ticks.
80MHz APB clock ticks for ESP-IDF, CPU ticks for ESP8266. When this value is 0, I2CDEV_MAX_STRETCH_TIME will be used
-
i2c_port_t port¶
-
I2CDEV_MAX_STRETCH_TIME¶