OpenEdv-开源电子网

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

看了DS18B20的视频后。。。。

[复制链接]

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
发表于 2016-4-19 22:15:05 | 显示全部楼层 |阅读模式
1金钱
因为要做一个测水温的系统,所以跳着看原子哥的DS18B20视频。。。看完视频并且阅读了代码之后。。我怎么感觉跟ADC没啥关系。。。

最佳答案

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

这种通信协议已经嵌入到芯片内部了, 自己一般做不了,也没必要仿效; 遇到这种芯片,必须用这种方式,没有选择。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-19 22:15:06 | 显示全部楼层

这种通信协议已经嵌入到芯片内部了,
自己一般做不了,也没必要仿效;

遇到这种芯片,必须用这种方式,没有选择。

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-19 22:27:45 | 显示全部楼层

谁说有关系了?   



回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-19 22:29:40 | 显示全部楼层
xuande 发表于 2016-4-19 22:27
谁说有关系了?

我一直以为是ad采集的呢。。。。怎么好像stm32跟传感器通讯。。。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-19 22:34:01 | 显示全部楼层

一种非常特殊的通信方式。

搜    1wire     单总线


回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-19 22:35:41 | 显示全部楼层
xuande 发表于 2016-4-19 22:34
一种非常特殊的通信方式。

搜    1wire     单总线

那么请问什么情况下可以使用这种通信方式?又有什么情况下必须使用AD?
回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-19 22:36:03 | 显示全部楼层
xuande 发表于 2016-4-19 22:34
一种非常特殊的通信方式。

搜    1wire     单总线

那么请问什么情况下可以使用这种通信方式?又有什么情况下必须使用AD?
回复

使用道具 举报

1

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-12-10
在线时间
49 小时
发表于 2016-4-20 02:25:48 | 显示全部楼层
PYIPHANG 发表于 2016-4-19 22:35
那么请问什么情况下可以使用这种通信方式?又有什么情况下必须使用AD?

模拟量数字化就必须用ADC。
1wire模块内部已经数字化,就用数字通讯获取数据。
逆水行舟不进则退
回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-20 09:02:16 | 显示全部楼层
gelin_ss 发表于 2016-4-20 02:25
模拟量数字化就必须用ADC。
1wire模块内部已经数字化,就用数字通讯获取数据。

请问意思是在ds18内部就已经转换了?然后把数据传送到mcu?
回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-20 09:02:35 | 显示全部楼层
xuande 发表于 2016-4-19 22:41
这种通信协议已经嵌入到芯片内部了,
自己一般做不了,也没必要仿效;

好的 谢谢您
回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-20 09:29:07 | 显示全部楼层
xuande 发表于 2016-4-19 22:34
一种非常特殊的通信方式。

搜    1wire     单总线

那么请问是不是如果我把传感器直接接在任何一个io 也是可以读取的呢?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-20 09:57:33 | 显示全部楼层
PYIPHANG 发表于 2016-4-20 09:29
那么请问是不是如果我把传感器直接接在任何一个io 也是可以读取的呢?


是的。


回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
发表于 2016-4-20 15:28:46 | 显示全部楼层

请问,原子哥的教学程序中,那两个延时函数delay_us() 和 delay_ms()
是精确延时吗?delay_us(10)  这个是表示精确延时10us吗?还是延时了多少?
谢谢。!
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
发表于 2016-4-20 15:32:58 | 显示全部楼层
楼主,你测试了原子哥那个程序,下载在你自己的板子上,只修改相应的IO就能实现温度采集是吗??谢谢。我试了好几天,都不行,,,,,,,,谢谢了
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2015-8-12
在线时间
2 小时
发表于 2016-4-20 17:43:28 | 显示全部楼层
滴丶滴 发表于 2016-4-20 15:32
楼主,你测试了原子哥那个程序,下载在你自己的板子上,只修改相应的IO就能实现温度采集是吗??谢谢。我试 ...

并不是所有的IO都是可以的。
ds18b20,的外接电路,是有一定要求的。
你IO口的驱动力不够的话,是获取不到温度的。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-20 19:43:44 | 显示全部楼层
滴丶滴 发表于 2016-4-20 15:28
请问,原子哥的教学程序中,那两个延时函数delay_us() 和 delay_ms()
是精确延时吗?delay_us(10) ...


具体不太清楚了。

为什么问这个?


回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-20 20:28:14 | 显示全部楼层
滴丶滴 发表于 2016-4-20 15:32
楼主,你测试了原子哥那个程序,下载在你自己的板子上,只修改相应的IO就能实现温度采集是吗??谢谢。我试 ...

这个我还没尝试
回复

使用道具 举报

22

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2016-4-2
在线时间
42 小时
 楼主| 发表于 2016-4-20 20:29:18 | 显示全部楼层
tajiaoxuan2007 发表于 2016-4-20 17:43
并不是所有的IO都是可以的。
ds18b20,的外接电路,是有一定要求的。
你IO口的驱动力不够的话,是获取不 ...

那么需要的条件是?难道在自己的板上还要接三极管...
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
发表于 2016-4-21 09:11:16 | 显示全部楼层
xuande 发表于 2016-4-20 19:43
具体不太清楚了。

为什么问这个?

因为我使用的是原子哥DS18B20的教学程序,我的18B20检测程序,总是检测不到18B20的存在。我就用示波器查了下波形,但是延时不准确,我想看看是不是延时不对,所以驱动不了DS18B20,所以就检测不到。
回复

使用道具 举报

50

主题

193

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-11
在线时间
141 小时
发表于 2016-4-21 09:13:36 | 显示全部楼层
tajiaoxuan2007 发表于 2016-4-20 17:43
并不是所有的IO都是可以的。
ds18b20,的外接电路,是有一定要求的。
你IO口的驱动力不够的话,是获取不 ...

怎么理解呢?  我接一个上拉4.7K电阻还不行?还对IO有要求,哪些IO驱动能力强?能驱动,谢谢。
我现在用原子哥的教学程序,都不能检测到18B20存在。。。。
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2015-8-12
在线时间
2 小时
发表于 2016-5-2 21:39:39 | 显示全部楼层
滴丶滴 发表于 2016-4-21 09:13
怎么理解呢?  我接一个上拉4.7K电阻还不行?还对IO有要求,哪些IO驱动能力强?能驱动,谢谢。
我现在用 ...

具体,你可以看看DS18B20的外围硬件要求。
里面有对电平的要求的
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2015-8-12
在线时间
2 小时
发表于 2016-5-2 21:41:28 | 显示全部楼层
tajiaoxuan2007 发表于 2016-5-2 21:39
具体,你可以看看DS18B20的外围硬件要求。
里面有对电平的要求的

说电平好像不合适。主要是对电流有要求,具体我也记的不太清楚了。。。
为了这个驱动力足够,我们的工程,还为这个DS18B20提供了有点复杂的电路。
这里没法截图,不然我可以截个图。
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-4-9
在线时间
5 小时
发表于 2016-6-9 15:48:37 | 显示全部楼层
本帖最后由 traceless 于 2016-6-9 15:50 编辑

原子哥:
使用PG13也可以,直接在ds18b20.h修改即可,也不用加上拉电阻,直接可以使用
#define DS18B20_IO_IN()  {GPIOG->CRH&=0XFF0FFFFF;GPIOG->CRH|=8<<20;}
#define DS18B20_IO_OUT() {GPIOG->CRH&=0XFF0FFFFF;GPIOG->CRH|=3<<20;}                                                                                   
#define        DS18B20_DQ_OUT PGout(13) //        PG13
#define        DS18B20_DQ_IN  PGin(13)  //PG13





但是,我设置为PC11口为什么就不可以呢?
#define DS18B20_IO_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DS18B20_IO_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
////                                                                                          
#define        DS18B20_DQ_OUT PCout(11) //PC11
#define        DS18B20_DQ_IN  PCin(11)  //PC11

我查了数据手册,也没有关于PG口与PC口的区别啊,但是为啥不可以呢?是我设置错了吗?谢谢


回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-4-9
在线时间
5 小时
发表于 2016-6-9 15:53:24 | 显示全部楼层
tajiaoxuan2007 发表于 2016-5-2 21:41
说电平好像不合适。主要是对电流有要求,具体我也记的不太清楚了。。。
为了这个驱动力足够,我们的工程 ...

在吗?
使用PG13也可以,直接在ds18b20.h修改即可,也不用加上拉电阻,直接可以使用
#define DS18B20_IO_IN()  {GPIOG->CRH&=0XFF0FFFFF;GPIOG->CRH|=8<<20;}
#define DS18B20_IO_OUT() {GPIOG->CRH&=0XFF0FFFFF;GPIOG->CRH|=3<<20;}                                                                                   
#define        DS18B20_DQ_OUT PGout(13) //        PG13
#define        DS18B20_DQ_IN  PGin(13)  //PG13





但是,我设置为PC11口为什么就不可以呢?
#define DS18B20_IO_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DS18B20_IO_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
////                                                                                          
#define        DS18B20_DQ_OUT PCout(11) //PC11
#define        DS18B20_DQ_IN  PCin(11)  //PC11

我查了数据手册,也没有关于PG口与PC口的区别啊,但是为啥不可以呢?是我设置错了吗?
回复

使用道具 举报

13

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2015-12-3
在线时间
46 小时
发表于 2016-8-5 11:53:54 | 显示全部楼层
想请教楼主一个C语言的问题,如果温度是负的,值要取反加一,那个例程里边只有去反,没有加1,if(TH>7)
    {
        TH=~TH;
        TL=~TL;
        temp=0;//温度为负  
    }else temp=1;//温度为正                    
    tem=TH; //获得高八位
    tem<<=8;   
    tem+=TL;//获得低八位
        tem=(float)tem*0.625;//转换     
        if(temp)return tem; //返回温度值
        else return -tem;
这个怎么理解
学到老,活到老
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 11:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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