嵌入式 STM32 SHT31温湿度传感器
目录
简介
1、原理图
2、时序说明
数据传输
起始信号
结束信号
3、SHT31读写数据
SHT31指令集
读数据
温湿度转换
4、温湿度转换应用
sht3x初始化
读取温湿度
简介
什么是SHT31? 一主机多从机--通过寻址的方式--每个从机都有唯一的地址(器件地址0x44+引脚地址)<<1 + 读写位(读1写0)
SHT31新一代 Sensirion 湿度和温度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚 DFN 封装, 底面 3 x 3mm ,高度 1.1mm。传感器输出经过标定的数字信号,标准 I2C 格式。
1、原理图
配置为通用开漏输出。
PB6--SCL
PB7--SDA
器件地址 引脚地址--ADDR引脚的高低电平
0x44+ 0
1
2、时序说明
数据传输
SDA 引脚用于传感器的数据输入和输出。当向传感器发送命令时, SDA 在串行时钟(SCL)的上升沿
有效, 且当 SCL 为高电平时, SDA 必须保持稳定。在 SCL 下降沿之后, SDA 值可被改变。为确保通讯
安全, SDA 的有效时间在 SCL 上升沿之前和下降沿之后应该分别延长至 TSU and THO -参考图 9。当从传感器读取数据时, SDA 在 SCL 变低以后有效(TV),且维持到下一个 SCL 的下降沿 。
为避免信号冲突,微处理器(MCU)必须只能驱动SDA 和 SCL 在低电平。需要一个外部的上拉电阻(例如: 10kΩ)将信号提拉至高电平。上拉电阻通常可能已包含在微处理器的 I/O 电路中。
起始信号
结束信号
3、SHT31读写数据
SHT31指令集
了解一下如下SHT31命令集:
读数据
工作顺序为:先发送IIC通信开始标志Start后,写入左移一位的地址,并将空出来的位写0表示写数据。当收到传感器应答后,即可发送命令的高八位,再次等待应答,再发送余下的低八位。然后等待ACK应答即可。
(读 R:‘1’,写 W:‘0’)。在第 8 个 SCL时钟下降沿之后,通过拉低 SDA 引脚(ACK 位),指示传感器数据接收正常。
校验:发送一次读取指令,收到6字节数据;期中1、2字节数温度的,第三字节是温度的校验字节;4、5字节是湿度的,第6字节是湿度的校验字节。校验方式采用。
温湿度转换
4、温湿度转换应用
sht3x初始化
读取温湿度
/*********************************************************************************************************
* 函 数 名 : Sht3x_Read_TemperatureHumidity
* 功能说明 : 读取SHT3x温湿度数据
* 形 参 : HT:存储温湿度的结构体指针
* 返 回 值 : 无
*********************************************************************************************************/
int Sht3x_Read_TemperatureHumidity(Sht3x_TypeDef *temp)
{unsigned char buff[6] = {0};unsigned char i = 0;IIC_Start(); //起止信号IIC_WriteByte(SHT3X_ADDR<<1 | IIC_WRITE); //器件地址+写if(IIC_Wait_ACK() == ACK){ //对方应答了,继续执行IIC_WriteByte(SHT3X_READ_TEMP_HUM>>8); //命令的高位if(IIC_Wait_ACK() == ACK){ //对方应答了,继续执行IIC_WriteByte(SHT3X_READ_TEMP_HUM&0xff); //命令的低位if(IIC_Wait_ACK() == ACK){ //对方应答了,继续执行do{if(++i > 20){return 4;}IIC_Stop();Delay_Ms(2); //等待对方采集好数据IIC_Start();IIC_WriteByte(SHT3X_ADDR<<1 | IIC_READ);//询问是否采集好了数据}while(IIC_Wait_ACK() != ACK); //如果条件成立,表示传感器采集数据未完成for(i=0; i<5; i++){buff[i] = IIC_ReadByte(ACK);}buff[5] = IIC_ReadByte(NACK);IIC_Stop();}//转换温湿度
if(crc8(buff, 2) == buff[2] && crc8(&buff[3], 2) == buff[5])
{temp->temperature = (buff[0]<<8|buff[1])/65535.0*175-45;temp->humidity = (buff[3]<<8|buff[4])/65535.0*100;
}
嵌入式 STM32 SHT31温湿度传感器相关推荐
- stm32+HTU21D温湿度传感器通过usart1发送温湿度数据在串口助手显示
stm32+HTU21D温湿度传感器 这里就不拍实物图了,我用的是下面这款HTU21D ic是stm32f103vet6 工程代码是io口模拟i2c和传感器通讯 PB6-SCL,PB7-SDA usa ...
- HT66F2390/STM32——AM2320温湿度传感器
1.说明 AM2320 数字温湿度传感器采用单总线.标准 I²C 两种通信方式.本文主要基于HT66F2390单片机,采用单总线通讯,实现AM2320传感器数据获取.关于AM2320传感器的使用,可参 ...
- 嵌入式Linux温湿度报警系统,嵌入式Linux下温湿度传感器的设计与实现
采集 温湿度 计算机系统应用 年第 期 嵌入式 下温湿度传感器的设计与实现① 陈博刘锦高 摘要 华东师范大学电子科学技术系上海 在嵌入式应用领域,需要测量周围环境的质量对生产和工作进行监控和预警.通过 ...
- STM32使用温湿度传感器
前言 MDK5(Keil5)软件:uVision5 IDE 集成开发环境,是目前针对 ARM 处理器,尤其是 Cortex M 内核处理器的最佳开发工具. 本项目采用ARM结构中最为代表的Cortex ...
- 基于I2C协议利用STM32进行温湿度传感器的数据采集
目录 一.I2C总线通信协议的介绍 1.I2C简介 2.I2C总线时序图 3.五种速率 4.四种信号 5.I2C的优缺点 6.软件IIC和硬件IIC 二.创建工程 1.实验目的 2.工具的选择 3.相 ...
- SHT-31温湿度传感器资料整理
传感器介绍:SHT-31是一款低成本环境温湿度检测模块. 工作电压 2.4-5.5v 功耗小,体积小,采用DFN封装工艺.其工作原理,是通过单片机读取温度湿度数据,IIC通信方式输出. 传感器特点:体 ...
- STM32 驱动温湿度传感器 HTU21D
前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...
- STM32驱动温湿度传感器HTU21D
https://blog.csdn.net/wwt18811707971/article/details/80034047 1.简介 法国Humirel公司新一代HTU21D温度和湿度传感器在尺寸与智 ...
- MSP430 单片机 SHT30 SHT31 温湿度传感器 MSP430F5529 MSP430G2553 程序
SHT30和SHT31程序是一样的 手册是一样的 寄存器是一样的 操作都是一样的. 唯一 不同点是:SHT31的湿度波动小,测量较准确. 推荐打开SHT3X的周期测量模式,然后一直循环读取寄存器即可, ...
最新文章
- 我的学习之路_第十八章_SQL语句
- 万字长文 | 一文带你读懂账号体系
- 可以忽略的:BASH:/:这是一个目录
- 使用matlab内存不足,Matlab内存不足问题(Out of memory)
- 前端学习(1815):前端调试之css flex 练习1
- vue 修改模板{{}}标签_vue-admin-template模板添加tagsview
- 腾讯大数据之TDW计算引擎解析——Shuffle
- SCOM2012SP1环境准备和安装
- RFC2616中文版(8)连接
- 开课吧:为什么AI工程师都要懂一点架构呢?
- java经典算法(二)---zws
- 数据库设计-视图与中间表的比较
- 解决Ubuntu系统上网速度慢的问题
- OPCClient远程连接OPC服务器配置手册
- 计算机名词解释显存,显卡名词解释之显存类型
- JavaScript 生成弹性透明的图片放大代码
- java生成二维码合成背景图
- 程序员跳槽一次到底能涨多少?今天带你见识下跳槽天花板
- 计算机 修改 虚拟ip,怎么样在电脑中设置虚拟IP地址?
- 关于C语言中的重点转义字符详解