AHT10读取温度湿度驱动

该驱动基于STM32CubeMX进行设计:使用硬件IIC

外设供电5V,且3.3V工作不正常。

aht10.c文件:

#include "stm32f4xx_hal.h"
#include "aht10.h"
#include "main.h"
extern I2C_HandleTypeDef hi2c1;

void AHT10_Init(void)
{
	//uint8_t Read[]={0xac,0x33,0x00};
	uint8_t Init[]={0xe1,0x08,0x00};
	uint8_t Soft_ReSet[]={0xba};
	HAL_I2C_Master_Transmit(&hi2c1,0x70,Init,3,0x00ff);
	HAL_I2C_Master_Transmit(&hi2c1,0x70,Soft_ReSet,1,0x00ff);
}


float Calculate_RH(uint8_t *RH_Data)
{
	uint8_t Data[]={*(RH_Data+1),*(RH_Data+2),*(RH_Data+3)};
	uint32_t RH_Data32=0;
	Data[2]=Data[2]&0xf0;
	RH_Data32=Data[0]<<12|Data[1]<<4|Data[2]>>4;
	RH_Data32=RH_Data32*1.0/(2^20)*100;
	return RH_Data32;
}


float CalculateTemp(uint8_t *TempData)
{
	uint8_t Data[]={*(TempData+3),*(TempData+4),*(TempData+5)};
	uint32_t Data32=0;
	Data[0]=Data[0]&0x0f;
	Data32=Data[0]<<16|Data[1]<<8|Data[2];
	Data32=(Data32/(2^20))*200-50;
	return Data32;	
}


void AHT10_getRH_Temp(uint8_t *Data)
{
	uint8_t Read[]={0xac,0x33,0x00};
	HAL_I2C_Master_Transmit(&hi2c1,0x70,Read,3,0x00ff);
	HAL_Delay(70);
	HAL_I2C_Master_Receive_DMA(&hi2c1,0x71,Data,10);
	//Device_ReadData(0x71,Data,6);
	
}

			
					

aht0.h文件

//#include "stm32f1xx_hal.h"
#include "stm32f4xx_hal.h"

//#include "i2c.h"

float Calculate_RH(uint8_t *RH_Data);

float CalculateTemp(uint8_t *Temp_Data);
void AHT10_Init(void);
void AHT10_getRH_Temp(uint8_t *Data);

工作正常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值