STM32驱动温湿度传感器HTU21D

时间:2019-4-9 分享到:

1.简介

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

STM32驱动温湿度传感器HTU21D

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

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

2.规格参数

STM32驱动温湿度传感器HTU21D

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

STM32驱动温湿度传感器HTU21D

印刷板设计注意:

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

STM32驱动温湿度传感器HTU21D

引脚定义:

STM32驱动温湿度传感器HTU21D

本实验采用的为成品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 线高电平期间一个向低电平的跳变。 

STM32驱动温湿度传感器HTU21D

STM32驱动温湿度传感器HTU21D

3.2 IIC停止信号

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

STM32驱动温湿度传感器HTU21D

3.2 IIC数据传输

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

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

IIC 写一字节:

STM32驱动温湿度传感器HTU21D

STM32驱动温湿度传感器HTU21D

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

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

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

IIC读一字节:

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

STM32驱动温湿度传感器HTU21D

STM32驱动温湿度传感器HTU21D

3.3 IIC应答信号处理

等待应答:

STM32驱动温湿度传感器HTU21D

产生应答:

STM32驱动温湿度传感器HTU21D

产生非应答:

STM32驱动温湿度传感器HTU21D

4.HTU21D数据测量

测量命令如下表:

STM32驱动温湿度传感器HTU21D

本文采用非保持主机: 

//非主机模式

#define HTU_TEMP    0xf3

#define HTU_HUMI    0Xf5

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

STM32驱动温湿度传感器HTU21D

传感器初始化:

STM32驱动温湿度传感器HTU21D

传感器数据读取与转换:

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

转换计算如下图:

STM32驱动温湿度传感器HTU21D

源代码实现:

STM32驱动温湿度传感器HTU21D

显示方式:

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

STM32驱动温湿度传感器HTU21D

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

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

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

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

关键字:STM32驱动  温湿度传感器  HTU21D

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2019/ic-news040243700.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32CubeMX学习教程之十:硬件I2C读写AT24C02
下一篇:最后一页

STM32驱动温湿度传感器HTU21D
关注eeworld公众号
快捷获取更多信息
STM32驱动温湿度传感器HTU21D
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32驱动步进电机

步进电机是将电脉冲信号转变为角位移或线位移,可以通过控制脉冲来控制,因此比一般的电机更精准。这篇文章将会讲述我对四线两项步进电机的调试经验。1.步进电机以及THB7128的接线THB7128步进电机驱动有两个接线口,J4口与stm32的IO口相接,J2口与步进电机和电源相接。J2口有6个端子,从两个端口旁的接口定义可以看出,接口分别为B-,B+,A-,A+,V-,V+。其中V+与9~32V的电源相接,V-接电源地,其余的接口B+,B-一组,A+,A-一组与步进电机的两组同相线相接(注:想要判断步进电机哪两根线同相,只需用万用表测量,短接的即为同相)。J4口同样可以从端口定义看出,分别有CP+,CP-,DIR+,DIR-,EN+
发表于 2019-03-18

STM32驱动温湿度传感器HTU21D

基于STM32的DS18B20驱动

#include "ds18b20.h"#include "delay.h" short tmp_arg; //温度平滑滤波//复位DS18B20void DS18B20_Rst(void)   {                 DS18B20_IO_OUT(); //SET PG11 OUTPUT    DS18B20_DQ_OUT=0; //拉低DQ    delay_us(750);    &nbsp
发表于 2019-03-07

STM32 SPI2读W25Q128驱动

扇区//Dst_Addr:扇区地址 根据实际容量设置//擦除一个山区的最少时间:150msvoid W25QXX_Erase_Sector(u32 Dst_Addr)   {  //监视falsh擦除情况,测试用       Dst_Addr*=4096;    W25QXX_Write_Enable();                  //SET WEL      W25QXX_Wait_Busy
发表于 2019-03-07

IIC专题(二)——STM32驱动AT24C02

1.概述MiniSTM32 开发板板载的 EEPROM 芯片型号为 24C02。该芯片的总容量是 256个字节,该芯片通过 IIC 总线与外部连接。这里直接采用原子板上的 AT24C02 ,主要是软件编程方面的学习。2.硬件连接A2、A1、A0 三个引脚直接接地。供电: (VCC = 2.7V to 5.5V)器件地址设置:对于AT24C02:Addr—>0xA0(写)/ 0xA1(读)。单字节写入:按页写入:从当前地址读出数据;随机读取:顺序读出:3.例程分析(一)IIC 部分实现代码包括 IIC 的初始化(IO 口)、 IIC 开始、 IIC 结束、 ACK、 IIC 读写等功能,在其他函数里面,只需要调用相关的 IIC
发表于 2019-01-09

STM32驱动温湿度传感器HTU21D

SPI专题(二)——STM32驱动FLASH(W25Q64)

320M)。1.1 硬件连接与 STM32 的引脚连接如下:这里是使用SPI1配置。STM32引脚 对应SPI功能PA2 片选CSPA5 时钟SCKPA6 MISOPA7 MOSISTM32 的 SPI 功能很强大, SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议(仅大容量型号支持)。1.2 SPI通讯的通讯时序SPI协议定义了通讯的起始和停止信号、数据有效性、时钟同步等环节。这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK的每个
发表于 2019-01-09

STM32驱动温湿度传感器HTU21D

STM32驱动WS2812D全彩LED

自动整形转发技术, 使得该像素点的级联个数不受信号传送的限制, 仅仅受限信号传输速度要求。2.1 数据传输对于 ns 延时,这里采用__nop() 实现,用 KEIL 调试了一下,发现几处的__nop()的延时不太一样,对于 72M主频,最小延时应该是:1/72000000=13.9ns,查询了一些资料,比较精确的延时还是得用示波器看一看。2.2 24bit 数据结构2.3 电路连接图出处:天际智联STM32F103开源四轴3.软件实现头文件:#define     RGB_LED     GPIO_Pin_9#define    &nbsp
发表于 2019-01-09

STM32驱动温湿度传感器HTU21D

版权所有:https://www.shgopi.cn 转载请注明出处