目的
驱动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文章
1837浏览量
85254 -
THS3000
+关注
关注
0文章
3浏览量
6270
发布评论请先 登录
相关推荐
LORA无线温湿度监测系统
仓储、农业、机房等多种应用场景,提供高效、可靠的解决方案。 部分组成 LORA温湿度传感器:作为系统的前端采集设备,实时捕捉环境中的温湿度数据。LORA温湿度传感器的传输距离远,视距可
温湿度控制器的功能和应用
温湿度控制器在电阻柜中的应用主要涉及以下几个方面: 温湿度控制器的功能 检测与控制:温湿度控制器可以同时检测和控制环境中的温度和湿度。它通常由传感器、控制器和加热器三部分组成。传感器负
温湿度监测解决方案
。对于维护环境稳定、保障生产安全、提升生活质量具有重要意义。 温湿度监测解决方案,融入物联网、无线通讯等技术,通过温湿度传感器、智能采集器等感知设备,实时
温湿度监测系统应用
、可靠的温湿度监测系统显得尤为重要。 温湿度监测系统,通过温度传感器、智能控制终端等硬件设备,与管理云平台组成高精度传感器网络,在线采集室内温湿度变化情况,联动空调等设备,以数字形式打
药品仓库温湿度监控系统
和有效使用具有重要意义。 药品仓库温湿度监控系统,结合物联网、无线通讯等技术,主要由传感器、数据采集器、传输设备、管理云平台等组成。针对药品仓库的温湿度进行实时监控,及时发现并调整不利
库房温湿度自动监测系统
仓储、库房在管理上,环境控制都是重中之重。库房温湿度自动监测系统作为一种更为便捷的解决方案,已经得到广泛的应用。 库房温湿度自动监测系统通过集成传感器、数据采集器、传输设备和管理平台等硬件设备,实现
粮仓环境温湿度监测系统方案
安全、提高粮食储存质量具有重要意义。 粮仓环境温湿度监测系统,由传感器、数据采集器、传输设备、监控平台等组成。采集器负责实时采集粮仓环境的温湿度
粮仓温湿度监测解决方案
温湿度是影响粮食储存品质的重要因素。过高的温度会加速粮食的呼吸作用,导致水分散失和品质下降。因此,粮仓的温湿度管理,成为了确保粮食储存安全和质量稳定的关键因素。方便及时发现粮仓的发热点,及时减少粮食
想要准确地测量环境温湿度?温湿度传感器是关键!
温湿度是生产生活中最重要的环境指标之一,不仅人需要在适宜的温湿度条件下保持良好的精神状态和敏捷的思维,食品、药品、各种仪器设备等都对环境温湿度有特殊的要求。基于对环境温湿度的要求,
无线温湿度监控系统
无线温湿度监控系统,作为现代环境监测技术的杰出代表,已经广泛应用于各个行业和领域。利用无线通信技术,实现对环境温湿度的实时、远程监控,从而保障了各种设备和物品的安全运行和保存。 无线
基于国民技术N32WB031的Mesh灯控解决方案
联网应用场景。此外Mesh采用的信息加密技术保证了物联网传输信息的安全性。Mesh灯控解决方案采用国民技术新一代高性能、超低功耗的蓝牙5.1芯片N32WB031作
基于国民技术N32WB031的蓝牙语音遥控器解决方案
N32WB031系列蓝牙芯片是国民技术新一代高性能、超低功耗的蓝牙5.1芯片,具有丰富的外设接口,在工业/能源、金融/消费、医疗、家电及汽车等行业领域用途非常广泛。本文介绍的蓝牙语音遥控器方案采用
温湿度数据采集远程监控系统解决方案
远程监控系统,为人们提供了一种高效、便捷的温湿度监控方式。 该系统通过采集温湿度传感器中的温湿度数据,并通过无线通讯技术将数据传输至云端服务
温湿度传感器工作原理 温湿度传感器的接线方法
温湿度传感器是一种用于测量环境温度和相对湿度的装置。它通常用于工业、农业、气象、室内空调等领域。本文将详细介绍温湿度传感器的工作原理和接线方法。 一、温湿度传感器的工作原理
评论