标题: L151c8t6读取DS18B20传感器失败,试过接上拉电阻,也试过自带上拉电阻的 [打印本页]

作者: 864025922    时间: 2021-11-14 20:59
标题: L151c8t6读取DS18B20传感器失败,试过接上拉电阻,也试过自带上拉电阻的
stm32L151C8T6读取DS18B20传感器失败,传感器试过接上拉电阻,也试过自带上拉电阻的,也试过不接。L151晶振8Mhz,程序打算用PA8接口。有么有大哥帮忙看看。

2.STM32L151_温度串口.7z

253.18 KB, 下载次数: 12


作者: 188610329    时间: 2021-11-14 22:08
一步一步来,先确定,能收到初始化信号,再尝试度数据。
作者: TTQ001    时间: 2021-11-15 01:14
确保传感器没有损坏。 此外,仿真代码以确保代码正确。
作者: 864025922    时间: 2021-11-15 08:49
TTQ001 发表于 2021-11-15 01:14
确保传感器没有损坏。 此外,仿真代码以确保代码正确。

没有坏,我用f系列的32试过。我是直接烧录的,没有仿真
作者: qinlu123    时间: 2021-11-15 09:01
1、IO口必须设置为开漏模式;
2、上拉电阻必须有,阻值1k-10k;
3、单片机IO和DS18B20之间不要再加电阻了,如果非要加的话阻值不大于上拉电阻的1/10;
4、时序中的延时要特别精确,在A型号单片机上好使的程序拿到B型号单片机上未必好使需要调一下。
作者: 864025922    时间: 2021-11-15 11:30
qinlu123 发表于 2021-11-15 09:01
1、IO口必须设置为开漏模式;
2、上拉电阻必须有,阻值1k-10k;
3、单片机IO和DS18B20之间不要再加电阻了 ...

我开漏推挽都试过,上拉也有。时序的话,我根据这个单片机的晶振换了延时函数,时序是按照正点原子的DS18B20标准库程序来的。
作者: 864025922    时间: 2021-11-15 11:37

这是我的GPIO设置,应该没问题吧。

作者: 123156fsadf    时间: 2021-11-15 11:43
864025922 发表于 2021-11-15 11:30
我开漏推挽都试过,上拉也有。时序的话,我根据这个单片机的晶振换了延时函数,时序是按照正点原子的DS18 ...

可能是你时钟树配的不对导致时序错误吧
作者: 188610329    时间: 2021-11-15 13:23
864025922 发表于 2021-11-15 11:30
我开漏推挽都试过,上拉也有。时序的话,我根据这个单片机的晶振换了延时函数,时序是按照正点原子的DS18 ...

所以说,折腾了半天,初始化信号都没收到?
对于单线通讯而言,时序唯一的标准,就是初始化信号,只有正确收到初始化信号,才能按初始化信号的时间,来逆算其它的时间。换言之,你用了多少延时收到初始化信号,这才是标准,“标准库” 这种东西,是不存在的。

收不到初始化信号,除了调整延时,就是检查硬件了。该提的楼上都提了,你照做就完了。
作者: qinlu123    时间: 2021-11-15 15:33
864025922 发表于 2021-11-15 11:30
我开漏推挽都试过,上拉也有。时序的话,我根据这个单片机的晶振换了延时函数,时序是按照正点原子的DS18 ...

你按照我说的这4条一步一步地来做,并且换一个DS18B20或者你通过其他方法来验证一下当前这个DS18B20还没坏。因为IO设置为推挽来驱动DS18B20有可能会损坏单片机和DS18B20.
作者: 864025922    时间: 2021-11-15 19:21
188610329 发表于 2021-11-15 13:23
所以说,折腾了半天,初始化信号都没收到?
对于单线通讯而言,时序唯一的标准,就是初始化信号,只有 ...

好的,谢谢,我一步一步看看
作者: 864025922    时间: 2021-11-15 19:22
qinlu123 发表于 2021-11-15 15:33
你按照我说的这4条一步一步地来做,并且换一个DS18B20或者你通过其他方法来验证一下当前这个DS18B20还没 ...

好的,我一步步试试,谢谢兄弟
作者: munuc_w    时间: 2021-11-17 17:14
18B20很难用,我在51,32上都试过,都不行,用正点原子的原开发板试,也不好使。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1