Core2 for AWS IoT EduKit BSP 1.5.1
i2c_device.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include "esp_log.h"
8#include "driver/gpio.h"
9#include "driver/i2c.h"
10
23/* @[declare_i2c_no_reg] */
24#define I2C_NO_REG ( 1 << 30 )
25/* @[declare_i2c_no_reg] */
26
40/* @[declare_i2cdevice_t] */
41typedef void * I2CDevice_t;
42/* @[declare_i2cdevice_t] */
43
44I2CDevice_t i2c_malloc_device(i2c_port_t i2c_num, gpio_num_t sda, gpio_num_t scl, uint32_t freq, uint8_t device_addr);
45
46void i2c_free_device(I2CDevice_t i2c_device);
47
48esp_err_t i2c_apply_bus(I2CDevice_t i2c_device);
49
50esp_err_t i2c_free_bus(I2CDevice_t i2c_device);
51
52esp_err_t i2c_device_change_freq(I2CDevice_t i2c_device, uint32_t freq);
53
54esp_err_t i2c_read_bytes(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length);
55
56esp_err_t i2c_read_byte(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t* data);
57
58esp_err_t i2c_read_bit(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint8_t bit_pos);
59
60/*
61 Read bits from 8 bit reg
62 bit_pos = 4, bit_length = 3
63 read -> 0b|1|0|1|0|1|1|0|0|
64 0b|-|x|x|x|-|-|-|-|
65 data = 0b00000010
66*/
67esp_err_t i2c_read_bits(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint8_t bit_pos, uint8_t bit_length);
68
69esp_err_t i2c_write_bytes(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length);
70
71esp_err_t i2c_read_bytes_no_stop(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length);
72
73esp_err_t i2c_write_byte(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data);
74
75esp_err_t i2c_write_bit(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data, uint8_t bit_pos);
76
77/*
78 Read before bits from 8 bit reg, then update write bits
79 1. Read data 0b10101100
80 2. write, 0b0101, bit_pos = 4, bit_length = 3
81 read -> 0b|1|0|1|0|1|1|0|0|
82 0b|-|x|x|x|-|-|-|-|
83 write -> 0b|1|1|0|1|1|1|0|0|
84 data = 0b00000101
85*/
86esp_err_t i2c_write_bits(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data, uint8_t bit_pos, uint8_t bit_length);
87
88esp_err_t i2c_device_valid(I2CDevice_t i2c_device);
89
90BaseType_t i2c_take_port(i2c_port_t i2c_num, uint32_t timeout);
91
92BaseType_t i2c_free_port(i2c_port_t i2c_num);
93
94
95#ifdef __cplusplus
96}
97#endif
esp_err_t i2c_write_bit(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data, uint8_t bit_pos)
Definition: i2c_device.c:324
esp_err_t i2c_write_bytes(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length)
Definition: i2c_device.c:284
esp_err_t i2c_write_bits(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data, uint8_t bit_pos, uint8_t bit_length)
Definition: i2c_device.c:337
BaseType_t i2c_take_port(i2c_port_t i2c_num, uint32_t timeout)
Definition: i2c_device.c:91
esp_err_t i2c_device_change_freq(I2CDevice_t i2c_device, uint32_t freq)
Definition: i2c_device.c:356
void * I2CDevice_t
A pointer to the I2C peripheral configuration.
Definition: i2c_device.h:41
esp_err_t i2c_read_byte(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data)
Definition: i2c_device.c:246
esp_err_t i2c_write_byte(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t data)
Definition: i2c_device.c:320
esp_err_t i2c_read_bytes_no_stop(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length)
Definition: i2c_device.c:204
I2CDevice_t i2c_malloc_device(i2c_port_t i2c_num, gpio_num_t sda, gpio_num_t scl, uint32_t freq, uint8_t device_addr)
Definition: i2c_device.c:47
esp_err_t i2c_read_bits(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint8_t bit_pos, uint8_t bit_length)
Definition: i2c_device.c:266
esp_err_t i2c_apply_bus(I2CDevice_t i2c_device)
Definition: i2c_device.c:107
esp_err_t i2c_read_bytes(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint16_t length)
Definition: i2c_device.c:162
BaseType_t i2c_free_port(i2c_port_t i2c_num)
Definition: i2c_device.c:99
esp_err_t i2c_free_bus(I2CDevice_t i2c_device)
Definition: i2c_device.c:154
void i2c_free_device(I2CDevice_t i2c_device)
Definition: i2c_device.c:83
esp_err_t i2c_device_valid(I2CDevice_t i2c_device)
Definition: i2c_device.c:375
esp_err_t i2c_read_bit(I2CDevice_t i2c_device, uint32_t reg_addr, uint8_t *data, uint8_t bit_pos)
Definition: i2c_device.c:250