Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
【5月原创帖征集活动】TI温湿度HDC1000软件包设计与制作
发布于 2020-05-24 06:35:30 浏览:1546
订阅该版
* 本帖最后由 X-Jing007 于 2020-5-24 06:44 编辑 * **PS:因论坛字数与排版方式不太方便,完整文章可查看** [https://blog.csdn.net/nich2009/article/details/106309725](https://blog.csdn.net/nich2009/article/details/106309725) **1 概述**本文主要讲述了基于RT-Thread Sensor框架实现的温湿度传感器HDC1000软件包,同时详细记录了RT-Thread传感器软件包的制作过程。本文的主要内容提要:[list] * 低功耗温湿度传感器HDC1000的基础知 * HDC1000的工作机制 * HDC1000软件包功能设计 [/list][list] * HDC1000软件包的功能简介 * HDC1000软件包的使用与测试 [/list][list] * HDC1000软件包制作与发布 [/list][list] [list] * 制作软件包索引 * 软件包本地测试 * PR推送 [/list][/list] HDC1000软件包的代码仓库:> https://github.com/Forest-Rain/hdc1000 **2 HDC1000应用原理****2.1 HDC1000传感器工作原理**[align=center]  [align=center]图2.1 HDC1000功能框图HDC1000是TI公司开发的一款集成式湿度和温度传感器, 其能够以较低功耗提供出色的测量精度。HDC1000的传感元件位于器件底部,有助于 HDC1000 免受粉尘、灰尘以及其他环境污染物的影响,从而更加稳定可靠。HDC1000通过IIC接口,作为IIC从设备与Host MCU进行数据交互。HDC1000内置了加热元件(Heater), 软件可短暂地打开,用于消散设备长期暴露在高湿度环境中产生的冷凝和湿气, 从而增加湿度传感器的可靠性。此外,加热功能也可用于验证集成温度传感器的功能。[indent]注:推荐使用换代产品HDC2010代替[HDC1000](http://www.ti.com.cn/product/cn/HDC1000)。HDC2010具有更好的特性功能,但是两者硬件接口与软件接口都不兼容。[/indent][align=center]  **2.1.1 工作模式**HDC1000有两种工作模式:睡眠模式(Sleep Mode)与测量模式(Measurement Mode)。[list] * 睡眠模式 [/list][list] * 上电后默认处于睡眠模式。Host MCU通过IIC接口发送指令来唤醒传感器,并对传感器进行读写操作。在完成一次有效温度\湿度测量后,HDC1000自动回到睡眠模式。 [/list][list] * 测试模式 [/list][list] [list] * HDC1000测量模式只支持(手动)按需触发(Trigger on Demand)。( HDC2010支持自动定时采样模式) [/list][/list]**2.1.2 典型应用场景**[list] * IoT低功耗应用,如 [/list][list] [list] * 智能恒温器 * 智能冰箱 * 烟雾和热量探测器 * 环境标签 * ... [/list][/list]**2.2 硬件设计****  **[align=center]图2.2 HDC1000典型应用电路HDC1000有2根地址线.因此一条IIC总线上,最多可以挂载4个HDC1000。 **2.3 软件设计**获取HDC1000的温度与湿度数据主要是MCU通过IIC接口对指定寄存器读写来完成的,具体实现过程主要包括以下内容:1. IIC通信驱动[list] [list] (*)使用RT-Thread系统提供的模拟I2C驱动,来访问HDC1000传感器,可查看 env工具 --> menuconfig --> RT-Thread Components --> Device Drivers --> (*)  [/list][/list][list=1] (*)采样转换完成判断。采样完成可以根据实际情况,有如下两种方式: [/list] - HDC1000提供了一个DRDY/INT硬件引脚,用于指示温度\湿度采样转换完成,该引脚可以用于唤醒Host MCU。 - 若实际应用电路未使用该引脚,则可以采用了固定延时的方式来等待传感器转换完成,采样转换时间如下所示: [align=center]  [align=center]图2.3 温度与湿度采样转换时间2. 单次采样(按需触发),这里默认采用序列采样方式(即每次采样,先后执行一次温度与湿度采样) [align=center]  [align=center]图2.4 单次采样流程**2.3.1 IIC从机地址**由图2.2电路图(ADR0 = 0、ADR1 = 0)可知,当前HDC1000传感器的IIC从机地址为0x40。[indent]注:若使用的是STM32硬件IIC驱动,则传入HAL_I2C_Init()的从机地址是0x80(8位地址形式)[/indent]> /* according to hdc1000 spec */// ADR0 = 0,ADR1 = 0 ==> hdc1000 slave address 0x40(7-bit address)[indent]#define HDC1000_DEVICE_IIC_BUS_ADDRESS 0x40 [/indent] **2.3.2 IIC时序**HDC1000主要IIC时序包括读写配置寄存器(Configuration Register(0x02))、触发采样(rigger Humidity/Temperature Measurement(0x00\0x01))、读取温度与温度(Read Humidity/Temperature Measurement)。读取温度与湿度的IIC时序,如下所示:[align=center]  [align=center]图2.5 读取温度与湿度的IIC时序(序列采样方式)读取温湿度值的IIC时序实例,如下所示[align=center]  [align=center]图2.6 读取温度与湿度IIC实例(序列采样方式)特别注意:HDC1000温度与湿度寄存器位为16bit,高位先发(大端模式),因此读回的数值需要转换为小端模式。对读回的寄存器数据的处理代码如下所示:[indent] if (rt_i2c_transfer((struct rt_i2c_bus_device *)dev->bus, msgs, 1) == 1) [/indent][indent] { [/indent][indent] res = RT_EOK; [/indent][indent] *temp_raw = (buffer[0] << 8) | buffer[1]; [/indent][indent] *humi_raw = (buffer[2] << 8) | buffer[3]; [/indent][indent]} [/indent][indent]else [/indent][indent]{ [/indent][indent] res = -RT_ERROR; [/indent]} **2.3.3 温湿度值结果转换**[align=center]  [align=center]图2.7 温湿度结果转换计算式按照图2.7公式,将获取到的温度\湿度寄存器值转换为实际的温度(℃)与湿度(%RH)。 **3 HDC1000软件包功能设计****3.1 HDC1000软件包功能简介** **3.2 HDC1000软件包功能实现****3.2.1 HDC1000软件包的依赖*** RT-Thread 4.0.0+ * Sensor 组件 * IIC 驱动:HDC1000 设备使用 IIC 进行数据通讯,需要RT-Thread系统 IIC 驱动框架支持; **3.2.2 HDC1000软件包的主要实现文件**[align=center]  [indent]注: Sconscript的编写可参照RT-Thread官方的Scons构建工具说明文档:_https://www.rt-thread.org/document/site/programming-manual/scons/scons/_[/indent]
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
X-Jing007
这家伙很懒,什么也没写!
提问
2
回答
3
被采纳
0
关注TA
发私信
相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread 屏蔽在线软件包的方法
2
RT-Thread OS应用开发实战线上师资培训通知
3
【ci】【github】【bsp】RT-Thread仓库的CI自动编译测试
4
免费解锁MCU超能力!4月AIoT实战培训三城巡演
5
rt-thread主仓 BSP瘦身指南
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
cubemx
ESP8266
WIZnet_W5500
UART
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
msh
ulog
C++_cpp
at_device
本月问答贡献
RTT_逍遥
4
个答案
2
次被采纳
聚散无由
3
个答案
2
次被采纳
踩姑娘的小蘑菇
5
个答案
1
次被采纳
a1012112796
4
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部