目的
驱动hs3003温湿度计
步骤
- 在原来墨水屏的工程基础上添加HS3003的驱动。
- 新建hs3003.c/hs3003.h,并打hs3003.c加入工程。


- 周转了半天,还得改回来用软件i2c来驱动。hs3003.c驱动程序如下:
#include "hs3003.h"
#include "software_i2c.h"
#include "log.h"
#define I2CT_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2CT_LONG_TIMEOUT ((uint32_t)(20 * I2CT_FLAG_TIMEOUT))
#define SI2C_SDA_GPIOx GPIOB
#define SI2C_SCL_GPIOx GPIOB
#define SI2C_SDA_Pin GPIO_PIN_8
#define SI2C_SCL_Pin GPIO_PIN_9
static SI2C_HANDLE SI2C_handle;
void i2c_master_init(){
log_info("\\n this is a software i2c master demo\\r\\n");
if(SI2C_Init(&SI2C_handle,SI2C_SDA_GPIOx, SI2C_SCL_GPIOx, SI2C_SDA_Pin, SI2C_SCL_Pin, 5) == false)
{
log_info("software i2c init fail \\r\\n");
while(1);
}
}
uint32_t Humiture_HS3003_ReadData_Raw(void )
{
uint8_t rx_buf[4] = {0};
uint16_t humi, temp;
float tmp_f = 0.0;
float humi_f,temp_f;
SI2C_MasterWrite(&SI2C_handle,I2C_SLAVE_ADDR, NULL, 0);
//8bit->1.2ms
//10bit->2.72ms
//12bit->9.10ms
//14bit->33.90ms
Delay_ms(40);
__retry:
SI2C_MasterRead(&SI2C_handle, I2C_SLAVE_ADDR, rx_buf, 4);
// log_info("%x,%x,%x,%x\\n", rx_buf[0], rx_buf[1], rx_buf[2], rx_buf[3]);
// log_info("state:%x\\n", rx_buf[0] & RM_HS300X_MASK_STATUS_0XC0);
if ((rx_buf[0] & RM_HS300X_MASK_STATUS_0XC0) != RM_HS300X_DATA_STATUS_VALID)
{
Delay_ms(100);
goto __retry;
}
humi = (rx_buf[0] & RM_HS300X_MASK_HUMIDITY_UPPER_0X3F) << 8 | rx_buf[1];
temp = (rx_buf[2] << 8 | (rx_buf[3] & RM_HS300X_MASK_TEMPERATURE_LOWER_0XFC)) >> 2;
humi_f = (float)humi;
humi_f = (humi_f * RM_HS300X_CALC_HUMD_VALUE_100) / RM_HS300X_CALC_STATIC_VALUE;
temp_f = (float)temp;
temp_f = ((temp_f * RM_HS300X_CALC_TEMP_C_VALUE_165) / RM_HS300X_CALC_STATIC_VALUE) - RM_HS300X_CALC_TEMP_C_VALUE_40;
log_info("Temp:%d.%d ",(int)temp_f,(int)(temp_f*100)%100);
log_info("HUMI:%d.%d\\r\\n",(int)humi_f,(int)(humi_f*100)%100);
return 1;
}
bool Humiture_HS3003_init(void)
{
i2c_master_init();
}
- hs3003.h:
#ifndef __HS3003_H__
#define __HS3003_H__
#include "n32wb03x.h"
#define I2C_MASTER_ADDR 0x30
#define I2C_SLAVE_ADDR 0x44<<1
#define HS300X_HUMD_MULTY 0.00006163516
#define HS300X_TEMP_MULTY 0.00006163516
/* Definitions of Mask Data for A/D data */
#define RM_HS300X_MASK_HUMIDITY_UPPER_0X3F (0x3F)
#define RM_HS300X_MASK_TEMPERATURE_LOWER_0XFC (0xFC)
#define RM_HS300X_MASK_STATUS_0XC0 (0xC0)
/* Definitions for Status Bits of A/D Data */
#define RM_HS300X_DATA_STATUS_VALID (0x00) // Status-bit: Valid data
/* Definitions for Calculation */
#define RM_HS300X_CALC_STATIC_VALUE (16383.0F)
#define RM_HS300X_CALC_HUMD_VALUE_100 (100.0F)
#define RM_HS300X_CALC_TEMP_C_VALUE_165 (165.0F)
#define RM_HS300X_CALC_TEMP_C_VALUE_40 (40.0F)
#define RM_HS300X_CALC_DECIMAL_VALUE_100 (100.0F)
bool Humiture_HS3003_init(void);
uint32_t Humiture_HS3003_ReadData_Raw(void );
#endif
7、在主程序中调用一下:
#include "main.h"
#include "led.h"
#include "key.h"
#include "log.h"
#include "hs3003.h"
unsigned char BlackImage[4736];//Define canvas space
int main(void)
{
unsigned char fen_L,fen_H,miao_L,miao_H;
log_init();
Humiture_HS3003_init();
Humiture_HS3003_ReadData_Raw();
while (1)
{
Humiture_HS3003_ReadData_Raw();
Delay_ms(1000);
}
}
实验效果

总结
不知道是不是硬件i2c的驱动是不是有问题,反正我的浪费了半天的时间,各种工具用上,最后还是得用软件才搞定。
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
驱动
+关注
关注
12文章
1927浏览量
88184 -
THS3000
+关注
关注
0文章
3浏览量
6367
发布评论请先 登录
相关推荐
热点推荐
温湿度传感器HTU31D在温湿度控器中的应用优势
温湿度控制器是一种用于监测和调节环境温度与湿度的设备,广泛应用于农业、仓储、工业生产、家庭等多个领域。其主要功能是维持特定环境条件,以确保产品质量和舒适的居住环境。 温湿度控制器的工作过程是传感器
基于LORA无线通讯的祥控多点式烟叶温湿度监测系统
XKCON祥控多点式烟叶温湿度监测系统基于LORA无线通讯技术,无需复杂的布线工作,缩短了工期,节省了成本;系统可以根据烟厂的实际布局和需求进行灵活配置,实现对各单点无线温湿度检测杆测量信号的
温湿度变送器功能有哪些?一文详细解析
对于很多行业来说,精确的测量以及控制温度和湿度至关重要。想要达到这个目的,往往需要用到温湿度变送器。那么,温湿度变送器究竟有哪些功能呢?下面为大家详细介绍。
一、精确测量温湿度
发表于 06-03 10:56
智能仓储:温湿度监控方案应用
随着仓储环境要求提高,温湿度监控对保障货物品质至关重要。本文介绍一个工厂仓库温湿度监控方案,利用温湿度变送器、LoRa技术和智能监测平台,为仓库业主提供高效、可靠的监测解决方案。仓库
【RA-Eco-RA4M2开发板评测】RT-Thread上驱动I2C温湿度传感器
框架加进来。
最后把温湿度传感器的组件包选上。
四、驱动
有了RT-Thread的sensor驱动框架和hs300x驱动组件包,对
发表于 05-08 22:42
【RA-Eco-RA4M2开发板评测】RA-Eco-RA4M2 温湿度传感器HS3003
传感元件,其性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器,经过改进使其在恶劣环境下的性能更稳定。
2.2 HS3003采集温湿度
温度
发表于 05-03 22:57
制药车间温湿度数据采集监控管理方案
在制药生产过程中,温湿度对药品质量起着关键作用。不稳定的温湿度环境可能导致药品原料变质、药品制剂的稳定性下降,甚至影响药品的疗效和安全性。因此,构建一套精准、可靠的温湿度数据采集监控管理方案,对制药
工厂温湿度监控系统
在现代化工业生产环境中,温湿度控制是确保产品质量、生产效率和员工健康的关键因素之一。随着科技的进步,工厂温湿度监控系统应运而生,通过集成传感器技术、数据处理与通信技术,对工厂内部环境参
库房温湿度监测系统
不可或缺的一部分,对于保障货物安全、维护存储品质具有重要意义。 组成与运行 库房温湿度监测系统是一种专门用于仓库环境温湿度监测的系统,结合传感器、数字通信、物联网、自动化控制等技术,通过集成传感器、数据
远程温湿度实时监测系统应用方案
通信、云计算、大数据分析等技术。传感器作为系统的“眼睛”,负责实时采集环境中的温湿度数据。通过Wi-Fi、蓝牙、LoRa、NB-IoT等通讯方式,将传感器采集的数据传输至云端服务器。云
大棚温湿度自动监控系统
大棚温湿度自动监控系统,基于传感器、物联网、智能控制等技术,通过实时监测大棚内外的环境参数,如温度、湿度、光照强度、二氧化碳浓度等,并根据预设的管理逻辑,自动调节大棚内的环境设备,如通风机、取暖设备
博物馆温湿度监控系统
,若任其自然变化,则可能对文物造成意想不到的损害。为此,博物馆温湿度监控系统应运而生,其具备多种功能,以确保文物环境的稳定与安全。 博物馆温湿度监控系统,采集各库房的温湿度数据,通过管
医药仓库温湿度监控系统应用
。 医药仓库温湿度监控系统,结合物联网、无线通讯等技术,通过传感器全天候实时采集仓库内的温湿度数据,管理云平台对接收到的数据进行深入分析、处理,并以图表、曲线等形式直观展示
农业温湿度监控系统
农业温湿度监控系统作为现代农业管理工具的重要组成部分,正逐渐改变着传统农业的生产方式,为农作物的生长提供了更为精确和高效的环境控制手段。 农业温湿度监控系统,集成传感器、网络传输、智能控制等技术

国民技术N32WB031驱动HS3003采集温湿度
评论