跳到主要内容

将传感器库迁移到 TuyaOpen

将现有的 Arduino 或 ESP-IDF 传感器库移植到 TuyaOpen,使其在所有支持的平台上工作。

前提条件

迁移策略

大多数传感器库有三层:总线抽象、寄存器访问、应用逻辑。你只需替换第一层(总线抽象),其余保持不变。

Arduino Wire.h -> TKL I2C 映射

ArduinoTuyaOpen
Wire.begin(sda, scl)tkl_io_pinmux_config() + tkl_i2c_init()
Wire.beginTransmission(addr) + Wire.write() + Wire.endTransmission()tkl_i2c_master_send(port, addr, data, len, TRUE)
Wire.requestFrom(addr, len) + Wire.read()tkl_i2c_master_receive(port, addr, buf, len, TRUE)

ESP-IDF -> TKL I2C 映射

ESP-IDFTuyaOpen
i2c_new_master_bus()tkl_i2c_init()
i2c_master_transmit()tkl_i2c_master_send()
i2c_master_receive()tkl_i2c_master_receive()

通用替换

Arduino / ESP-IDFTuyaOpen
delay(ms)tal_system_sleep(ms)
Serial.println()TAL_PR_INFO()
millis()tal_system_get_millisecond()
malloc / freetal_malloc / tal_free

SPI 传感器

TuyaOpen 在 ESP32 上未提供 tkl_spi 适配器。两个选项:

  • 选项 A: 直接使用 ESP-IDF SPI(仅 ESP32,不可移植)
  • 选项 B: 编写自己的 SPI 封装并在各平台移植

无法移植的内容

  • 基于 DMA 的 SPI 传输
  • 硬件特定传感器外设(ESP32 触摸传感器、ULP ADC)
  • 厂商 SDK 回调(esp_event_*

参考资料