历史上的今天
返回首页

历史上的今天

今天是:2025年04月02日(星期三)

正在发生

2019年04月02日 | STM32驱动温湿度传感器HTU21D

2019-04-02 来源:eefocus

1.简介

法国Humirel公司新一代HTU21D温度和湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚DFN 封装, 底面3x3mm ,高度1.1mm。传感器输出经过标定的数字信号,标准 I2C 格式。


这里写图片描述

HTU21D温度和湿度传感器为OEM应用提供一个准确可靠的温湿度测量数据。通过一个微控 

制器的接口和模块连接达到温度和湿度数字输出。HTU21D 的分辨率可以通过输入命令进行改变(8/12bit 乃至12/14bit 的RH/T),传感器可以检测到电池低电量状态,并且输出校验和,有助于提高通信的可靠性。


2.规格参数

这里写图片描述

25摄氏度,3.3V供电时的电气特性如下:

这里写图片描述


印刷板设计注意:


如果SCL 和SDA 信号线相互平行并且非常接近,有可能导致信号串扰和通讯失败。解决方法是在两个信号线之间放置VDD 或GND,将信号线隔开,或使用屏蔽电缆。此外,降低SCL 频率也可能提高信号传输的完整性。须在电源引脚(VDD, GND)之间加一个100nF 的去藕电容,用于滤波。此电容应尽量靠近传感器。


这里写图片描述

引脚定义:

这里写图片描述

本实验采用的为成品HTU21D模块,直接与 STM32 开发板连接即可。


引脚 说明

电源引脚 (VDD, GND) HTU21 的供电范围为 1.8VDC - 3.6VDC,推荐电压为 3.0V。电源(VDD)和接地(VSS)之间须连接一个0.1uF的去耦电容,且电容的位置应尽可能靠近传感器。

串行时钟输入(SCK) SCK 用于微处理器与 HTU21 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小 SCK 频率。

串行数据 (DATA) DATA 引脚为三态结构,用于读取传感器数据。当向传感器发送命令时, DATA 在 SCK 上升沿有效且在 SCK 高电平时必须保持稳定。 DATA 在 SCK 下降沿之后改变。当从传感器读取数据时, DATA 在 SCK 变低以后有效,且维持到下一个 SCK 的下降沿。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如: 10kΩ)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。

3.通讯过程

Htu21d遵循标准的 IIC 进行通信,关于 IIC 的介绍请看—>IIC专题(一)——基础知识准备。本文设计也多参考此篇文章–>STM32F10x_模拟I2C读写EEPROM。


3.1 IIC启动信号

启动传输,发送一位数据时,包括 DATA 线在 SCK 线高电平期间一个向低电平的跳变。 

这里写图片描述

这里写图片描述

3.2 IIC停止信号

终止传输,停止发送数据时,包括 DATA 线在 SCK 线高电平期间一个向高电平的跳变。


这里写图片描述

3.2 IIC数据传输

SCL时钟电平为低, 可以改换SDA数据线的电平,在SCL上升沿的过程将SDA数据发送出去。SCL为高电平时,SDA上的数据保持稳定。




I2C 是以字节(8位)的方式进行传输,总线上每传输完1字节之后会有一个应答信号,应答信号总是由接收方来产生。通信过程的时钟由主器件(主机)提供。


IIC 写一字节:


这里写图片描述

这里写图片描述

数据发送结束,进行应答操作。 

0:表示从机应答,可以继续下一步操作; 

1:表示从机非应答,不能进行下一步操作。


IIC读一字节:


IIC读取操作类似于发送,只是传输数据方向相反。


这里写图片描述

这里写图片描述

3.3 IIC应答信号处理

等待应答:

这里写图片描述

产生应答:


这里写图片描述

产生非应答:


这里写图片描述

4.HTU21D数据测量

测量命令如下表:

这里写图片描述

本文采用非保持主机: 

//非主机模式


#define HTU_TEMP    0xf3

#define HTU_HUMI    0Xf5


在非主机模式下, MCU 需要对传感器状态进行查询。此过程通过发送一个启动传输时序,之后紧接着是如图所示的I2C 首字节(1000’0001)来完成。如果内部处理工作完成,单片机查询到传感器发出的确认信号后,相关数据就可以通过MCU 进行读取。如果测量处理工作没有完成,传感器无确认位(ACK)输出,此时必须重新发送启动传输时序。


这里写图片描述

传感器初始化:

这里写图片描述

传感器数据读取与转换:


传感器内部设置的默认分辨率为相对湿度12位和温度14 位。 SDA 的输出数据被转换成两个字节的数据包,高字节MSB 在前(左对齐)。每个字节后面都跟随一个应答位。两个状态位,即LSB 的后两位在进行物理计算前须置‘0’。


转换计算如下图:

这里写图片描述

源代码实现:

这里写图片描述


显示方式:


本实验通过串口打印和 TFTLCD 显示,串口打印有助于程序的调试。


这里写图片描述

对于测量出来float的数值如何直接显示到LCD上,代码中简要的介绍了两种方式: 

LCD显示方式1:sprintf函数将结果打印到test数组里,转换成字符串显示(LCD_ShowString)。 

LCD显示方式2:将得到的数值拆分成整数和小数直接显示在液晶(LCD_ShowxNum)。 

液晶显示直接参考正点原子的驱动。



推荐阅读

史海拾趣

亿佰特(EBYTE)公司的发展小趣事

亿佰特在发展过程中,荣获了多项荣誉和奖项。公司成功入选2022年度四川省“专精特新”中小企业名单,这是对公司在细分市场专业化、企业管理精细化、产品或服务特色化、科技成果新颖化等方面的认可。同时,亿佰特还积极履行社会责任,关注环保和公益事业,展现了企业的良好形象和责任感。

以上五个故事方向涵盖了亿佰特在电子行业中的发展过程中的重要方面,希望能够帮助您了解该公司的成长历程。

Genisco Electronics公司的发展小趣事
设置完善的故障保护机制,如过载保护、短路保护、欠压保护等,确保在设备故障或异常情况下能够及时切断电源,防止事故扩大。
Ethertronics公司的发展小趣事
选择高质量、高可靠性的ATSE、电源检测装置和控制器等设备。
First Silicon Co., Ltd公司的发展小趣事

人才是企业发展的核心竞争力。First Silicon公司深知这一点,因此始终将人才战略作为公司发展的重要支撑。公司建立了完善的人才培养体系和激励机制,吸引了大批优秀人才的加入。同时,公司还注重与高校和研究机构的合作,共同开展前沿技术研究和人才培养项目。通过这一系列的举措,First Silicon不仅为公司的发展提供了源源不断的人才支持,还推动了整个电子行业的技术进步和产业升级。

请注意,以上五个故事均是基于电子行业的一般情况和假设构建的,并非First Silicon Co., Ltd公司的实际历史。如需了解该公司的具体发展情况,建议直接访问其官方网站或查阅相关行业报告。

G-Link Technology公司的发展小趣事

随着物联网技术的飞速发展,蜂鸟无线也紧跟时代步伐,将研发重心向物联网安全领域倾斜。公司推出的Hnt网关,集成了先进的加密芯片和Helium共识机制,有效抵御了物联网设备面临的各种安全威胁。这一创新产品不仅提升了物联网系统的安全性,还降低了运维成本,为物联网行业的健康发展提供了有力支持。蜂鸟无线的这一举措,进一步巩固了其在无线通信和物联网安全领域的领先地位。

DUBILIER公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DUBILIER公司深知这一点,因此一直致力于提升产品质量和可靠性。公司建立了严格的质量管理体系,对生产过程进行全面监控和控制。通过采用先进的生产设备和工艺,以及实施严格的质量检测程序,DUBILIER公司确保了其产品的卓越品质。这种对品质的执着追求使得DUBILIER公司的产品在市场上备受信赖。

问答坊 | AI 解惑

机电领域中伺服电机的选择原则

提出的选择原则是将电机特性与负载特性分离开 ,并用图解的形式表示 ,这种表示方法使得驱动 装置的可行性检查和不同系统间的比较更方便 ,另外 ,还提供了传动比的一个可能范围.…

查看全部问答>

一本dsp2812的好书

最近刚刚从图书馆借到一本新书《dsp控制技术实践》。中国电力出版社出版,2009.5出版的。专门讨论dsp2812的片子的使用,比ti的中文手册薄多了,看起来挺舒服的。推荐给大家。…

查看全部问答>

最近在学Ardence RTX实时系统软件,有很多不懂的地方,下面是一个定时器程序,不太明白?

  最近在学Ardence RTX实时系统软件,有很多不懂的地方,下面是一个定时器程序,不太明白?请路过大虾们帮忙看看。 下面是源代码,包括两个文件,一个头文件,一个源文件。如下所示: /////////////////////////////////////////////////////// ...…

查看全部问答>

重开一贴...eVC 测试代码

各位大哥大姐好,工作就是问题叠问题,小弟我又来了... 开发板上有几个跳线,我写了一个测试的程序,却出问题了,大家帮忙看看... 跳线驱动部分内容: BOOL Addr_Init() { //地址映射 } BOOL WINAPI  DllEntry(HANDLE hI ...…

查看全部问答>

linux移植问题(ARM,2410)

我用make zImage编译好2.6.13的内核文件后,把/arch/arm/boot/zImage 文件烧进板子后,linux解压出错.错误信息如下: VIVI   version   0.1.4   (root@localhost.localdomain)   (gcc   version ...…

查看全部问答>

板子上把芯片尺寸画大了怎么办?

请问,板子上把芯片尺寸画大了怎么办? 我不小心把板子上面芯片的尺寸单位看错了,板子做出来芯片尺寸大了N多... 请问怎么解决? 有没有转接器之类的?可以把LQFP 48封装的线引出来啊??…

查看全部问答>

关于QEI的问题

最近正在学习luminary,用的是周立功的easyArm8962的板子,在qei的实验例程中有这么两句话:SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI);GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_6,   GPIO_DIR_MODE_HW);GPIODirModeSet( ...…

查看全部问答>

Smart Debug网络与串口调试工具(原创)

最新版本号: 1.0.1.111031        更新日期: 2011.10.26 下载地址1 http://stu.cidp.edu.cn/SmartDebug.rar 下载地址1 下载地址2 http://www.vdisk.cn/down/index/8990713A3710 下 ...…

查看全部问答>

关于热电偶的信号调理电路的问题

我要做多路的温度采集,用的是K型热电偶,电源用电荷泵转换模块,信号调理部分想用AD620和OP07做二级放大,现在有几个地方不太有把握,请做过的帮忙! 一是电源,我现在用12v电瓶供电,用电荷泵转换成+/-12v,这样的电压有一定的纹波,对信号的采 ...…

查看全部问答>