首页 > 其他分享 >SHT20温湿度传感器数据读取/HAL/硬件I2C

SHT20温湿度传感器数据读取/HAL/硬件I2C

时间:2023-08-28 21:44:10浏览次数:52  
标签:SHT20 I2C HAL 温湿度 CMD DataBuff define

SHT20 Command

Hold/No Hold Master Mode

Hold Master Mode : SHT20在测量完之前会拉低SCL,暂停通信。

NoHold Master mode :测量未完成,SHT20 只回应 NACK

*数据最后两位是状态位,计算时置0

#include "S_SHT20.h"
#include "S_IIC.h"
#include "stdio.h"
/*
*  SHT20 地址:1000 000
*  hold master 模式
*  温度:1110 0011
   湿度:1110 0101
   no hold master 模式
*  温度:1111 0011
   湿度:1111 0101
   
   写寄存器:1110 0110
   读寄存器:1110 0111
   
   软重置:1111 1110
   
   
*/

#define SHT20_address 0x80
/*SHT20 command*/
#define CMD_T_Measure_Hold      0xe3
#define CMD_RH_Measure_Hold     0xe5
#define CMD_T_Measure_noHold    0xf3
#define CMD_RH_Measure_noHold   0xf5
#define CMD_Write_userRegister  0xe6
#define CMD_Read_userRegister   0xe7
#define CMD_SoftReset           0xfe

/*温度测量函数,返回温度值*/
float SHT20_Get_Temperature(void)
{
    uint8_t cmd = CMD_T_Measure_noHold;
    uint8_t DataBuff[3] = {0};
    uint16_t DataBuff_Link = 0;
    float  SHT20_Temperature = 0;
    
    HAL_I2C_Master_Transmit(&h_I2C_1,SHT20_address,&cmd,1,100);
    HAL_Delay(100);
    HAL_I2C_Master_Receive(&h_I2C_1,SHT20_address,DataBuff,3,100);
    
    DataBuff_Link =(uint16_t)DataBuff[0];
    DataBuff_Link=DataBuff_Link<<8;
    DataBuff_Link=DataBuff_Link + (DataBuff[1] & 0xfc);

    //printf("DataBuff_Link = %d\n",DataBuff_Link);
    
    
    SHT20_Temperature = -46.85+175.72*((float)DataBuff_Link/65536);
    return SHT20_Temperature;

}
/*湿度测量函数,返回湿度值*/
float SHT20_Get_RelativeHumidity(void)
{
    uint8_t cmd = CMD_RH_Measure_noHold;
    uint8_t DataBuff[3] = {0};
    uint16_t DataBuff_Link = 0;
    float  SHT20_Humidity = 0;
    
    HAL_I2C_Master_Transmit(&h_I2C_1,SHT20_address,&cmd,1,100);
    HAL_Delay(100);
    HAL_I2C_Master_Receive(&h_I2C_1,SHT20_address,DataBuff,3,100);
    
    DataBuff_Link =(uint16_t)DataBuff[0];
    DataBuff_Link=DataBuff_Link<<8;
    DataBuff_Link= DataBuff_Link + (DataBuff[1] & 0xfc);
    

    //printf("DataBuff_Link = %d\n",DataBuff_Link);
    
    
    SHT20_Humidity = -6+125*((float)DataBuff_Link/65536);
    return SHT20_Humidity;

}
/*使用串口打印温度和湿度值*/
void SHT20_test(void )
{

    printf("Temperature = %f\n",SHT20_Get_Temperature());
    HAL_Delay(20);
    printf("Humidity = %f\n",SHT20_Get_RelativeHumidity());


}

打印读取结果到串口

数据参考

 

标签:SHT20,I2C,HAL,温湿度,CMD,DataBuff,define
From: https://www.cnblogs.com/Yannnnnn/p/17663453.html

相关文章

  • xsschallenge通关(11-15)
    level11老规矩,先查看源码,做代码审计:<?phpini_set("display_errors",0);$str=$_GET["keyword"];$str00=$_GET["t_sort"];$str11=$_SERVER['HTTP_REFERER'];$str22=str_replace(">","",$str11);$str33=st......
  • xsschallenge通关(1-10)
    level1这一关很简单,标准的xss注入,打开hackbar,输入<script>alert(/xss/)</script>点击EXECUTE,通关!level2这一关有一个搜索框,输入<script>alert(/xss/)</script>发现直接将这段JS代码当做HTML实体,即普通字符查看源代码,发现有htmlspecialchars()函数,会转换双引号、单引号和尖角号成H......
  • CAN通信知识梳理及在Stm32上的应用(HAL库)
    文章目录一.CAN通信简介二.硬件连接三.CAN总线上的电平信号四.CAN帧的种类(1)遥控帧(2)数据帧五.CAN的仲裁方法六.CAN在Stm32上的应用(1)CubeMX上CAN的配置(2)配置CAN过滤器32位列表模式16位列表模式32位掩码模式(3)CAN数据的发送与接收六.参考文档七.同系列......
  • 什么是档案馆档案十二防 【档案十二防温湿度监控系统】
    档案十二防是指档案保管的十二项综合安全保护措施,包括防高温、防潮湿、防盗、防火、防霉、防光、防尘、防虫、防氧化、防意外损坏、防病毒和防黑客攻击等要求。这些措施是档案馆(室)对档案进行系统存放和安全保护的重要内容和要求,旨在维护档案的完整与安全,保证档案的正确使用和长......
  • 什么是档案十防【档案十防温湿度监控系统】
    档案十防是指档案保管的十项综合安全保护措施,包括防高温、防潮湿、防盗、防火、防霉、防光、防尘、防虫、防氧化、防意外损坏等要求。这些措施是档案馆(室)对档案进行系统存放和安全保护的重要工作和要求,旨在维护档案的完整与安全,保证档案的正确使用和长期保存。 一、防高温高......
  • 《Datawhale人工智能培养方案》发布!
     Datawhale干货 开源贡献:Datawhale团队结合周志华老师的西瓜书,我们发布了第一个开源教程《Pumpkinbook-南瓜书》,到现在我们已经开源了51份学习教程,共获得Github 4.3w star。你认为Datawhale体现的价值?Datawhale团队已经有200多个成员,我们在一起坚持做开源的意义和价值是什么?其......
  • Halcon 深度学习的例子错误set_deep_ocr_param (DeepOcrHandle, 'device', DLDevice)
    set_deep_ocr_param(DeepOcrHandle,'device',DLDevice)这句话报错设置的设备不对。解决办法是:注释掉这句代码在第27行代码:create_deep_ocr([],[],DeepOcrHandle)下面加上这句:set_suitable_device_in_ocr_handle(DeepOcrHandle)就可以解决问题。......
  • halcon 笔记 算子
    1.read_image()*读取图像11.pngread_image(Image,‘11.png’)   *计算图像的通道数count_channels(Image,Num)*循环读取每个通道的图像forindex:=1toNumby1*获取多通道图像中指定的通道图像access_channel(Image,channel,index)endfor*分解通道decompos......
  • Enhancing Vehicle Connectivity: Overcoming Challenges of 4G/LTE Connectivity in
    EnhancingVehicleConnectivity:OvercomingChallengesof4G/LTEConnectivityinDenseUrbanAreasInthemodernera,vehicularconnectivityhasbecomeanindispensableaspectofourlives.Fromnavigationtoinfotainmentandremotediagnostics,vehiclesre......
  • vue3 - 警告 `shallowRef` instead of `ref` - 解决
    完整警告[Vuewarn]:VuereceivedaComponentwhichwasmadeareactiveobject.Thiscanleadtounnecessaryperformanceoverhead,andshouldbeavoidedbymarkingthecomponentwith`markRaw`orusing`shallowRef`insteadof`ref`.这是因为参数内容有组件,......