36 lines
948 B
C++
36 lines
948 B
C++
#include "i2c.h"
|
|
#include "esp_log.h"
|
|
#include "esp_err.h"
|
|
#include "driver/i2c.h"
|
|
|
|
static const char *TAG = "i2c";
|
|
|
|
SemaphoreHandle_t main_i2c_mutex;
|
|
|
|
void init_i2c() {
|
|
ESP_LOGI(TAG, "Initializing i2c...");
|
|
|
|
i2c_config_t conf = {
|
|
.mode = I2C_MODE_MASTER,
|
|
.sda_io_num = PIN_I2C_SDA,
|
|
.scl_io_num = PIN_I2C_SCL,
|
|
.sda_pullup_en = GPIO_PULLUP_DISABLE,
|
|
.scl_pullup_en = GPIO_PULLUP_DISABLE,
|
|
// .sda_pullup_en = GPIO_PULLUP_ENABLE,
|
|
// .scl_pullup_en = GPIO_PULLUP_ENABLE,
|
|
.master = {
|
|
// TODO: 400k?
|
|
.clk_speed = 100*1000,
|
|
},
|
|
.clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL
|
|
};
|
|
|
|
ESP_ERROR_CHECK(i2c_param_config(MAIN_I2C_BUS_NUM, &conf));
|
|
ESP_ERROR_CHECK(i2c_driver_install(MAIN_I2C_BUS_NUM, conf.mode, 0, 0, 0));
|
|
|
|
main_i2c_mutex = xSemaphoreCreateMutex();
|
|
assert(main_i2c_mutex != NULL);
|
|
|
|
ESP_LOGI(TAG, "i2c initialized!");
|
|
}
|