Move I2C into a separate component.
This commit is contained in:
66
esp/cpp/components/i2c/include/i2c.h
Normal file
66
esp/cpp/components/i2c/include/i2c.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/*#############################################################################
|
||||
## Author: Shaun Reed ##
|
||||
## Legal: All Content (c) 2025 Shaun Reed, all rights reserved ##
|
||||
## ##
|
||||
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com ##
|
||||
##############################################################################
|
||||
*/
|
||||
#ifndef I2C_H
|
||||
#define I2C_H
|
||||
|
||||
#define I2C_BUS_PORT 0
|
||||
|
||||
#include <esp_log.h>
|
||||
#include <driver/i2c_master.h>
|
||||
|
||||
/// Tag used for ESP logging.
|
||||
static const char* TAG = "I2C component";
|
||||
|
||||
/**
|
||||
* Construct an ESP I2C master bus given a specific ESP I2C configuration.
|
||||
* An I2C constructor may only be called one time in any application.
|
||||
*
|
||||
* @param config ESP I2C master bus configuration.
|
||||
*/
|
||||
inline void init_config_i2c(const i2c_master_bus_config_t config)
|
||||
{
|
||||
i2c_master_bus_handle_t i2c;
|
||||
ESP_LOGI(TAG, "Initializing new master I2C bus");
|
||||
ESP_ERROR_CHECK(i2c_new_master_bus(&config, &i2c));
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct and initialize an ESP I2C master bus.
|
||||
* An I2C constructor may only be called one time in any application.
|
||||
*
|
||||
* @param sda GPIO pin for SDA
|
||||
* @param scl GPIO pin for SCL
|
||||
*/
|
||||
inline void init_i2c(gpio_num_t sda, gpio_num_t scl)
|
||||
{
|
||||
return init_config_i2c((i2c_master_bus_config_t){
|
||||
.i2c_port = I2C_BUS_PORT,
|
||||
.sda_io_num = sda,
|
||||
.scl_io_num = scl,
|
||||
.clk_source = I2C_CLK_SRC_DEFAULT,
|
||||
.glitch_ignore_cnt = 7,
|
||||
.flags = {
|
||||
.enable_internal_pullup = true,
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* ESP I2C master bus handle getter.
|
||||
* This will fail if an I2C instance was never constructed.
|
||||
*/
|
||||
static i2c_master_bus_handle_t get()
|
||||
{
|
||||
i2c_master_bus_handle_t i2c = NULL;
|
||||
ESP_ERROR_CHECK(i2c_master_get_bus_handle(0, &i2c));
|
||||
return i2c;
|
||||
}
|
||||
|
||||
|
||||
#endif //I2C_H
|
||||
Reference in New Issue
Block a user