瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。
【公众号】迅为电子
【粉丝群】824412014(加群获取驱动文档+例程)
【视频观看】嵌入式学习之Linux驱动(第十四篇 单总线_全新升级)_基于RK3568
【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板
第156章 DS18B20介绍
本篇使用温度传感器DS18b20进行举例学习单总线。所以本章节我们来认识下DS18b20。
156.1 DS18b20芯片概述
DS18b20是一种数字温度传感器芯片,提供9到12bit分辨率的温度测量,可以通过可编程非易失性存储单元实现温度的下限和上限报警。它是基于单总线通信协议的设备,只需要一根信号线和一根地线。DS18b20能够以较高的精度测量温度精确到0.0625°C。它具有广泛的测量范围,通常介于-55°C到+125°C之间。DS18B20芯片可以通过单总线从主设备获取供电,也可以通过外部电源进行供电。这使得它在一些低功耗应用中能够灵活选择供电方式。每个DS18b20都会有一个全球唯一的64位序列号,可以将多个DS18b20串联在同一根单总线上进行组网,只需要一个处理器就可以控制分布在大面积区域中的多颗DS18b20。这种组网方式特别适合HVAC环境控制,建筑,设备,粮情测温和工业测温以及过程监测控制等应用领域。
156.2 DS18b20基本性能
DS18B20是一款数字温度传感器芯片,具有以下基本性能特点:
- 采用单总线接口仅需一个端口引脚进行通信
- 每颗芯片具有全球唯一的64位的序列号
- 具有多点分布式测温功能无需外围元器件
- 可通过数据线供电,供电电压范围为2.5V~5.5V
- 测度测量范围为-55°C到+125°C
- 在-10°C~ 70°C范围内精确度为±0.4°C
- 温度分辨率9-12位可选
- 最高12位精度下,温度转换速度小于750ms
- 具有用户自定义的非易失性温度报警设置
- 报警搜索命令识别并标识超过程序设定温度的器件
- 超强静电保护能力:HBM 8000V MM 800V
- 可提供贴片的MSOP8,SOP8封装和3脚的TO-92、TO-92S封装。
156.3 DS18b20应用场景
DS18B20广泛应用于各种温度监测和控制场景。以下是一些常见的应用场景:
室内温度监测:DS18B20可以用于监测室内温度,例如住宅、办公室、实验室等。它可以提供精确的温度数据,帮助调整空调、采暖系统或其他温度控制设备。
温室和农业:在温室和农业领域,DS18B20可以用于监测植物生长环境的温度。这有助于优化种植条件,提高作物的生长效率和产量。
水族箱温度控制:DS18B20可用于监测水族箱的水温,确保鱼类和其他水生生物的舒适和健康。
工业自动化:在工业自动化中,DS18B20可以用于监测机器、设备或工艺过程中的温度。这有助于实现温度控制、故障监测和预警等功能。
太阳能热水器:DS18B20可以用于太阳能热水器系统中的温度监测和控制。它可以测量太阳能收集器和水箱中的温度,以优化热水的供应和节约能源。
冷链物流:在冷链物流中,DS18B20可用于监测货物运输过程中的温度。它可以确保货物在适宜的温度条件下运输,以保持产品的质量和安全性。
气象站:DS18B20可以用于气象站中的温度测量。它可以提供准确的环境温度数据,用于天气观测和气候研究。
156.4 DS18b20引脚配置和封装
DS18B20芯片引脚配置:
- VDD:供电引脚,用于提供芯片的正电源。
- DQ:数据引脚,用于单总线通信和数据传输。
- GND:地引脚,连接芯片的地(负电源)。
DS18B20芯片可用于不同的封装类型,其中最常见的封装是TO-92封装和TO-92-3封装。这些封装都是具有三个引脚的小型封装,适用于直插式安装和表面贴装。
TO-92封装是一种常见的小型塑料封装,引脚按照顺序排列,依次为VDD、DQ和GND。
TO-92-3封装与TO-92封装类似,但引脚顺序略有不同。TO-92-3封装的引脚顺序为GND、DQ和VDD。
除了这些常见的封装类型,DS18B20还可以在其他封装类型中使用,例如SOT-23封装和TO-263封装等,这些封装类型可能具有不同的引脚排列和尺寸。如下图所示:
156.5 DS18b20内部结构
DS18b20是一种数字温度传感器芯片,其内部结构主要包括以下组成部分,如下图所示:
- 温度传感器:DS18B20内部集成了温度传感器,用于测量环境的温度。传感器通常基于基准电压的变化来检测温度,并将其转换为数字信号。
- A/D转换器:DS18B20芯片内部包含了一种模数转换器(A/D转换器),用于将传感器测量到的模拟温度值转换为相应的数字表示。这使得温度数据能够以数字形式进行处理和传输。
- 存储器:DS18B20芯片还具有内部存储器,用于存储配置信息和温度测量结果。存储器可以存储唯一的64位地址、温度分辨率和其他相关设置。
- 控制逻辑:DS18B20芯片包含了控制逻辑电路,用于管理温度测量、通信和其他相关功能。控制逻辑协调各个部分的操作,并与主设备进行通信。
- 单总线接口:DS18B20采用了单总线通信协议,其内部结构包括一条数据线和一个上拉电阻,用于与主设备进行通信。单总线接口简化了连接和通信的布线,使得多个DS18B20传感器能够方便地串联在同一条总线上。
这些组成部分相互配合,使得DS18B20芯片能够准确地测量温度并提供数字输出。其结构设计简单、集成度高,使得DS18B20在各种温度监测和控制应用中得到广泛应用。
存储器由9个字节组成,其分配如下表所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节,单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如下表所示。
156.6 DS18b20寄存器介绍
DS18B20芯片具有几个重要的寄存器,用于配置和控制传感器的功能。以下是DS18B20常用的寄存器介绍:
- 温度寄存器(Temperature Register):温度寄存器存储了最近一次温度测量的结果。它是一个16位的寄存器,包含了温度值的原始数据。通过读取温度寄存器中的数据,并结合分辨率设置,可以计算出实际的温度值。
- 配置寄存器(Configuration Register):配置寄存器用于设置DS18B20的工作模式和温度分辨率。它是一个8位的寄存器,每个位对应一个配置选项。通过写入配置寄存器,可以选择温度分辨率、触发温度转换和使用电源供电模式等。
- 精度寄存器(Resolution Register):精度寄存器用于设置温度分辨率。它是一个8位的寄存器,每个位对应一种分辨率选项。通过写入精度寄存器,可以选择不同的温度分辨率,例如9位、10位、11位或12位。
- 唯一地址寄存器(Unique Address Register):唯一地址寄存器存储了DS18B20芯片的唯一64位地址。每个DS18B20芯片都有唯一的地址,通过读取唯一地址寄存器中的数据,可以获取芯片的地址信息。
这些寄存器可以通过单总线通信协议与DS18B20进行读写操作。通过读取温度寄存器和唯一地址寄存器,可以获取温度测量结果和唯一地址信息。通过写入配置寄存器和精度寄存器,可以设置温度分辨率和其他相关配置。
156.6.1配置寄存器
配置寄存器用于设置DS18B20的工作模式和温度分辨率。它是一个8位的寄存器,每个位对应一个配置选项。如下图所示:
注:上电默认设置R0=1,R1=1(12位精度)。精度和转换时间之间有直接关系。配置寄存器的位7和位0到4被器件保留,禁止写入。温度分辨率设置表如下所示:
156.6.2 温度测量寄存器
DS18B20芯片的温度寄存器是一个16位的寄存器,用于存储最近一次温度测量的原始数据。温度寄存器的位布局如下所示:
温度寄存器的最低有效位(LSB)是2^-4位,表示温度的最小精度为0.0625°C。其他位依次表示更高的温度精度,分别为2^-3(0.125)、2^-2(0.25)、2^-1(0.5)、2^0(1)、2^1(2)、2^2(4)、2^3(8)。
DS18B20芯片的温度寄存器中存储的原始数据可以通过以下步骤计算出实际温度值:
1 从温度寄存器读取的16位数据可以解释为一个有符号整数,其中最高位(MSB)表示符号位。如果符号位为0,表示正温度;如果符号位为1,表示负温度。
2 取出温度寄存器中的低11位(位4到位15),这些位表示温度的绝对值,其中位值为1表示该位对应的温度分辨率有效。
3 将这11位数据与符号位组合成一个有符号整数。
4 根据所选择的温度分辨率,将有符号整数乘以相应的分辨率因子,以获得实际的温度值。
5 当温度大于0时,符号位为0,测量到的温度值乘以分辨率因子即可得到实际的温度。当温度小于0时,符号位为1,测量得到的温度值取反加一再乘以分辨率因子即可得到实际的温度。
举个例子,假设选择了12位的温度分辨率,并从温度寄存器读取的数据为0x1FFF。
0x1FFF的二进制表示为:0001 1111 1111 1111。最高位为0,表示正温度。
取出低11位:111 1111 1111。将这11位与符号位组合,得到有符号整数为:0111 1111 1111(对应0x07FF)。对于12位的温度分辨率,分辨率因子为0.0625°C。将有符号整数0x07FF乘以分辨率因子:0x07FF * 0.0625 = 127.9375°C。因此,从温度寄存器读取的数据0x1FFF对应着约127.94°C的实际温度值。
156.7 DS18b20指令介绍
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
ROM指令表如下所示:
RAM指令表如下所示:
操作举例:
当单总线上只有一个DS18b20的时候:
1 开始进行温度转换:复位信号->发送ROM指令OXCC跳过搜索->发送RAM指令0x44进行温度转换。
2 读温度:复位信号->发送ROM指令OXCC跳过搜索->发送RAM指令0xbe读暂存器。
3 设置ds18b20:复位信号->发送ROM指令OXCC跳过搜索->发送RAM指令0x4e写暂存器->要写的数据。
当单总线上有多个ds18b20的时候
1 开始进行温度转换:复位信号->发送ROM指令0x55匹配指令->发送DS18b20的地址->发送RAM指令0x44进行温度转换。
2 读温度:复位信号->发送ROM指令0x55匹配指令->发送DS18b20的地址->发送RAM指令0xbe读暂存器。
3 设置ds18b20:复位信号->发送ROM指令0x55匹配指令->发送DS18b20的地址->发送RAM指令0x4e写暂存器->要写的数据。