ds18b20时序说明

新手在DS18B20读写过程中要犯很多错误。老衲普度众生,简要说明它怎么用。

1、过程1、2是初始化过程,每次读取都要初始化,否则18b20处于待机状态,无法成功读取。

过程1:拉低信号线480-700us,使它复位,然后释放总线15-60us,18b20会拉低总线60-240us,

然后它释放总线。所以初始化成功的一个标志就是能否读到18b20这个先低后高的操作时序。

(注意:黑色部分表示主机操作,蓝色部分表示18b20操作,每次主机操作完成之后等待18b20

状态时,必须要释放总线,比如将IO设置为高阻态什么的。否则18B20没法把状态写到线上)

2、过程3、4是写1bit数据过程。过程3是写0 ,过程4是写1。过程3:拉低总线60us,然后抬

高总线5us,完成。过程4:拉低总线5us,然后抬高总线60us,完成。

3、过程5、6是读1bit过程。过程5是读0,过程6是读1。过程5、6:拉低总线5us,然后释

放总线,读取总线,如果为0,则读入0,如果为1,则读入1

DS18B20的时序描述

DS18B20的控制流程

根据DS18B20的通信协议,DS18B20只能作为从机,而单片机系统作为主机,片机控制

DS18B20完成一次温度转换必须经过3个步骤:复位、发送ROM指令、发送RAM指令。每

次对DS18B20的操作都要进行以上三个步骤。
复位过程为:单片机将数据线拉低至少480uS,然后释放数据线,等待15-60uS让DS18B20

接收信号,DS18B20接收到信号后,会把数据线拉低60-240uS,主机检测到数据线被拉低

后标识复位成功;

发送ROM指令:ROM指令表示主机对系统上所接的全部DS18B20进行寻址,以确定对那一

个DS18B20进行操作,或者是读取某个DS18B20的ROM序列号。

发送RAM指令:RAM指令用于单片机对DS18B20内部RAM进行操作,如读取寄存器的值,

或者设置寄存器的值。
具体的RAM和RAM指令请查阅DS18B20的数据手册,下面简单介绍:

1、ROM操作命令

DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆

和控制功能将无法使用。一旦总线检测到从属器件的存在,它便可以发出器件ROM操

作指令,所有ROM操作指令均为8位长度,主要提供以下功能命令:

1 )读ROM(指令码0X33H):当总线上只有一个节点(器件)时,读此节点的64位

序列号。如果总线上存在多于一个的节点,则此指令不能使用。

2 )ROM匹配(指令码0X55H):此命令后跟64位的ROM序列号,总线上只有与此序

列号相同的DS18B20才会做出反应;该指令用于选中某个DS18B20,然后对该DS18B20

进行读写操作。

3 )搜索ROM(指令码0XF0H): 用于确定接在总线上DS18B20的个数和识别所有的

64位ROM序列号。当系统开始工作,总线主机可能不知道总线上的器件个数或者不知

道其64位ROM序列号,搜索命令用于识别所有连接于总线上的64位ROM序列号。

4 )跳过ROM(指令码0XCCH): 此指令只适合于总线上只有一个节点;该命令通过

允许总线主机不提供64位ROM序列号而直接访问RAM,以节省操作时间。

5 )报警检查(指令码0XECH):此指令与搜索ROM指令基本相同,差别在于只有温

度超过设定的上限或者下限值的DS18B20才会作出响应。只要DS18B20一上电,告警

条件就保持在设置状态,直到另一次温度测量显示出非告警值,或者改变TH或TL的设

置使得测量值再一次位于允许的范围之内。储存在EEPROM内的触发器用于告警。

2、RAM指令

DS18B20有六条RAM命令:

1)温度转换(指令码0X44H):启动DS18B20进行温度转换,结果存入内部RAM。

2)读暂存器(指令码0XBEH):读暂存器9个字节内容,此指令从RAM的第1个字节

(字节0)开始读取,直到九个字节(字节8,CRC值)被读出为止。如果不需要读

出所有字节的内容,那么主机可以在任何时候发出复位信号以中止读操作。

3)写暂存器(指令码0X4EH): 将上下限温度报警值和配置数据写入到RAM的

2、3、4字节,此命令后跟需要些入到这三个字节的数据。

4)复制暂存器(指令码0X48H):把暂存器的2、3、4字节复制到EEPROM中,用

以掉电保存。

5)重新调E2RAM(指令码0XB8H):把EEROM中的温度上下限及配置字节恢复到

RAM的2、3、4字节,用以上电后恢复以前保存的报警值及配置字节。

6)读电源供电方式(指令码0XB4H):启动DS18B20发送电源供电方式的信号

给主CPU。对于在此命令送至DS18B20后所发出的第一次读出数据的时间片,

器件都会给出其电源方式的信号。“0”表示寄生电源供电。“1”表示外部电源供电。

下面是结合实际测试总结出来的DS18B20的操作流程

1、DS18B20的初始化

(1) 先将数据线置高电平“1”。
(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)。
(3) 数据线拉到低电平“0”。
(4) 延时490微秒(该时间的时间范围可以从480到960微秒)。
(5) 数据线拉到高电平“1”。
(6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20

所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行

等待,不然会使程序进入死循环,所以要进行超时控制)。
(7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出

的高电平算起(第(5)步的时间算起)最少要480微秒。
(8) 将数据线再次拉高到高电平“1”后结束。
  
2、DS18B20的写操作
这是我加上来的  注意:以下为写0的过程,如果是写1的话,那么延时顺序会不同,具体见下面的时序图
(1) 数据线先置低电平“0”。
(2) 延时确定的时间为2(小于15)微秒。
(3) 按从低位到高位的顺序发送字节(一次只发送一位)。
(4) 延时时间为62(大于60)微秒。
(5) 将数据线拉到高电平,延时2(小于15)微秒。
(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7) 最后将数据线拉高。

也就是说当我们写1的时候用的是下面的时序
(1) 数据线先置低电平“0”。
(2) 延时确定的时间为2(小于15)微秒。
(3) 按从低位到高位的顺序发送字节(一次只发送一位)。
(4) 延时2(小于15)微秒。
(5) 将数据线拉到高电平,延时时间为62(大于60)微秒。
(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7) 最后将数据线拉高。具体到时看程序的时序就知道了。
3、 DS18B20的读操作

(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时2(小于15)微秒。
(5)将数据线拉高“1”,同时端口应为输入状态。
(6)延时4(小于15)微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时62(大于60)微秒。

DS18B20时序图

(转)ds18b20时序说明相关推荐

  1. 使用树莓派GPIO17和GPIO18连接DS18B20温度传感器(关于DS18B20的时序设置)

    一.树莓派自带W1-GPIO读取 在树莓派中有一种自带的查看DS18B20温度信息,已经写好DS18B20时序,对外设设备进行读取信息然后保存的值在/sys/bus/w1/devices/28-xxx ...

  2. #51单片机#DS18B20硬件原理以及通信的工作时序

    DS18B20的硬件原理--温度存储器 DS18B20的温度测量范围:-55~+125°C. 如上图所示,DS18B20温度存储器一共有两个字节.LSB低字节,MSB高字节.Msb字节高位,Lsb字节 ...

  3. DS18B20 Datasheet时序完全解读

    DS18B20 Datasheet时序完全解读 本文章转自网络,本来想自己整理 但由于时间关系只能贴上原帖,这篇文章不错,教会大家如何看懂复杂难懂的datasheet 希望对大家有帮助 DS18B20 ...

  4. 【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取

    目录 硬知识 DS18B20介绍 时序 初始化时序 写时序 读时序 命令 ROM 操作命令 ROM 搜索举例 存贮器操作命令 示例程序 DS18B20.c DS18B20.h 测试程序 定时器中断服务 ...

  5. ds18b20温度转换指令_学习心得 | 温度检测工程模块划分总结与案例分析

    本文为明德扬原创文章,转载请注明出处! 很多朋友在学习FPGA的时候会发现模块划分很令人头大,今天我就通过明德扬温度检测工程来与大家分享一下本人的划分思路. 明德扬温度检测工程是基于FPGA的一个实用 ...

  6. ds18b20驱动程序Linux,基于linux下的ds18b20驱动程序的编写

    基于Linux操作系统下面的驱动程序的编写 一.所用的平台: 硬件平台:Mini2440 Size of NAND:256M linux kernel:linux-2.6.32.2 二.编写ds18b ...

  7. 51单片机温度传感器DS18B20

    51单片机温度传感器DS18B20 实现功能 插上DS18B20温度传感器,数码管显示检测的温度值 单片机型号:STC89C52 DS18B20介绍 1.DS18B20简介 DS18B20 是由 DA ...

  8. C51 - DS18B20

    Thermometer 1> 实验概述 2> 硬件设计 3> DS18B20 3.1> 原理框图 3.2> 数据格式 4> 单总线(1-Wire)通讯协议 4.1& ...

  9. 温度传感器DS18B20介绍

    [转载]温度传感器DS18B20 原地址: http://c.biancheng.net/cpp/html/1958.html DS18B20 是美信公司的一款温度传感器,单片机可以通过 1-Wire ...

最新文章

  1. git remote 命令
  2. Interface Builder 和UIController的联系
  3. hdf5与hdfs的区别
  4. ROS-Solidworks转URDF
  5. delphi edit里面的文字如何添加下划线_标题设计如何处理更吸引人?来看设计高手的实用技巧...
  6. a+=b不一定等于a=a+b
  7. LeetCode 16. 最接近的三数之和(固定左端+滑动窗口)
  8. oracle临时表空间暴涨,如何解决Oracle临时表空间过大
  9. su、sudo、sudo su、sudo -i的用法和区别
  10. MyEclipse注册码
  11. java小游戏跳棋_Java跳棋小游戏源代码
  12. 《Java程序设计基础 第3版》pdf 附下载链接
  13. Latex常用功能模板集合
  14. XX复盘记录(模板)
  15. ie8无法打开oracle em,IE8无法进入debug模式而引发的Oracle数据库问题-Oracle
  16. IT,互联网,科技,技术博客网站推荐
  17. Java角度制向弧度制转化
  18. Macbook 删除被锁定的应用
  19. 2万行java代码的系统_PublicCMS: 200万行代码修改 打造安全快速的java cms 轻松支撑千万数据、千万PV;目前已经拥有全球0.0002%的用户,诸多明星网站案例。...
  20. codeforces1098D Eels

热门文章

  1. 实体命名识别(NER)任务中加词典
  2. 欧洲统一语言参考标准C1,浅述欧洲统一语言参考标准.doc
  3. 企业资源管理咨询公司名录
  4. 二年级计算机教学模板,二年级信息技术教案模板三篇
  5. Project 1 :Python爬虫源码实现抓取淘宝指定商品所有评论并保存到文件
  6. lmms 平移_用LMMS放下节奏
  7. 教育培训企业如何进行品牌推广?全网天下告诉你
  8. 盒子模型详细讲解(图码交融)
  9. 研发组织中的“长尾类”问题如何看待和消除?
  10. 函数论_E.C.Tichmarsh_Page 4 例题 iii 狄利克雷级数一致收敛