OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4959|回复: 2

DHT11传感器能检测到起始信号但是无法正常读取数据帧

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-11-16
在线时间
6 小时
发表于 2021-12-6 17:58:21 | 显示全部楼层 |阅读模式
2金钱
   具体情况如下所述:同样一个DHT11的BSP我在裸机情况下可以正常使用,移植到带OS的环境下就不行了,这个时候它可以正常读取到起始的信号帧,随后的数据帧直接是一个比特位都无法正常读入。尝试过直接移植板子教程里边的BSP,情况一样。在示波器里边捉到的信号表示,起始的18ms低电平持续时间在19.8ms-20.3ms左右(程序里边设定延时20ms),随后20-40us高电平持续时间在30-31us之间(程序设定延时30us)。至此,在时序上应该没什么问题。但是就比较奇怪,它就只能够成功读取到起始部分,随后的数据部分一个比特都读不进去。现在怀疑的一个方向是明面上延时了1个或者几个到几十个us,实际上可能快了或者慢了,不过这跟发送起始信号时主动从低电平改为高电平时正确的延时时间相悖,当然也可能是我的示波器它捉不准的缘故。   一共尝试过:①传感器驱动代码换一个方式重写,不行。           
           ②我怀疑我写的有问题,所以在教程源码里边找到用到OS的工程把里边的传感器源码移植过来用,不行。
           ③使用另一个OS环境,不行。
           ④更改GPIO,不行。
           ⑤在读取之前关闭中断,不行。
           ⑥这个尝试是我想试试会不会因为我给读取任务分配的堆栈小了导致无法读取,将原来分配的128改大了,不行。
           ⑦在②④⑤⑥的基础之上把任务优先级设定为最高,甚至极端了一些用了信号量,只要这个任务没完成其他任务全部等待,不行。
           ⑧可能传感器坏了?那么更换传感器,很遗憾还是不行(这个尝试肯定没用,裸机都能用呢,传感器坏了它裸机怎么正常读)。
           ⑨上边的都试完了,这次我将所有的延时都改了一下,比如延时2us我改3us这样,改大了一些,结果是----不行。好吧,我也只好躺平来求助各位网友了。
   上边所说的情况最为让我不解的是,不使用操作系统的时候它能够正常读取到数据帧,一上系统就完蛋。我是个菜鸟,这个搞不懂什么情况。我想应该会有网友也遇到过一样或者类似的问题吧。   
   OS的时基是1ms为一个tick。 事实上不仅仅是DHT11不行,用DS18B20也一样,无法成功读取到数据帧。 它就好像是可以作为输出但无法作输入一样,我自己写的代码还是用板子教程的源码都是这样。用的板子是正点原子探索者F407,RTOS是μ/COSIII,加了STemWIN以及LwIP,用的玩意比较多,其实不关事,因为这个问题是在我裸机加OS的时候就出现了,当时是已经把要用到的BSP写好或者移植好并在裸机上测试过正常后才加入OS的。魔幻的问题


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2020-3-15
在线时间
28 小时
发表于 2021-12-7 09:35:32 | 显示全部楼层
理论上os和裸机只是执行机制不一样罢了,怀疑是时序没搞对
回复

使用道具 举报

1

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2022-3-20
在线时间
16 小时
发表于 2022-4-12 15:58:04 | 显示全部楼层
我也遇到一樣的問題, DHT11_Check 一直返回1, 無法讀數据, 裸機時可以正常讀數据的。等待高人分享ucos中的dht11程序.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-6 19:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表