OpenEdv-开源电子网

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

DS18B20求助,谢谢。

[复制链接]

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
发表于 2016-4-16 16:41:55 | 显示全部楼层 |阅读模式
10金钱
为什么我用原子哥的教学程序,下载到我的STM32F1上,发现18B20初始化,检测18B20是否存在
while(DS18B20_Init())  
结果是1,不存在?  我焊接了18B20的呀,
我用示波器测DQ脚的波形。和原子哥的设定的时间也不一样,而且波形中还出现了1V这样的不确定电压,持续了几ms。。。。 是示波器测量不了15us的波形 还是别的原因?
我用的教学程序,知识改了相应的DQ引脚,其他都不变。
不胜感激!!!!!!!!

最佳答案

查看完整内容[请看2#楼]

他的18B20的管脚。一个就是.h中的配置。我选的是PE1: #define DS18B20_IO_IN() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8CRL|=3
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-16 16:41:56 | 显示全部楼层
李少帅 发表于 2016-4-18 16:25
管脚的  移植  可能有问题。把  原子的  18B20的文件  有关  管脚的都改一下

他的18B20的管脚。一个就是.h中的配置。我选的是PE1:

#define DS18B20_IO_IN()  {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8<<4;}
#define DS18B20_IO_OUT() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=3<<4;}                                                                                  
#define        DS18B20_DQ_OUT PEout(1)
#define        DS18B20_DQ_IN  PEin(1)  

另一个是.c中的初始化IO:
u8 DS18B20_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);       
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                               
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        GPIO_SetBits(GPIOE,GPIO_Pin_1);   

        DS18B20_Rst();

        return DS18B20_Check();
}  
这个应该没问题吧???
谢谢您了。我搞了几天了,不明白。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11975
金钱
11975
注册时间
2013-3-8
在线时间
1276 小时
发表于 2016-4-16 17:57:29 | 显示全部楼层
相应管脚初始化部分可能有问题。主意DQ脚是可以输入输出的,需要相应配置
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
发表于 2016-4-16 20:38:24 | 显示全部楼层
你的DQ脚有没有接一个电阻上拉
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-4-17 14:37:52 | 显示全部楼层
会不会放反了 你用  教学  程序  应该没问题的
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 09:14:54 | 显示全部楼层
augustedward 发表于 2016-4-16 17:57
相应管脚初始化部分可能有问题。主意DQ脚是可以输入输出的,需要相应配置

我的程序是按照原子哥的教学程序修改的:
。我的18B20 DQ引脚是PE1所以我在定义中修改如下:
#define DS18B20_IO_IN()  {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8<<4;}
#define DS18B20_IO_OUT() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=3<<4;}                                                                                   
#define        DS18B20_DQ_OUT PEout(1)
#define        DS18B20_DQ_IN  PEin(1)  
里边的一个引脚配置也改为PE1。  其他都没动。
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 09:15:29 | 显示全部楼层
李少帅 发表于 2016-4-17 14:37
会不会放反了 你用  教学  程序  应该没问题的

不会放反啊,引脚反了,那不就特别烫,?
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 09:15:51 | 显示全部楼层
松志竹心 发表于 2016-4-16 20:38
你的DQ脚有没有接一个电阻上拉

接了。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11975
金钱
11975
注册时间
2013-3-8
在线时间
1276 小时
发表于 2016-4-18 09:50:16 | 显示全部楼层
滴丶滴 发表于 2016-4-18 09:14
我的程序是按照原子哥的教学程序修改的:
。我的18B20 DQ引脚是PE1所以我在定义中修改如下:
#define D ...

GPIOE口时钟开了吗,先初始化下!
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 10:39:50 | 显示全部楼层
augustedward 发表于 2016-4-18 09:50
GPIOE口时钟开了吗,先初始化下!

u8 DS18B20_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                               
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        GPIO_SetBits(GPIOE,GPIO_Pin_1);  

        DS18B20_Rst();

        return DS18B20_Check();
}  

谢谢您了,这个我也初始化了啊 。
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-4-18 15:42:49 | 显示全部楼层
大哥  你跳线帽连接  没??????????????????????????????????????
捕获11.JPG
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 16:10:56 | 显示全部楼层
李少帅 发表于 2016-4-18 15:42
大哥  你跳线帽连接  没??????????????????????????????????????

我现在用的是自己做的一个小板子,做温度采集,不是用的开发板。我那个DQ接线肯定是连接的。
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-4-18 16:25:56 | 显示全部楼层
管脚的  移植  可能有问题。把  原子的  18B20的文件  有关  管脚的都改一下  
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
 楼主| 发表于 2016-4-18 16:43:56 | 显示全部楼层
李少帅 发表于 2016-4-18 16:25
管脚的  移植  可能有问题。把  原子的  18B20的文件  有关  管脚的都改一下

他的18B20的管脚。一个就是.h中的配置。我选的是PE1:

#define DS18B20_IO_IN()  {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=8<<4;}
#define DS18B20_IO_OUT() {GPIOE->CRL&=0XFFFFFF0F;GPIOE->CRL|=3<<4;}                                                                                  
#define        DS18B20_DQ_OUT PEout(1)
#define        DS18B20_DQ_IN  PEin(1)  

另一个是初始化IO:
u8 DS18B20_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);       
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                               
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        GPIO_SetBits(GPIOE,GPIO_Pin_1);   

        DS18B20_Rst();

        return DS18B20_Check();
}  
这个应该没问题吧???
谢谢您了。我搞了几天了,不明白。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11975
金钱
11975
注册时间
2013-3-8
在线时间
1276 小时
发表于 2016-4-18 17:37:47 | 显示全部楼层
滴丶滴 发表于 2016-4-18 10:39
u8 DS18B20_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;

我应该想到的就只有另一种可能了,你查一下。DS18B20有两种,一种是DS1820,还有一种DS18B20。这两种芯片的驱动程序有点不太一样。我上学时遇到过这种问题。不知道能不能帮上你
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-4-13
在线时间
12 小时
发表于 2016-9-13 13:49:38 | 显示全部楼层
我也遇到了相似的问题,在我自己的电路板上,用原子的例程,只修改了DQ的端口,也是无法读到数据,检查了一天的程序。第二天检查电路,发现用作DQ的端口被接了一个电容(板子不是自己设计的),焊掉后,正常了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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