GXHT30温湿度传感器——与SHT30 pin to pin 兼容的温湿度传感器
GXHT30温湿度传感器——与SHT30 pin to pin 兼容的温湿度传感器
文章目录
目录
GXHT30温湿度传感器——与SHT30 pin to pin 兼容的温湿度传感器
文章目录
前言
一、传感器参数
二、使用示例(STM8l驱动)
1.IO口配置
2.配置SDA输入输出
3.通信子函数
4.读取数据
三.总结
前言
GXHT30温湿度传感器是一款国产温湿度I2C传感器芯片,由北京中科银河芯研发并量产,其性能与通信方式与SHT30完全兼容,可pin to pin替代SHT30,本文将针对该传感器的一些工作参数与通信进行介绍。
一、传感器参数
GXHT30温湿度传感器的工作参数与SHT30相差不大,对比如下。
GXHT30 SHT30
工作电压:2.4~5.5V 工作电压:2.4~5.5V
精度:±3%RH ,±0.2℃ 精度:±3%RH ,±0.3℃
接口:I2C 接口:I2C
尺寸:2.5*2.5*0.9(mm) 尺寸:2.5*2.5*0.9(mm)
如图为找第三方设计的贴了防尘透气膜的GXHT30温湿度传感器demo。
二、使用示例(STM8l驱动)
1.IO口配置
I2C端口初始化:使用C0和C1分别配置为SDA和SCL。
#define I2C_SCL GPIO_Pin_1
#define I2C_SDA GPIO_Pin_0
#define GPIO_I2C GPIOC#define I2C_SCL_H GPIO_SetBits(GPIO_I2C,I2C_SCL)
#define I2C_SCL_L GPIO_ResetBits(GPIO_I2C,I2C_SCL)#define I2C_SDA_H GPIO_SetBits(GPIO_I2C,I2C_SDA)
#define I2C_SDA_L GPIO_ResetBits(GPIO_I2C,I2C_SDA)
/****************************************************************************
* Function Name : IIC_Config
* Description : 初始化GPIO.(GXCAS-GXHT30)
* Input : None
* Output : None
* Return : None
****************************************************************************/
void I2C_INIT()
{GPIO_Init(GPIO_I2C, I2C_SCL, GPIO_Mode_Out_OD_HiZ_Fast);GPIO_Init(GPIO_I2C, I2C_SDA, GPIO_Mode_Out_OD_HiZ_Fast);I2C_SCL_H;I2C_SDA_H;}
2.配置SDA输入输出
/*******************************************************************************
* 函 数 名 : I2C_SDA_OUT
* 函数功能 : SDA输出配置
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void I2C_SDA_OUT()
{GPIO_Init(GPIO_I2C, I2C_SDA, GPIO_Mode_Out_OD_HiZ_Fast);
}/*******************************************************************************
* 函 数 名 : I2C_SDA_IN
* 函数功能 : SDA输入配置
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void I2C_SDA_IN(void)
{GPIO_Init(GPIO_I2C, I2C_SDA, GPIO_Mode_In_FL_No_IT);
}
3.通信子函数
这里是I2C通信的标准格式,就不多作赘述,需要注意的是 I2C_Read_Byte(u8 ack)函数中的 while(!GPIO_ReadInputDataBit(GPIO_I2C,I2C_SCL));这一句,因为SHT30在读取数据时有两种模式,如下图:
在后面读取数据时我使用了clock stretching模式命令,因此温湿度数据转换好时SCL会拉高。如果不使用clock stretching模式命令,则在发送转换命令后需要等待约20ms,然后再发送传感器地址读温湿度。
//产生起始信号
void I2C_Start(void)
{I2C_SDA_OUT();I2C_SDA_H;I2C_SCL_H;delay_10us(1);I2C_SDA_L;delay_10us(1);I2C_SCL_L;
}//产生停止信号
void I2C_Stop(void)
{I2C_SDA_OUT();I2C_SCL_L;I2C_SDA_L;I2C_SCL_H;delay_10us(1);I2C_SDA_H;delay_10us(1);
}//主机产生应答信号ACK
void I2C_Ack(void)
{I2C_SDA_OUT();I2C_SCL_L;I2C_SDA_OUT();I2C_SDA_L;delay_10us(1);I2C_SCL_H;delay_10us(1);I2C_SCL_L;
}//主机不产生应答信号NACK
void I2C_NAck(void)
{I2C_SDA_OUT();I2C_SCL_L;I2C_SDA_H;I2C_SCL_H;delay_10us(1);I2C_SCL_L;
}
//等待从机应答信号
//返回值:1 接收应答失败
// 0 接收应答成功
u8 I2C_Wait_Ack(void)
{u8 tempTime=0;I2C_SDA_IN();I2C_SDA_H;//delay_us(1);I2C_SCL_H;//delay_us(1);while(GPIO_ReadInputDataBit(GPIO_I2C,I2C_SDA)){tempTime++;if(tempTime>250){I2C_Stop();return 1;} }I2C_SCL_L;return 0;
}
//I2C 发送一个字节
void I2C_Send_Byte(u8 txd)
{u8 i=0;I2C_SDA_OUT();I2C_SCL_L;//拉低时钟开始数据传输for(i=0;i<8;i++){if((txd&0x80)>0) //0x80 1000 0000I2C_SDA_H;elseI2C_SDA_L;txd<<=1;I2C_SCL_H;//delay_us(2); //发送数据I2C_SCL_L;//delay_us(2);}
}//I2C 读取一个字节u8 I2C_Read_Byte(u8 ack)
{u8 i=0,receive=0;I2C_SDA_IN();for(i=0;i<8;i++){I2C_SCL_L;//delay_us(2);I2C_SCL_H;while(!GPIO_ReadInputDataBit(GPIO_I2C,I2C_SCL));receive<<=1;if(GPIO_ReadInputDataBit(GPIO_I2C,I2C_SDA))receive++;//delay_us(1); }if(ack==0)I2C_NAck();elseI2C_Ack();return receive;
}
4.读取数据
void GXHT30_read_result(u8 addr)
{u16 tem,hum;//u16 tem1[8];u16 buff[6];//float Temperature1[129]={0};//float Temperature2=0;float Temperature=0;float Humidity=0;I2C_Start();I2C_Send_Byte(addr<<1 | write);//0I2C_Wait_Ack();I2C_Send_Byte(0x2C);I2C_Wait_Ack();I2C_Send_Byte(0x10);I2C_Wait_Ack();I2C_Stop();delay_10us(5);I2C_Start();I2C_Send_Byte(addr<<1 | read);//1if(I2C_Wait_Ack()==0){I2C_SDA_IN();buff[0]=I2C_Read_Byte(1);buff[1]=I2C_Read_Byte(1);buff[2]=I2C_Read_Byte(1);buff[3]=I2C_Read_Byte(1);buff[4]=I2C_Read_Byte(1);buff[5]=I2C_Read_Byte(0);I2C_Stop();}tem = ((buff[0]<<8) | buff[1]);//hum = ((buff[3]<<8) | buff[4]);//Temperature= (175.0*(float)tem/65535.0-45.0) ;// T = -45 + 175 * tem / (2^16-1)Humidity= (100.0*(float)hum/65535.0);// RH = hum*100 / (2^16-1)hum=0;tem=0;
}
此函数用于读取芯片转换好的温度与湿度数据。需要注意的是在传感器的SCL和SDA接口需要加上拉电阻,4.7或者10K都可以,此外芯片的ADDR接口如果接地,则芯片地址为0X44,如果接高电平则为0X45。这一点也和SHT30一致。
三.总结
以上程序是使用STM8L152来驱动GXHT30的代码,GXHT30温湿度传感器与SHT30兼容,因此此程序可驱动两颗传感器。
ps:15665169484
GXHT30温湿度传感器——与SHT30 pin to pin 兼容的温湿度传感器相关推荐
- c# iot .net6 树莓派 i2c通讯 读取温湿传感器 芯片sht30代码实例
这里用c# .net 6 树莓派 i2c通讯 读取温湿传感器 芯片sht30 实例 设备: 1.温湿度传感器sht30 2.树莓派 设备在某宝上可以选购得到 nuget下载引用: Iot.Device ...
- OpenCV使用Kinect和其他OpenNI兼容的深度传感器
使用Kinect和其他OpenNI兼容的深度传感器 使用Kinect和其他OpenNI兼容的深度传感器 使用Kinect和其他OpenNI兼容的深度传感器 通过VideoCapture类支持与Open ...
- AHT20温湿度传感器STM32-I2C驱动,替代DHT11/DHT12/AM2320/SHT20/SHT30,IIC代码兼容AHT10/15-MEMS温湿度传感器
AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器,ADC位数为20Bit,具有体积小.精度高.成本低等优点.相较于AHT10,最显著的变化是体积由 5*4*1.6mm,缩小到 3*3*1.0 ...
- 香橙派orange pi c# iot .net 读取温湿传感器 芯片sht30 I2C 代码实例
这里用c# .net 6 香橙派orange pi读取温湿传感器 芯片sht30 I2C 代码实例 设备: 1.温湿度传感器sht30 2.香橙派(记得开启 i2c,开启方法 见香橙派说明书) 设备在 ...
- 启明云端分享|ESP8089 pin to pin 替代RTL8189,供应稳定、性价比高!
ESP8089 功能框图 ESP8089 是一个完整且自成体系的WIFI网络解决方案,能够 搭载软件应用,在配合另一个应用处理器实现所有的WIFI网络的功能时,减轻了另一个处理器的压力. ESP808 ...
- via/route blockage/size blockage/wire/pin guide/pin blockage/partition
1.via 中文名称互连线通孔.我们知道,芯片的连线有不同层的金属互连线相互连接.而Via的作用就是连接这些不同层的金属.如下图所示: 一个完整的通孔是由三层组成的,包括两个互连层和一个cut层,cu ...
- 睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片
睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片 其他完整学习资料和规格书都在我的附件里,希望大家可以相互学习,有错误方面还请大家正,提供的这些关于PHY的资料也是为了让大家更好的去认识, ...
- 国产LIN收发器芯片SIT1028,PIN to PIN替代TJA1028
概述 SIT1028 是一款内部集成高压 LDO 可应用于 LIN 协议控制器和物理总线之间的接口芯片,可应 用于卡车.公交.小汽车和工业控制等领域,传输速率高达 20kbps.SIT1028 ...
- AD原理图编译错误:Details Duplicate pins in component Pin ×× and Pin ××
问题:在画原理图时候,对原理图文件进行编译会报如下错误:Details Duplicate pins in component Pin ×× and Pin ××. 解决方法:这是因为原理图库中的模型 ...
最新文章
- 数据库读取image类型发送到前端显示图片
- 数组方法关于任意数字类型的数组求最大值解决办法
- 多元函数概念思维导图_高等数学 多元函数微分学 知识技巧思维导图 [21考研上岸之旅]...
- C指针原理(29)-Ncurses-文本终端的图形
- shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形)
- mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳
- python requests库api_Python+requests库发送接口入参为xml格式的接口请求
- 读书笔记2013第18本:《像外行一样思考,像专家一样实践》
- linux vi 出现下划线,Vim高亮当前行(显示为下划线)的解决方案
- rem布局 html,移动端h5之rem布局/px2rem
- pygame-KidsCanCode系列jumpy-part6-主角挂掉重新开始
- PC机中各类存储器的逻辑连接情况
- 文件如何生成链接插入到微信公众号,如Word、Excel、Pdf等
- js海报制作操作步骤缓存思路求解?
- 检测ip和port是否可连接
- html和js画圣诞树图片,基于JS2Image实现圣诞树代码
- 159 至多包含两个不同字符的最长子串
- 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
- html5 jquery魔方,基于jquery的魔方插件
- TCP/UDP常用端口列表
热门文章
- 对数字地和模拟地的理解和分析(原理图设计和pcb布线时需要考虑)
- 给select2 jQuery下拉条select美化及功能扩展插件增加拼音筛选功能
- 微信小程序在线考试系统 毕业设计(1)首页
- win10计算机管理字体糊,win10字体模糊如何解决
- 基于Adobe After Effects从去除视频水印到“跟踪运动”替换动态元素(文字)
- 03-GateWay过滤器
- 打印有时无法唤醒计算机,M227网络打印无法唤醒打印机
- Sapphire国际移动设备标识IEMI和国际移动用户标识IMSI控件Sapphire IMEI U
- [盈利]移动APP盈利模式简述
- oracle安装 sysi,在Oracle 10g 中如何以sys的身份登录isqlplus页面