ESP-IDF I2C 寄存器读取两字节地址

ESP-IDF I2C register read with two-byte address

我正在努力从 Arduino/Wire 库切换到 ESP-IDF 的 I2C 驱动程序。我卡在了第一阶段,试图简单地读取寄存器。 我使用的函数是esp_err_t i2c_master_write_read_device(i2c_port_t i2c_num, uint8_t device_address, const uint8_t* write_buffer, size_t write_size, uint8_t* read_buffer, size_t read_size, TickType_t ticks_to_wait).

我面临的问题是我的write_buffer是uint16_t。

如何克服它?

谢谢

您需要向函数传递一个指向缓冲区的指针和该缓冲区的大小。

如果你想写一个简单的uint16_t变量:

uint8_t *write_buffer = (uint8_t*)&old_buffer;
size_t write_size = 2

考虑到您负责为该缓冲区提供内存,因此请确保 uint16_t 变量在写入函数完成之前未被销毁。