1. 项目概述
HTS221TR是STMicroelectronics推出的一款超小型数字温湿度传感器,采用HLGA-6(2x2mm)封装。我在最近的一个物联网项目中使用了这款传感器,发现它在STM32F4系列MCU上的表现非常出色。这款传感器内置16位ADC,支持I2C和SPI两种数字接口,在1Hz采样率下功耗仅2µA,特别适合电池供电的物联网终端设备。
1.1 传感器核心特性解析
HTS221TR的技术参数相当亮眼:
- 湿度测量范围:0~100% RH
- 温度测量范围:-40°C~+120°C
- 精度表现:
- 湿度:±3.5% RH(20~80%区间)
- 温度:±0.5°C(15~40°C区间)
- 输出数据速率(ODR):可编程从1Hz到12.5Hz
- 接口支持:
- I2C(最高400kHz)
- SPI(最高10MHz)
在实际项目中,我选择了I2C接口,因为它只需要两根线(SCL和SDA)就能实现通信,比SPI更节省IO资源。对于STM32F4系列来说,内置的硬件I2C外设可以很好地支持这个传感器。
1.2 为什么选择HTS221TR
在选型阶段,我对比了几款常见的温湿度传感器,最终选择HTS221TR主要基于以下几个考虑:
- 封装尺寸:2x2mm的超小封装非常适合空间受限的物联网设备
- 低功耗特性:1Hz采样率下仅2µA的电流消耗,对电池供电设备至关重要
- 数字接口:直接输出数字信号,省去了额外的信号调理电路
- 性价比:相比同类产品,HTS221TR的价格更具竞争力
提示:在实际应用中,如果对湿度精度要求更高,可以考虑在软件层面增加校准算法,特别是在20-80%RH以外的区间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件连接与配置
2.1 引脚定义与连接
HTS221TR的引脚定义如下:
- VDD:电源输入(1.7V至3.6V)
- GND:地
- SCL:I2C时钟线
- SDA:I2C数据线
- DRDY:数据就绪中断输出(可选)
- CS:片选(用于SPI模式)
在STM32F4开发板上的典型连接方式:
code复制HTS221TR STM32F4
VDD → 3.3V
GND → GND
SCL → PB6(I2C1_SCL)
SDA → PB7(I2C1_SDA)
2.2 I2C接口配置
使用STM32CubeMX配置I2C1外设:
- 选择I2C1模式为"I2C"
- 时钟速度设置为100kHz(标准模式)
- 启用I2C中断(可选)
- GPIO模式设置为"Alternate Function Open Drain"
c复制// I2C初始化代码示例
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
{
Error_Handler();
}
注意:I2C总线上需要接上拉电阻(通常4.7kΩ),如果开发板已经内置,则无需额外添加。
3. 传感器驱动开发
3.1 寄存器映射与定义
HTS221TR通过寄存器进行配置和数据读取。以下是关键寄存器定义:
c复制#define HTS221_WHO_AM_I 0x0F
#define HTS221_AV_CONF 0x10
#define HTS221_CTRL_REG1 0x20
#define HTS221_CTRL_REG2 0x21
#define HTS221_CTRL_REG3 0x22
#define HTS221_STATUS_REG 0x27
#define HTS221_HUMIDITY_OUT_L 0x28
#define HTS22
