三防平板电脑单总线(1-wire)串行通信是美国 Dallas 公司的一项专利技术,它采用单根信号线,既可传输时钟又可传输数据,而且数据传输是双向的。三防平板电脑单总线串行通信具有接口简单、硬件开销少、成本低廉、便于总线扩展和维护等优点。
三防平板电脑单总线串行通信采用简单的通信协议,通过一条公共数据线完成了一个主机/主控制器与一个或多个从机之间的半双工、双向通信,单总线串行通信的连接如图1所示。
图1 单总线串行通信的连接
三防平板电脑在数据传输过程中,总线状态为高电平时,主机向器件内部电容充电。当总线状态为低电平时,从机利用内部电容存储的电荷为器件
供电。典型的单总线主机包括一个漏极开路I/O口,并通过4.7 kΩ 的电阻上拉到3~5 V电源。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,这样允许设备在不发送数据时释放总线,以便其他设备使用该总线。单总线串行通信要求外接一个约4.7 kΩ 的上拉电阻,这样当总线闲置时,状态为高电平。
三防平板电脑主机和从机之间的通信通过三个步骤完成:初始化单总线器件、识别单总线器件、交换数据。由于二者是主从结构,只有主机呼叫从机时,从机才能答应,因此主机访问单总线器件时都必须严格遵循单总线串行通信的命令时序:初始化→ROM命令→功能命令。
目前常用的单总线器件有数字温度传感器(如 DS18B20)、A/D 转换器(如 DS2450)、单总线控制器(如DSIWM)等。
2.数字温度传感器DS18B20及应用
每一个单总线器件内都具有控制、收/发、存储等电路,为了区分不同的单总线器件,在生产单总线器件时厂家在内部刻录了一个64位的二进制ROM代码,即单总线器件的唯一ID,通过这个ID可以识别挂接在单总线上的器件。
(1)三防平板电脑DS18B20性能特点。数字温度传感器件DS18B20特点如下:
● 内含64位唯一ID。
● 独特的单总线接口方式,仅需一个端口引脚即可实现嵌入式处理器与 DS18B20的双向通信。
● 简单的多点分布应用,不需要任何外围器件。
● 内含寄生电源,可用数据线供电,电压范围为3.0~5.0 V。
● 测温范围-55~+125℃,可编程实现9~12位的数据读取方式,分辨率分别是0.5℃、0.25℃、0.125℃和0.0625℃,默认测量分辨率为0.0625℃(9位二进制数,含符号位)。
● 用户可自行设置非易失性温度报警的上下限值。
● 支持多节点组网功能,多个DS18B20可以并联在三条线上,实现多点测温。
● 温度数字量转换时间为200 ms(典型值)。
● 可以应用在温度控制、工业系统、消费品等热感监测系统中。
(2)三防平板电脑DS18B20的内部结构。DS18B20内部结构主要由四部分组成:64位光刻ROM和单总线接口、温度传感器、高温报警器TH和低温报警器TL、高速暂存器,如图2所示。
图2 DS18B20的内部结构框图
三防平板电脑其中DQ为数字信号输入/输出端,GND为电源地,VDD为外接供电电源输入端(在寄生电源接线方式时接地)。64位光刻ROM是出厂前被光刻好的,它可以看成DS18B20的地址序列号,不同的器件地址序列号不同。64位光刻ROM的结构如表6-3所示。
表1 64位光刻ROM的结构
DS18B20高速暂存器共9个存储单元,具体分配如表2所示。
表2 高速暂存器存储单元分配表
三防平板电脑第4号字节是配置寄存器,用于确定器件的转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的值。字节各位定义如下:
该字节低5位皆为1,TM位用于设置DS18B20是在工作模式(0,默认值为0),还是测试模式(1)。R1和R0决定转换精度位数,默认为12位,分辨率设置如表2所示。
表3 分辨率设置
第0号字节和第1号字节以16位补码形式存储转换后的温度值,温度值格式如图6-10所示。
图3 温度值格式
这里以12位转化为例说明温度高低字节存放形式及计算:三防平板电脑12位转化后得到的12位数据,存储在DS18B20的高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘以0.0625即可得到实际的温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘以0.0625才能得到实际的温度。
(3)DS18B20与51系列单片机的典型接口设计。在硬件上,DS18B20与单片机的连接有两种方法:一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时 VDD、GND 接地,I/O 接单片机 I/O。无论是内部寄生电源还是外部供电,I/O口线要接4.7 kΩ 的上拉电阻,DS18B20与微控制器的电路连接如图6-11所示。
图4(a)是与具有独立电源的DS18B20接线图,由于数据线空闲时为高电平,因此需要加一个4.7 kΩ 的上拉电阻,另外两个引脚分别接电源(外部供电)和地。
图5(b)是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,51系列单片机的I/O控制场效应管将单线总线上拉。采用寄生电源供电方式时,VDD和GND端都要接地。
图5 DS18B20接线图
3.DS18B20编程设计
三防平板电脑通过单总线端口访问DS18B20的协议,包括初始化、ROM操作命令和功能操作等命令。通过单总线的所有执行(处理)都是从一个初始化序列开始的。
下面就对常用的命令进行介绍,如初始化、写时序、读时序。
(1)复位与读写时序。DS18B20需要严格的协议以确保数据的完整性,协议包括几种单总线信号类型,如复位脉冲、应答脉冲、写0、写1、读0和读1等,所有这些信号,除了应答脉冲,都是由单总线控制器发出的。
① DS18B20的初始化时序。单总线控制器和DS18B20间的任何通信都需要以初始化序列开始。三防平板电脑单总线控制器先发送一个复位脉冲(最短为480 μs,最长不能超过960 μs的低电平信号)后释放总线,等待DS18B20 应答。DS18B20检测到总线上的上升沿后等待15~60 μs,然后发出一个存在(应答)脉冲(低电平持续60~240 μs)表明DS18B20已经准备好发送和接收数据。单总线控制器从发送完复位脉冲到再次控制总线至少要等待480 μs。DS18B20的初始化时序如图6所示。
图6 DS18B20的初始化时序
② DS18B20的写时序。当主机把数据线从逻辑高电平拉到逻辑低电平时,写时间隙开始。三防平板电脑这样有两种时间隙,即写1时间隙和写0时间隙。所有写时间隙必须持续最短60 μs,包括2个写周期加至少1 μs的恢复时间。I/O线电平变低后,DS18B20在一个15~60 μs的窗口内对I/O线进行采样。如果I/O线上是高电平,就写1,如果线上是低电平,就写0。如果主机要生成一个写时间隙,必须把数据线拉到低电平后
释放,在写时间隙开始后的15 μs 内允许数据线拉到高电平;如果主机要生成一个写0时间隙,必须把数据线拉到低电平并保持60 μs。写操作时序如图7所示。
图7 写操作时序
③三防平板电脑 DS18B20的读时序。DS18B20只有在主机生成读时间隙后才能转换数据。当从DS18B20读取数据时,主机生成读时间隙,从 DS18B20输出的数据在读时间隙的下降沿出现后15 μs内有效。因此,主机在读时间隙开始后必须把I/O引脚驱动为低电平15 μs,以读取I/O引脚状态。三防平板电脑读操作时序如图9所示。
在读时间隙的结尾,I/O 引脚将被外部上拉电阻拉到高电平,所有读时间隙必须最少60 μs,包括两个读周期加至少1 μs的恢复时间。
(2)操作命令。
① 三防平板电脑ROM命令。
● 读ROM(0x33H):该命令允许从DS18B20芯片中读取8位编码、序列号和8位CRC码,当总线上只有一个DS18B20时才可以使用。
图8 读操作时序
● 匹配 ROM(0x55H):该命令后面跟随64位 ID 时,可以在总线上找到一个唯一的DS18B20,只有匹配这个 ID 的芯片才能响应随后的命令,而所有不匹配的芯片都等待复位。
● 跳过ROM(0xCCH):当总线上只有单个芯片时,可以使用该命令跳过ROM搜索以节省时间。
● 搜索 ROM(0xF0H):当不知道总线上有几个芯片和各芯片的 ID 时,这条命令可以采用排除法识别总线上芯片的64位ID。
● 报警搜索(0xECH):在最近一次测温后,满足报警条件的芯片将响应这条命令。
② 功能命令。
● 启动温度转换(0x44):启动DS18B20进行温度转换。
● 读暂存器(0xBE):读暂存器9个字节内容。
● 写暂存器(0x4E):将数据写入暂存器的TH、TL字节。
● 复制暂存器(0x48):把暂存器内容写到E2PROM中。
● 读E2PROM命令(0xB8):把E2PROM中的内容写到暂存器。
● 读电源供电方式(0XB4):若是寄生电源返回0,若是外部电源则返回1。
(3)三防平板电脑DS18B20读取温度值的子程序编写。DS18B20最基本的操作有:初始化、写时序、读时序。下面给出了用C语言实现DS18B20初始化、写1个字节和读1个字节的子程序。
DS18B20的C语言程序如下。
(4)三防平板电脑主程序流程。读者可在以上子程序的基础上,参考图6-15所示的单路测量温度主函数流程图,以及图6-16所示的多路测量温度主函数流程图,自行设计编写单路或多路测量温度主函数、温度转换和显示程序等。