Aruna
aruna::driver::ESP32_I2C_master Class Reference

#include <ESP32_I2C_master.h>

Inheritance diagram for aruna::driver::ESP32_I2C_master:
Collaboration diagram for aruna::driver::ESP32_I2C_master:

Public Member Functions

 ESP32_I2C_master (i2c_port_t i2c_num, const i2c_config_t *i2c_conf)
 
 ~ESP32_I2C_master ()
 
- Public Member Functions inherited from aruna::driver::I2C_master
 I2C_master ()
 
 ~I2C_master ()
 
err_t write (uint8_t address, uint8_t reg, uint8_t *data, size_t data_size)
 Write data to the I²C bus. More...
 
err_t write (uint8_t address, uint8_t reg, uint8_t data)
 Write single byte to the I²C bus. More...
 
err_t read (uint8_t address, uint8_t reg, uint8_t *buffer, size_t buffer_size)
 Read data from I²C slave. More...
 
err_t read (uint8_t address, uint8_t reg, uint8_t &buffer)
 Read single byte from I²C slave. More...
 
err_t lock (uint8_t i2c_address)
 
err_t try_lock (uint8_t i2c_address)
 
err_t unlock (uint8_t i2c_address)
 

Private Member Functions

err_t _write (uint8_t address, uint8_t reg, uint8_t *data, size_t data_size) override
 
err_t _read (uint8_t address, uint8_t reg, uint8_t *buffer, size_t buffer_size) override
 

Private Attributes

i2c_port_t i2c_num
 
const i2c_config_t * i2c_conf
 
i2c_cmd_handle_t i2c_cmd_handler
 

Detailed Description

Definition at line 13 of file ESP32_I2C_master.h.

Constructor & Destructor Documentation

◆ ESP32_I2C_master()

ESP32_I2C_master::ESP32_I2C_master ( i2c_port_t  i2c_num,
const i2c_config_t *  i2c_conf 
)

Definition at line 11 of file ESP32_I2C_master.cpp.

12 // start I2C driver
13  ESP_ERROR_CHECK(i2c_param_config(i2c_num, i2c_conf));
14  ESP_ERROR_CHECK(i2c_driver_install(i2c_num, I2C_MODE_MASTER, 0, 0, ESP_INTR_FLAG_IRAM));
15  i2c_cmd_handler = i2c_cmd_link_create();
16 }

◆ ~ESP32_I2C_master()

ESP32_I2C_master::~ESP32_I2C_master ( )

Definition at line 18 of file ESP32_I2C_master.cpp.

18  {
19  ESP_ERROR_CHECK(i2c_driver_delete(i2c_num));
20  i2c_cmd_link_delete(i2c_cmd_handler);
21 }

Member Function Documentation

◆ _read()

err_t ESP32_I2C_master::_read ( uint8_t  address,
uint8_t  reg,
uint8_t *  buffer,
size_t  buffer_size 
)
overrideprivatevirtual

Implements aruna::driver::I2C_master.

Definition at line 44 of file ESP32_I2C_master.cpp.

44  {
45  esp_err_t esp_err;
46  ESP_ERROR_CHECK(i2c_master_start(i2c_cmd_handler));
47  ESP_ERROR_CHECK(i2c_master_write_byte(i2c_cmd_handler, (address << 1) | I2C_MASTER_WRITE, I2C_MASTER_ACK));
48  ESP_ERROR_CHECK(i2c_master_write_byte(i2c_cmd_handler, (uint8_t) reg, I2C_MASTER_ACK));
49  ESP_ERROR_CHECK(i2c_master_start(i2c_cmd_handler));
50  ESP_ERROR_CHECK(i2c_master_write_byte(i2c_cmd_handler, (address << 1) | I2C_MASTER_READ, true));
51  ESP_ERROR_CHECK(i2c_master_read(i2c_cmd_handler, buffer, buffer_size, I2C_MASTER_ACK));
52  ESP_ERROR_CHECK(i2c_master_stop(i2c_cmd_handler));
53  esp_err = i2c_master_cmd_begin(i2c_num, i2c_cmd_handler, 100 / portTICK_PERIOD_MS );
54  switch (esp_err) {
55  case ESP_OK:
56  return err_t::OK;
57  case ESP_ERR_INVALID_ARG:
59  case ESP_FAIL:
60  return err_t::NO_RESPONSE;
61  case ESP_ERR_INVALID_STATE:
63  default:
64  return err_t::UNDEFINED;
65  }
66 }

◆ _write()

err_t ESP32_I2C_master::_write ( uint8_t  address,
uint8_t  reg,
uint8_t *  data,
size_t  data_size 
)
overrideprivatevirtual

Implements aruna::driver::I2C_master.

Definition at line 22 of file ESP32_I2C_master.cpp.

22  {
23  esp_err_t esp_err;
24  ESP_ERROR_CHECK(i2c_master_start(i2c_cmd_handler));
25  ESP_ERROR_CHECK(i2c_master_write_byte(i2c_cmd_handler, (address << 1) | I2C_MASTER_WRITE, I2C_MASTER_ACK));
26  ESP_ERROR_CHECK(i2c_master_write_byte(i2c_cmd_handler, (uint8_t) reg, I2C_MASTER_ACK));
27  ESP_ERROR_CHECK(i2c_master_write(i2c_cmd_handler, data, data_size, I2C_MASTER_ACK));
28  ESP_ERROR_CHECK(i2c_master_stop(i2c_cmd_handler));
29  esp_err = i2c_master_cmd_begin(i2c_num, i2c_cmd_handler, 100 / portTICK_PERIOD_MS );
30  switch (esp_err) {
31  case ESP_OK:
32  return err_t::OK;
33  case ESP_ERR_INVALID_ARG:
35  case ESP_FAIL:
36  return err_t::NO_RESPONSE;
37  case ESP_ERR_INVALID_STATE:
39  default:
40  return err_t::UNDEFINED;
41  }
42 }

Member Data Documentation

◆ i2c_cmd_handler

i2c_cmd_handle_t aruna::driver::ESP32_I2C_master::i2c_cmd_handler
private

Definition at line 17 of file ESP32_I2C_master.h.

◆ i2c_conf

const i2c_config_t* aruna::driver::ESP32_I2C_master::i2c_conf
private

Definition at line 16 of file ESP32_I2C_master.h.

◆ i2c_num

i2c_port_t aruna::driver::ESP32_I2C_master::i2c_num
private

Definition at line 15 of file ESP32_I2C_master.h.


The documentation for this class was generated from the following files: