DS18B20数字温度传感器

一、DS18B20简介

1.DS18B20模块

1.1 序列号

1.2 高速暂存器

0,1字节温度数据;2字节温度报警高位,3字节,温度报警低位;4字节配置寄存器;5,6,7字节设备内部使用(保留位);8字节,CRC循环校验位。

1.2.1 温度传感器

DS18B20的核心模块是温度传感器,温度传感器用户可配置9,10,11,12位(分别对应的温度精度为0.5,0.25,0.125,0.0625),温度测量和AD转换命令[44h]。

温度数据以16位符号扩展的二进制补码形式存储在温度寄存器中。符号位(S)表示温度是正还是负:对于正数S = 0,对于负数S = 1;温度数据帧格式如下:

供电方式的确定,命令Skip ROM [CCh],确定是VDD还是寄生电源供电。

1.2.2 配置寄存器

通过R1和R0设置温度测量分辨率;其余位给设备内部使用,不能覆盖

1.2.3 CRC循环校验

高8位为CRC校验位

2.通信协议:1-wire/单总线

二、DS18B20命令

1.ROM指令

1.1 SKIP ROM [CCh] 跳出ROM

当总线上只有一个DS18B20时,可以不发送64bit数据,以节省时间,读指令(Read Scratchpad [BEh])会默认跟随跳出指令(SKIP ROM [CCh])发出。

2.DS18B20功能指令

三、DS18B20时序

1.初始化时隙

总线拉低480us -> 延时等待60us -> 采样存在脉冲(为1表示初始化失败跳回idle,为0表示初始化结束,开始配置ROM)

2.读写时隙

2.1 写时隙

主设备通过写时隙将命令写入 DS18B20 中,写时隙有两种情况:写“1”和写“0”时 隙。主设备通过写 1 时隙来向 DS18B20 中写入逻辑 1,通过写 0 时隙来向 DS18B20 中写入 逻辑 0。当主设备将总线从高电平拉至低电平时,启动写时隙,所有的写时隙持续时间最 少为 60us,每个写时隙间的恢复时间最少为 1us。 当总线(DQ)拉低后,DS18B20 在 15us 至 60us 之间对总线进行采样,如果采的 DQ 为高电平则发生写 1,如果为低电平则发生写 0,如上图所示(图中的总线控制器即为主设备)。 如果要产生写 1 时隙,必须先将总线拉至逻辑低电平然后释放总线,允许总线在写 隙开始后 15us 内上拉至高电平。若要产生写 0 时隙,必须将总线拉至逻辑低电平并保持不 变最少 60us。

2.2 读时隙

当我们发送完读取供电模式[B4h]或读高速缓存器[BEh]命令时,必须及时地生成读时隙,只有在读时隙 DS18B20 才能向主设备传送数据。每个读时隙最小必须有 60us 的持续 时间以及每个读时隙间至少要有 1us 的恢复时间。当主设备将总线从高电平拉至低电平超 过 1us,启动读时隙,如下图所示。当启动读时隙后,DS18B20 将会向主设备发送“0”或者“1”。DS18B20 通过将总线 拉高来发送 1,将总线拉低来发送 0 。当读时隙完成后,DQ 引脚将通过上拉电阻将总线拉高至高电平的闲置状态。从 DS18B20 中输出的数据在启动读时隙后的 15us 内有效,所以,主设备在读时隙开始后的 15us 内必须释放总线,并且对总线进行采样

四、工程实践

1.系统框图

2.程序设计

2.1 DS18B201驱动模块设计
2.1.1 DS18B20读取流程

1).初始化(IDLE)

2).ROM 配置,跳过ROM(ROM_SKIP)

3).发送温度转换命令,等待温度转换完成;

4).再次初始化,跳过ROM

5).发送温度读取命令,等待温度读取完成

2.1.2 状态机设计

2.1.3 驱动模块代码
module DS18B20_drive (
    input               clk             ,
    input               rst_n           ,
    inout   	        dq              ,
    output      [21:0]  temp_data       ,
    output              sign            ,
    output  reg         temp_data_vld              
);

//延时计数器最大值
parameter   DELAY_480US = 15'd24_000,
            DELAY_240US = 15'd12_000,
            DELAY_1US   = 15'd50,
            DELAY_12US  = 15'd600,
            DELAY_20US  = 15'd1_000 ,
            DELAY_15US  = 15'd1_500 ,
            DELAY_60US  = 15'd3_000 ,
            DELAY_61US 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值