esp32 - I2C

kurtwerbrouck
Posts: 10
Joined: Tue Feb 16, 2021 2:37 pm

esp32 - I2C

Postby kurtwerbrouck » Fri Jun 18, 2021 3:34 pm

hello

i am trying to run the next example from the i2c api datasheet @ docs.espressif.com - API I2C.

#include ""driver/i2c.h""

#define I2C_SCL_IO 22
#define I2C_SDA_IO 21
#define I2C_FREQ_HZ 100000
#define I2C_PORT_NUM I2C_NUM_0
#define I2C_TX_BUF_DISABLE 0
#define I2C_RX_BUF_DISABLE 0
#define I2C_FREQ_HZ 100000

int i2c_master_port = I2C_PORT_NUM;
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_SDA_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_io_num = I2C_SCL_IO,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_FREQ_HZ,
};

in the arduino , when Verify/Compile i got the next error:
ESP32-MQTT-ESP32:71:1: error: expected primary-expression before '.' token
.master.clk_speed = I2C_FREQ_HZ,

Does someone has any idea what is wrong?

thanks

lbernstone
Posts: 827
Joined: Mon Jul 22, 2019 3:20 pm

Re: esp32 - I2C

Postby lbernstone » Fri Jun 18, 2021 9:27 pm

This sort of variable assignment is C. The C++ compiler will not accept elements out of order or missing, which makes it fail with unions or other compound elements. Change them into individual direct assignments (e.g. conf.master.clk_speed = I2C_FREQ_HZ;). You will likely also need to cast many of those constants to the type the structure expects (C does this implicitly).

Who is online

Users browsing this forum: No registered users and 51 guests