本质上是在梳理“总线”与“设备”的关系
第一步:创建IIC总线,获得总线句柄i2c_bus_handle_
i2c_master_bus_config_t bus_config = {};
bus_config.i2c_port = I2C_NUM_0;
bus_config.sda_io_num = app_config::IMU_I2C_SDA_GPIO;
bus_config.scl_io_num = app_config::IMU_I2C_SCL_GPIO;
bus_config.clk_source = I2C_CLK_SRC_DEFAULT;
bus_config.glitch_ignore_cnt = 7;
bus_config.flags.enable_internal_pullup = true;
ESP_ERROR_CHECK(i2c_new_master_bus(&bus_config, &i2c_bus_handle_));
第二步:将I2C设备添加到总线上
i2c_device_config_t dev_cfg = {};
dev_cfg.dev_addr_length = I2C_ADDR_BIT_LEN_7;
dev_cfg.device_address = device_address_;
dev_cfg.scl_speed_hz = 400000;
esp_err_t ret = i2c_master_bus_add_device(bus_handle_, &dev_cfg, &dev_handle_);
第三步:得到设备句柄dev_handle_
第四步:使用设备句柄读写寄存器