I am trying to create a i2c_config_t in order to user i2c for BME680.
My setup is
Code: Select all
i2c_config_t i2c_config = {
.mode = I2C_MODE_MASTER,
.sda_io_num = _sda,
.scl_io_num = _clk,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = 100000};
and returns error
{
"resource": "/Users/kyrpav/workspace/esp32/tutorials/LearnEsp32/main/Lesson5/BME680.cpp",
"owner": "cpp",
"severity": 8,
"message": "expected primary-expression before '.' token",
"startLineNumber": 38,
"startColumn": 25,
"endLineNumber": 38,
"endColumn": 25
}
My compiler extra path on configuration is :
.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin
.espressif/tools/xtensa-esp32s2-elf/esp-2020r3-8.4.0/xtensa-esp32s2-elf/bin
.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin
.espressif/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin
.espressif/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/bin
Esp-idf version is 4.1.1
from i2c_types.h the definition of the struct is
Code: Select all
/**
* @brief I2C initialization parameters
*/
typedef struct{
i2c_mode_t mode; /*!< I2C mode */
int sda_io_num; /*!< GPIO number for I2C sda signal */
int scl_io_num; /*!< GPIO number for I2C scl signal */
bool sda_pullup_en; /*!< Internal GPIO pull mode for I2C sda signal*/
bool scl_pullup_en; /*!< Internal GPIO pull mode for I2C scl signal*/
union {
struct {
uint32_t clk_speed; /*!< I2C clock frequency for master mode, (no higher than 1MHz for now) */
} master;
struct {
uint8_t addr_10bit_en; /*!< I2C 10bit address mode enable for slave mode */
uint16_t slave_addr; /*!< I2C address for slave mode */
} slave;
};
} i2c_config_t;