我的自己做的硬件时直接用STM32f103的最尛板外界AM2302实现的温湿度采集证实不用上拉电阻也可以实现温湿度采集功能。
但不知道为什么效验位≠湿度高8位+湿度低8位+温度高8位+温度低8位
所以我的程序上并没有加效验位判断。
一、 AM2302 上电后(AM2302 上电后要等待 2S 以越过不稳定状态在此期间读取设备不能发送任何指令),测试环境温湿度数据并记錄数据,此后传感器自动转入休眠状态AM2302 的 SDA 数据线由上拉电阻拉高一直保持高电平,此时 AM2302 的 SDA 引脚处于输入状态时刻检测外部信号。
二、微处理器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 800us典型值是拉低 1MS,然后微处理器的 I/O 设置为输入状态释放总线,由於上拉电阻微处理器的 I/O 即 AM2302的 SDA 数据线也随之变高,等主机释放总线后AM2302 发送响应信号,即输出 80 微秒的低电平作为应答信号紧接着输出 80 微秒的高电平通知外设准备接收数据。
三、AM2302 发送完响应后随后由数据总线 SDA 连续串行输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据
位數据“0”的格式为: 50 微秒的低电平加 26-28 微秒的高电平;
位数据“1”的格式为: 50 微秒的低电平加 70 微秒的高电平;
写到这AM2302驱动程序就写完了。
单总线器件只要认真看时序图照着一步一步写就行了
感谢您的反馈!我们会第一时间查看和处理
为避免骚扰,处理结果将不发送通知
如果小编认为不需要处理,就不会处理建议您继续观察,如果情况恶化可以再次投诉。
请确保您的投诉是真实的、客观的并对此负责。恶意投诉将受到处罚