单片机原理及应用课件:第10章-一线总线_第1页
单片机原理及应用课件:第10章-一线总线_第2页
单片机原理及应用课件:第10章-一线总线_第3页
单片机原理及应用课件:第10章-一线总线_第4页
单片机原理及应用课件:第10章-一线总线_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容提要

一线总线时序分析及应用

10.4一线总线时序分析应用 代表产品是温度传感器和ID码芯片。特点如下: (1)一线传输。数据线和串行时钟线合并,统称DQ线,为数据数输入/输出端。 (2)单主机,外围接口器件都是从器件。 (3)总线中的从器件采用器件地址编码方法。每个器件唯一的64位串行码,用于主机对从器件识别和寻址。 (4)一线总线时序中有严格的时间参数,对时间操作的精度要求很高。10.4.1DS18B20简介

1.DS18B20的一般特性 (1)工作电压范围3~5V,并可通过数据线对器件供电。 (2)温度测量范围为-55℃~+125℃。在-10℃~+85℃范围内,保证±0.5℃的测量精度;整个测量范围内,保证±2℃的测量精度。其测量结果可选择9位或12位转换输出。 (3)温度转换速度:12位数字转换时间为750ms。 (4)具有温度报警功能,可长期保存报警温度的设置值,掉电不丢失。

(5)64位串行地址编码,用于系统主机对其识别与通信。2.DS18B20的内部结构

18B20内部结构如图10-17所示。18B20主要由一线接口和64位ROM、寄存器组和控制电路、温度传感器和CRC(循环校验码产生器)等4个部分组成。器件外部只有DQ(数据传送线)、VDD和GND三个管脚。1)DS18B20内部存储器布局

18B20内部存储器布局如图10-18所示。分为两个区,图中左边9个SRAM单元,称为暂存寄存器,括号内的数据为18B20的上电复位值。 图右侧3个非易失性(EEPROM)存储单元。由于TH和TL及芯片配置寄存器与18B20的工作任务有关,需要长期保存。它们的内容(出厂值或用户设定值),决定了图中左边暂存寄存器组中第2、3、4字节的内容。2)转换温度寄存器格式

DS18B20的转换温度存于其内部的转换温度寄存器中,其格式如图10-19所示。

当温度为负值时,输出值以补码的形式输出,表10-11为典型温度的对应输出值。DS18B20上电复位时转换温度寄存器的内容为0550H即85℃。

当温度为负值时,输出值以补码的形式输出,表10-11为典型温度的对应输出值。DS18B20上电复位时转换温度寄存器的内容为0550H即85℃。 例如,温度转换值为191H=0000000110010001B

则检测到的温度值为+24+23+20+2-4=25.0625℃

又如,温度转换值为FF5EH=1111111101011110B

求补码:0000000010100001+1=0000000010100010

则检测到的温度值为-(23+21+2-3)=-10.125℃

3)

TH和TL触发寄存器

18B20的温度报警功能是通过设置其内部TH和TL触发寄存器实现的。他们存储用户设定的报警温度上、下限值。TH和TL触发寄存器的数据格式相同,如图10-20所示。图中的“S”位为报警标志位,当S=1时,表示被测温度超出了设定的报警温度上或下限值。

DS18B20每次完成温度转换后,与TH和TL触发寄存器的内容进行比较,当测得的温度超出用户设定的报警温度上或下限值时,“S”位被置“1”。如在下一次温度转换后,温度不超限,则“S”位被自动复位。

4)DS18B20的芯片配置寄存器的数据格式

18B20的芯片配置寄存器的功能是确定18B20的温度转换结果的位数,以实现不同测量精度和转换时间的要求,芯片配置寄存器数据格式如图10-21所示。

图中R1、R0位的组合,确定了芯片对温度转换结果的位数及转换时间。 转换结果的位数及转换时间与R1、R0的关系如表10-12所示。5)DS18B20的循环冗余校验码(CRC)的意义

CRC由DS18B20的CRC发生器自动生成。借用CRC值,用户可实现对多点温度采集系统中节点位置、工作状态、温度转换和数据传输的正确性等状态的判别。

DS18B20中有两个不同意义的CRC值。一个是暂存寄存器组中的CRC值,它是寄存器组中前8个寄存器值的CRC值,用于检验温度转换和数据传输的正确性。上电后,该CRC值由EEPROM的值决定,见图10-18。

另一个是18B20内部有唯一的64位激光编码,只读,即ROM。用于多从器件系统的识别。其数据板式如图10-22所示。其中最低8位为18B20家族编码,固定为28H;接下来是48位序列号,最高位是前56位(7字节)数据的CRC校验值。

6)CRC算法

DALLAS一总线器件的CRC方程统一为:

在18B20中的循环冗余校验,是通过CRC发生器实现的,其算法如图10-23所示。

(8-1)

3.DS18B20的ROM功能命令集

18B20命令集分ROM命令和功能命令两类。ROM命令用于器件64位编码的识别、总线上器件的数量和种类;功能命令用于实现DS18B20的功能。现将DS18B20命令集列于表10-13中,以便在整体上掌握其指令系统。

6.DS18B20的引脚功能及供电方式

18B20采用TO-92、8PinSO及8PinμSOP三种封装。图10-24为TO-92封装器件引脚图。注意:当面对芯片的标称平面时,最左边为1号引脚(GND)。当1、3接反时,18B20在短时间内不会烧毁,但器件发热,不能正常读、写。

图10-25是单片机与18B20的接口电路图。图中18B20采用外接电源方式,其VDD端用3~5.5V电源供电。

图10-26是18B20寄生供电方式。为此,VDD必须接地。单片机通过I/O控制图中的MOSFET管,为18B20提供能量。以这种寄生供电方式构成的系统,可以带更多的一线产品,并能可达到较远的传输距离。

5.一线总线时序分析

(1)初始化时序 初始化时序如图10-27所示。主器件将总线拉低至少480μs后,将总线拉成高电平,之后等待从器件的应答信号,等待时间在15~60μs之间。正常情况下,从器件将产生60~240μs宽的低脉冲作为应答信号,表示从器件在线,可接收主器件的命令与读操作。2)读/写时序

18B20读/写操作是靠时间片来识别总线信息的。又有读、写“0”和“1”时间片两种。写时间片至少要持续60μs(但不要超过120μs),包括两个时间片中间的至少1μs的电平转换时间。图10-28(a)为写时序,图10-28(b)为读时序。

(3)读时序 读数据的过程从DQ端由高向低电平跃变开始。读与写不同于:在读时间片开始后,主机要在15μs之内完成读进程,因为在读命令下达后,读时间片就开始了,总线状态随18B20的输出而变化。因此,在读过程中主机要保持DQ为低电平15μs。之后,主机要释放DQ端,总线回到高电平状态最长时间为45μs,整个过程应在60μs之内完成。见图10-28。10.4.3DS18B20的应用1.DS18B20命令流程 为应用好DS18B20,使用者需要具备以下条件: (1)对DS18B20的数据手册中关于工作原理和操作技术细节的内容有深入的理解。 (2)深入理解DS18B20的操作时序。 (3)掌握实现DS18B20各种功能的流程,并能编写驱动程序实现其功能。 18B20的操作一般由以下固定的步骤顺序组成: (1)初始化18B20,包括主机发复位脉冲,18B20应答,主机确认等。 (2)主机发ROM命令到18B20,后跟所需的数据。 (3)主机发功能命令,后跟所需的数据。

DS18B20的ROM命令流程如图10-29所示,其功能命令流程如图10-30所示。2.搜索ROM原理

1)搜索算法的物理基础

要在众多器件中,一个个地确定它们的64位ROM编码,需要18B20对搜索ROM命令(F0H)有特别的反应。事实正是如此,听到搜索广播命令后,每个18B20会向总线输出两个数据位,前面是64位ROM编码之一,后跟此位的“非”。主机读到的是所有器件码的“与”值。“两读”内容的4种组合,对搜索ROM编码所提供的信息及分析结果如表10-14所示。 “两读”内容(原码、非码、线与)的特征,是搜索算法的物理基础之一。 “一写”,写什么?18B20对“一写”的内容有如下反应:如果器件编码位与写的值相同,则继续保持与总线的联系;否则从总线上“退出”,不再响应主机发布的命令,直到主机进行下一次复位为止。这就是识别算法的物理基础之二。

设“两读”结果为01,说明总线上所有器件该位ROM码均为0,为保持器件与总线的联系,“一写”内容0。同理,如“两读”数据为10,主机则应写1。“一写”的“排除”功能,使每64次“两读一写”,确定一个器件的64位编码成为可能。 2)ROM编码的“排除”搜索算法示例

【例10-5】为使讨论的问题简单扼要,假设某一线总线器件有4位ROM编码,器件具有DS18B20的功能。现有4个这种器件在总线上,它们的编码分别为0000、1111、0101、1010。试描述ROM编码的“排除”搜索算法确定它们编码的过程。 解:4个4位编码器件在总线上,需要4轮4循环“两读一写”才能完成搜索。表10-15为一个器件编码搜索的全过程,确定总线上有一个ROM编码为0000的器件。

3.DS18B20的51机应用程序举例

【例10-6】DS18B20的基本功能-温度采集的用法。设总线上只有一片一总线器件,即一片18B20。设在图8-25(b)中,51机用P1.0与DS18B20的DQ端相连接。并设系统时钟频率为:fosc=12MHz。 解:在系统中若一总线上只有一个器件,可以利用DS18B20命令,直接命令器件进行温度转换或读取温度的工作,参考的汇编程序如下: DQ EQU P1.1 RESULT EQU 40H ORG 0000H LJMP MAIN ORG 0040HMAIN: MOV SP,#5FH MOV R0,#RESULT LCALL INIT;复位一总线,并检测应答

MOV A,#0CCH

LCALL WRITE_BYTE;发跳过ROM命令

MOV A,#44H LCALL WRITE_BYTE ;发启动转换命令

LCALL DEYAY1S;延时1s待温度转换完成

LCALL INIT MOV A,#0CCH;发跳过ROM命令

LCALL WRITE_BYTE MOV A,#0BEH ;发读存储器命令

LCALL WRITE_BYTE LCALL READ_BYTE MOV @R0,A ;存温度值低位字节

LCALL READ_BYTE INC R0 MOV @R0,A ;存温度值高位字节

SJMP $INIT: CLR DQ ;复位总线,并检测应答。

MOV B,#240 DJNZ B,$

;等待480μs,参考图10-27

CLR C

;清标志,C=1成功,总线有应答

MOV B,#1051W_ACK: ORL C,/DQ DJNZ B,1W_ACK ;等待420μs,参考图10-27 ANL C,DQ ;总线若总为高,C=0,失败

RETWRITE_BIT: CLR DQ ;写一位数据到总线子程序。总线拉低

MOV B,#27 ;等待2μs,完成下降沿起动时间片

MOV DQ,C DJNZ B,$

;等待54μs,参考图10-28(a)

SET DQ ;释放总线

RET ;最后2μs,完成时间片

READ_BIT: CLR DQ ;总线拉低

MOV B,#4 ;等待2μs SETB DQ ;释放总线

DJNZ B,$ ;等待10μs NOP MOV C,DQ ;读数据

MOV B,#21 DJNZ B,$ ;等待42μs,参考图10-28b RETWRITE_BYTE:MOV R7,#8 ;写一字节数据到总线子程序。WR_NEXTB: RRC A ;移出数据

LCALL WRITE_BIT ;写一位

DJNZ R7,WR_NEXTB RET READ_BYTE: MOV R7,#8 ;写一字节数据到总线子程序。R_NEXTB: LCALL READ_BIT ;读一位

RRC A ;移入数据

DJNZ R7,R_NEXTB RET DEYAY1S: MOV R7,#8 ;延时1s子程序8XDELY: MOV R6,#250500US: MOV R5,#250 DJNZ R5,$ DJNZ R6,500US DJNZ R7,8XDELY RET END 【例10-7】设在图10-25中,标准51机用P1.1与DS18B20的DQ端相连接,51机系统时钟频率为12MHz。试用C51编写核对DS18B20的进行温度采集的程序,并用CRC验证数据的正确性。

解:检验温度转换和数据传输的正确性,用DS18B20中寄存器组中的CRC值,它是寄存器组中前8个寄存器值的CRC值。编程步骤归纳如下: (1)主机向总线发复位脉冲,对总线上所有DS18B20复位。 (2)主机发跳过ROM命令(CCH)。 (3)主机向总线上的所有器件发置换温度的命令(44H)。 (4)等待DS18B20温度转换完成。 (5)主机读取该DS18B20暂存寄存器内容,包括温度值、CRC值共9B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论