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 兼容的温湿度传感器相关推荐

  1. c# iot .net6 树莓派 i2c通讯 读取温湿传感器 芯片sht30代码实例

    这里用c# .net 6 树莓派 i2c通讯 读取温湿传感器 芯片sht30 实例 设备: 1.温湿度传感器sht30 2.树莓派 设备在某宝上可以选购得到 nuget下载引用: Iot.Device ...

  2. OpenCV使用Kinect和其他OpenNI兼容的深度传感器

    使用Kinect和其他OpenNI兼容的深度传感器 使用Kinect和其他OpenNI兼容的深度传感器 使用Kinect和其他OpenNI兼容的深度传感器 通过VideoCapture类支持与Open ...

  3. 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 ...

  4. 香橙派orange pi c# iot .net 读取温湿传感器 芯片sht30 I2C 代码实例

    这里用c# .net 6 香橙派orange pi读取温湿传感器 芯片sht30 I2C 代码实例 设备: 1.温湿度传感器sht30 2.香橙派(记得开启 i2c,开启方法 见香橙派说明书) 设备在 ...

  5. 启明云端分享|ESP8089 pin to pin 替代RTL8189,供应稳定、性价比高!

    ESP8089 功能框图 ESP8089 是一个完整且自成体系的WIFI网络解决方案,能够 搭载软件应用,在配合另一个应用处理器实现所有的WIFI网络的功能时,减轻了另一个处理器的压力. ESP808 ...

  6. via/route blockage/size blockage/wire/pin guide/pin blockage/partition

    1.via 中文名称互连线通孔.我们知道,芯片的连线有不同层的金属互连线相互连接.而Via的作用就是连接这些不同层的金属.如下图所示: 一个完整的通孔是由三层组成的,包括两个互连层和一个cut层,cu ...

  7. 睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片

    睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片 其他完整学习资料和规格书都在我的附件里,希望大家可以相互学习,有错误方面还请大家正,提供的这些关于PHY的资料也是为了让大家更好的去认识, ...

  8. 国产LIN收发器芯片SIT1028,PIN to PIN替代TJA1028

    概述     SIT1028 是一款内部集成高压 LDO 可应用于 LIN 协议控制器和物理总线之间的接口芯片,可应 用于卡车.公交.小汽车和工业控制等领域,传输速率高达 20kbps.SIT1028 ...

  9. AD原理图编译错误:Details Duplicate pins in component Pin ×× and Pin ××

    问题:在画原理图时候,对原理图文件进行编译会报如下错误:Details Duplicate pins in component Pin ×× and Pin ××. 解决方法:这是因为原理图库中的模型 ...

最新文章

  1. 数据库读取image类型发送到前端显示图片
  2. 数组方法关于任意数字类型的数组求最大值解决办法
  3. 多元函数概念思维导图_高等数学 多元函数微分学 知识技巧思维导图 [21考研上岸之旅]...
  4. C指针原理(29)-Ncurses-文本终端的图形
  5. shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形)
  6. mysql 回滚段_史上最牛分析MySQL索引机制的实现!不接受反驳
  7. python requests库api_Python+requests库发送接口入参为xml格式的接口请求
  8. 读书笔记2013第18本:《像外行一样思考,像专家一样实践》
  9. linux vi 出现下划线,Vim高亮当前行(显示为下划线)的解决方案
  10. rem布局 html,移动端h5之rem布局/px2rem
  11. pygame-KidsCanCode系列jumpy-part6-主角挂掉重新开始
  12. PC机中各类存储器的逻辑连接情况
  13. 文件如何生成链接插入到微信公众号,如Word、Excel、Pdf等
  14. js海报制作操作步骤缓存思路求解?
  15. 检测ip和port是否可连接
  16. html和js画圣诞树图片,基于JS2Image实现圣诞树代码
  17. 159 至多包含两个不同字符的最长子串
  18. 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
  19. html5 jquery魔方,基于jquery的魔方插件
  20. TCP/UDP常用端口列表

热门文章

  1. 对数字地和模拟地的理解和分析(原理图设计和pcb布线时需要考虑)
  2. 给select2 jQuery下拉条select美化及功能扩展插件增加拼音筛选功能
  3. 微信小程序在线考试系统 毕业设计(1)首页
  4. win10计算机管理字体糊,win10字体模糊如何解决
  5. 基于Adobe After Effects从去除视频水印到“跟踪运动”替换动态元素(文字)
  6. 03-GateWay过滤器
  7. 打印有时无法唤醒计算机,M227网络打印无法唤醒打印机
  8. Sapphire国际移动设备标识IEMI和国际移动用户标识IMSI控件Sapphire IMEI U
  9. [盈利]移动APP盈利模式简述
  10. oracle安装 sysi,在Oracle 10g 中如何以sys的身份登录isqlplus页面