AM2302温湿度传感器实验,传感器发送的应答信号一直不结束。(开发板型号:STM32F103RBT6)

2019-10-16 07:04发布

最近在做AM2302温湿度模块实验,希望把温湿度数据读出来显示在串口调试助手中。在调试过程中首先根据时序向传感器发送激活信号,传感器能够产生应答,但此应答信号一直停留在高电平,导致死循环。出问题的代码如下:
[mw_shl_code=c,true]AM2302_IO_OUT(); //将PA5设置为推挽输出 AM2302_DQ_OUT=0; //输出0 delay_ms(1); //延时1ms AM2302_DQ_OUT=1; //释放总线 delay_us(30); //延时30us AM2302_IO_IN(); //将PA5设置为输入状态 Sensor_AnswerFlag=0; //将传感器是否联通位设置为0 if(AM2302_DQ_IN==0) //判断传感器是否发出响应信号 { Sensor_AnswerFlag=1; //传感器已经联通 Sys_CNT = 0; while(!AM2302_DQ_IN) //判断从传感器发出的80us低电平信号是否结束 { delay_us(1); if(++Sys_CNT>300) //防止死循环 { Sensor_ErrorFlag = 1; return 0; } } printf("%d 80us的低电平已经结束 ",Sys_CNT); Sys_CNT = 0; while(AM2302_DQ_IN) //判断主机是否发出80us的高电平信号,若发出则进入数据接收状态 { delay_us(1); if(++Sys_CNT>300) //防止进入死循环!!!!!!!!!!!!!程序在这里进入死循环!! { Sensor_ErrorFlag = 1; printf("死循环 "); return 0; } }[/mw_shl_code]
以上就是出问题的地方,处理器已经能收到传感器发来的80us低电平信号,说明传感器能够响应激活信号,但是接下来的80us高电平信号无法结束,不知道问题出在哪里。 这是该传感器模块的通信时序:
新手求指导,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
LuckyMan
1楼-- · 2019-10-16 08:51
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-10-16 14:12
帮顶。。。。
LuckyMan
3楼-- · 2019-10-16 19:40
顶一下
w417074951
4楼-- · 2019-10-16 19:55
帮顶。。。。
LuckyMan
5楼-- · 2019-10-17 01:16
求助谢谢
古月一心
6楼-- · 2019-10-17 05:49
 精彩回答 2  元偷偷看……

一周热门 更多>