当前位置:首页 > 单片机 > 单片机
[导读]最近用到的温湿度传感器,AM2305驱动,单总线,上电后至少要延时2S才能读取温湿度,温度精度很高,跟DS18B20一样,数据带校验,不会出现DS18B20那样,并且时序要求不高/***************************************************

最近用到的温湿度传感器,AM2305驱动,单总线,上电后至少要延时2S才能读取温湿度,温度精度很高,跟DS18B20一样,数据带校验,不会出现DS18B20那样,并且时序要求不高


/*************************************************************************************************************

*文件名:AM2305.c

*功能:STM32AM2305高精度温湿度传感器驱动

*作者:cp1300@139.com

*创建时间:2014-09-20

*最后修改时间:2014-09-20

*详细:需要延时函数支持

*注意延时精度尽可能的高

*读取的时候不要长时间的被中断,因为1wire对时间要求很严格

*************************************************************************************************************/

#include"system.h"

#include"delay.h"

#include"AM2305.h"

//DS18B20使用的是GPIOE0

#defineAM2305_CLK_INIT()DeviceClockEnable(AM2305_DEV,ENABLE);//时钟使能

#defineAM2305_IO_OUT()GPIOx_Init(AM2305_GPIOx,AM2305_BITx,OUT_PP,SPEED_10M);//设置AM2305IO为输出,

#defineAM2305_IO_IN()GPIOx_Init(AM2305_GPIOx,AM2305_BITx,IN_IPU,0);//设置AM2305IO为上拉输入,

#defineAM2305_DQ_IN()((AM2305_IN)?1:0)//读取AM2305IO

#defineAM2305_DQ_OUT(x)(AM2305_OUT=x)//写AM2305IO

#defineAM2305_IODown()GPIOx_Init(AM2305_GPIOx,AM2305_BITx,IN_IPT,0);//掉电,下拉输入

//精确us延时

#defineAM2305_Delay_US(x)delay_us(x)

//AM2305掉电

voidAM2305_PowerDown(void)

{

AM2305_IODown();

}

/*************************************************************************************************************************

*函数:voidAM2305_Reset(void)

*功能:AM2305复位

*参数:无

*返回:无

*依赖:底层宏定义

*作者:cp1300@139.com

*时间:2014-09-20

*最后修改时间:2014-09-20

*说明:无

*************************************************************************************************************************/

voidAM2305_Reset(void)

{

AM2305_IO_OUT();//SETOUTPUT

AM2305_DQ_OUT(0);//拉低DQ

AM2305_Delay_US(1000);//拉低至少800uS

AM2305_DQ_OUT(1);//DQ=1

AM2305_Delay_US(30);//主机拉高20~40us

}

/*************************************************************************************************************************

*函数:boolAM2305_Check(void)

*功能:等待AM2305的回应

*参数:无

*返回:FALSE:检测失败;TRUE:检测成功

*依赖:底层宏定义

*作者:cp1300@139.com

*时间:2014-09-20

*最后修改时间:2014-09-20

*说明:检测AM2305的存在

*************************************************************************************************************************/

boolAM2305_Check(void)

{

u32retry=0;

AM2305_IO_IN();//SETINPUT

while(AM2305_DQ_IN()&&retry<100)//AM2305会拉低75~85us

{

retry++;

AM2305_Delay_US(1);

}

if(retry>=100)

{

uart_printf("AM2305:retry1:%drn",retry);

returnFALSE;

}

retry=0;

while(!AM2305_DQ_IN()&&retry<100)//AM2305拉低后会再次拉高75~85us

{

retry++;

AM2305_Delay_US(1);

}

if(retry>=100)

{

uart_printf("AM2305:retry2:%drn",retry);

returnFALSE;

}

returnTRUE;

}

/*************************************************************************************************************************

*函数:u8AM2305_ReadBit(void)

*功能:读取AM23051bit数据

*参数:无

*返回:数据

*依赖:底层宏定义

*作者:cp1300@139.com

*时间:2014-09-20

*最后修改时间:2014-09-20

*说明:

*************************************************************************************************************************/

u8AM2305_ReadBit(void)

{

u8retry=0;

while(AM2305_DQ_IN()&&retry<80)//等待变为低电平

{

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

隔膜计量泵,作为一种精确控制液体输送的设备,广泛应用于化工、医药、食品等行业。它通过内部的隔膜进行往复运动,从而实现液体的吸入和排出,具有高精度、高可靠性以及耐腐蚀等特点。本文将详细阐述隔膜计量泵的工作原理、结构特点、性...

关键字: 隔膜计量泵 精确控制 高精度

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

随着科技的飞速发展和电子设备的普及,高精度直流电源的应用领域日益广泛。无论是在科学研究、工业生产还是日常生活中,高精度直流电源都发挥着不可或缺的作用。本文将对高精度直流电源的应用领域进行深入探讨,旨在揭示其在各个领域中的...

关键字: 直流电源 高精度 电源设备

电磁铁是一种利用电流产生磁场的装置,具有快速响应、易于控制等特点,在工业自动化、电子设备、科学实验等领域有着广泛的应用。STM32是一款功能强大的微控制器,具有高性能、低功耗、易于编程等优点,是控制电磁铁的理想选择。本文...

关键字: 电磁铁 微控制器 STM32

边缘人工智能的实现涉及到三个基本 要素:安全性,连接性、自主性,而其中自主性是AI能力的体现,也是边缘AI有别于其他传统的物联网的关键。而通过ST Edge AI套件,就可以帮助各种不同类型的开发者实现覆盖全硬件平台的全...

关键字: 边缘人工智能 AI STM32

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

传感器的DATA口需要接4.7K的上拉电阻。上拉电阻的作用是在单片机不进行输出以及传感器待机时,使得DATA口为高电平,当总线闲置时, 其状态为高电平。

关键字: dht11 温湿度传感器 上拉电阻

在现代工业生产和自动化控制中,扭矩传感器发挥着至关重要的作用。扭矩传感器能够测量扭矩和旋转力,广泛应用于机械、汽车、航空航天、能源等多个领域。了解扭矩传感器的原理有助于更好地理解其应用和性能特点。本文将详细介绍扭矩传感器...

关键字: 扭矩传感器 高精度 自动化控制

STM32是一款由STMicroelectronics生产的微控制器系列,具有高性能、低功耗和丰富的外设资源。其中,串口通信是一种常用的通信方式,可以实现与其他设备之间的数据传输。

关键字: STM32 串口通信 微控制器
关闭
关闭