1. 项目概述
nahs-Bricks-Lib-SHT4x 是一个面向嵌入式平台的轻量级驱动库,专为 Sensirion 公司 SHT4x 系列数字温湿度传感器设计。该库不依赖特定硬件抽象层(HAL)或实时操作系统(RTOS),采用纯 C 语言编写,以头文件 + 源文件形式提供,具备高度可移植性。其核心目标是为 STM32、ESP32、nRF52、RP2040 等主流 MCU 平台提供稳定、低开销、符合工业级时序要求的 I²C 接口访问能力。
SHT4x(含 SHT40、SHT41、SHT45)是 Sensirion 第四代 CMOSens® 温湿度传感器,采用单芯片集成传感元件与信号调理电路,具有 ±0.2°C 温度精度(±0.1°C 典型值)、±1.0% RH 湿度精度(±0.8% RH 典型值)、0.01% RH 分辨率、超低功耗(典型待机电流仅 0.15 µA)以及内置 CRC 校验机制。其 I²C 接口支持标准模式(100 kbps)、快速模式(400 kbps)及快速模式+(1 Mbps),地址固定为 0x44 (7 位地址),无地址选择引脚,简化了多传感器布线。
nahs-Bricks-Lib-SHT4x 的设计哲学是“最小侵入、最大可控”:它不封装 I²C 总线操作,而是将底层 I²C 读写函数(如 i2c_write_bytes 和 i2c_read_bytes )作为回调接口暴露给用户,由开发者在初始化时注册。这种设计避免了对 HAL 库(如 STM32 HAL_I2C_Transmit/Receive)或 LL 库(如 LL_I2C_HandleTransfer)的硬依赖,使库可在裸机、FreeRTOS、Zephyr、RT-Thread 等任意环境下无缝集成,同时赋予开发者对总线时序、错误重试、DMA 配置等关键环节的完全控制权。
该库并非功能堆砌型 SDK,而是聚焦于传感器协议栈的核心——命令执行、数据解析与 CRC 验证。所有 SHT4x 官方命令(包括高精度、中精度、低功耗三种测量模式,以及 Heater 开关、序列号读取、软复位等)均被完整映射为 C 枚举与函数接口;所有原始 ADC 值到物理量(°C / %RH)的转换公式均严格遵循 Sensirion 数据手册(SHT4x Datasheet Rev. 1.1, 2022)第 9 节“Output Data Format”所定义的 IEEE 754 单精度浮点数计算逻辑,确保跨平台结果一致性。
2. 核心功能与协议实现
2.1 SHT4x 命令集映射与执行流程
SHT4x 通过向其 I²C 地址发送 2 字节命令码触发内部测量或配置操作。 nahs-Bricks-Lib-SHT4x 将全部 12 条官方命令抽象为 sht4x_cmd_t 枚举类型,并通过统一的 sht4x_send_command() 函数执行。该函数不直接操作硬件,而是调用用户注册的 i2c_write_bytes 回调,将命令字节写入设备。
| 命令枚举值 | 命令码 (Hex) | 功能描述 | 典型响应长度 | 工程适用场景 |
|---|---|---|---|---|
SHT4X_CMD_MEASURE_HIGH_PRECISION |
0x24 |
高精度测量(温度+湿度) | 6 字节(2×16bit ADC + 2×8bit CRC) | 环境监测站、医疗设备校准 |
SHT4X_CMD_MEASURE_MEDIUM_PRECISION |
0x21 |
中精度测量(温度+湿度) | 6 字节 | 工业控制器、楼宇自控节点 |
SHT4X_CMD_MEASURE_LOW_POWER |
0x22 |
低功耗测量(温度+湿度) | 6 字节 | 电池供电 IoT 终端、穿戴设备 |
SHT4X_CMD_MEASURE_HIGH_PRECISION_HEATER_ON |
0x39 |
高精度测量 + 加热器开启(200ms) | 6 字节 | 冷凝环境防结露、高湿工况补偿 |
SHT4X_CMD_READ_SERIAL_NUMBER |
0x89 |
读取 6 字节唯一序列号 | 6 字节 | 设备身份认证、固件绑定、产线烧录验证 |
SHT4X_CMD_SOFT_RESET |
0x94 |
软复位(恢复默认配置) | 0 字节 | 初始化失败后恢复、OTA 升级后重置 |
执行流程严格遵循数据手册时序要求:
- 主机发起 I²C START;
- 发送设备地址(
0x44)+ WRITE 位; - 发送命令码高字节(如
0x24); - 发送命令码低字节(如
0x00,SHT4x 所有命令低字节均为0x00);
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_42612405/article/details/159478689



