| 平台 | 目标 | 板子 |
| lm620 | r4f4 | e837n_v01 |
演示通过 I2C 总线与 SGP30 空气质量传感器通信,读取 CO2 等效浓度与 tVOC 浓度。采用单文件自实现,不依赖第三方驱动库。
预期行为
**传感器初始化**:
- 配置 I2C 引脚复用(SCL、SDA),以 100 kHz 速度初始化 I2C 主机
- 读取特性集版本(命令 0x202F )校验产品类型,确认 SGP30 在线
- 初始化空气质量基线(命令 0x2003 )
**周期性测量**:
- 每 1 秒触发一次空气质量测量(命令 0x2008 ),等待 50 ms 后读取 6 字节数据(含 CRC8 校验)
- 返回 CO2 等效浓度(ppm)与 tVOC 浓度(ppb),串口输出:
[00000000][i2c_task]: start
[00000000][i2c_task]: SGP30 feature set: 0x0020
[00000000][i2c_task]: iaq_init done
[00001000][i2c_task]: co2_eq: 450 ppm
[00001000][i2c_task]: tvoc: 0 ppb
[00000000][i2c_task]: measurement error
编译和运行
cd examples/peripherals/i2c/sgp30
xt --target lm620/r4f4 --board e837n_v01 fullclean build
下载固件后运行,串口观察空气质量采集日志。
注意事项
- I2C 引脚(SCL、SDA)复用 AHT20 引脚组,依赖 xt_board(板级配置) 配置,不同板子需确认 XT_BRD_I2C_AHT20_SCL_PIN 等宏映射正确;SGP30 与 AHT20 地址不同(0x58 与 0x38),可挂载于同一总线
- 此示例需要 SGP30 传感器硬件连接至同一 I2C 总线
- IAQ 测量须严格每秒触发一次,SGP30 才能输出准确值
- iaq_init 后前 15 秒输出为固定基线值(CO2=450ppm、tVOC=0ppb),属正常现象
- DBG_LOG 调试宏默认关闭( DBG_LOG_ENABLE=0 ),开启可输出详细 I2C 通信过程