在 ESP32-S3 上使用 ULP RISC-V 协处理器读取 I2C HDC1080 传感器

问题描述 投票:0回答:1

嗯,我正在尝试使用 ESP32S3 ULP Riscv 协处理器从 HDC1080 传感器 使用 I2C 读取深度睡眠时的温度值。首先,我在 Arduino 上编写代码进行测试。效果很好

double temp() {

  Wire.beginTransmission((uint8_t)0x40);
  Wire.write((uint8_t)0x00);
  Wire.endTransmission();

  delay(20);

  Wire.requestFrom((uint8_t)0x40, (uint8_t)2);
  byte msb = Wire.read();
  byte lsb = Wire.read();

  uint16_t t = msb << 8 | lsb;
  return (t / pow(2, 16)) * 165.0 - 40.0;
}

现在我想将此库的代码转换为 ulp riscv i2c 库,以使用 ESP idf 在 ULP 模式下读取值。有一个 bmp180 传感器的示例代码如何在 ULP 模式下读取 I2C。如果我将 bmp180 与此示例代码一起使用,则一切正常。但我无法从 HDC1080 读取临时值。如何将上面的 arduino 代码转换为 ulp riscv i2c 库格式。

虽然我不完全确定,但是docs说ULP RISC-V I2C库总是需要一个从属子寄存器地址,但我似乎找不到这样一个子寄存器来从HDC1080。这可能是我无法执行读取的原因吗?我该怎么办,你能帮我吗?

我查看hdc1080的文档时,有一个寄存器表用于读取temp 0x00,但是如何到达[15:02]子寄存器

esp32 i2c riscv temperature esp-idf
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.