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 变量在写入函数完成之前未被销毁。
我正在努力从 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 变量在写入函数完成之前未被销毁。