第6章+单总线数据传输

  • 格式:doc
  • 大小:1.09 MB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第6章单总线数据传输

第6章单总线数据传输

本章主要内容包括:

单总线技术概述

单总线数据传输协议

单总线驱动程序

本章首先对单总线的基本知识和芯片进行了简单介绍,接着详细论述了单总线数据传输协议,包括通信信号的类型、单总线通信的初始化、ROM命令、功能命令、单总线器件的ROM搜索。最后给出了单总线的驱动程序,以便读者参阅。

6.1单总线技术概述

1-wire单总线是Maxim全资子公司Dallas的一项专有技术。与目前多数标准串行数据通信方式,如SPI/IIC/MICROWIRE不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。

采用单总线接口芯片可以方便地组成数据交换网络,由单总线芯片组成的网络被称为微型局域网(Micro LAN)。微型局域网是一种主从式网络,它以个人计算机或单片机作为网络中的主设备,而网络中其他所有设备都被称为从设备,从设备由主设备集中管理来实现主设备和各从设备之间的数据通信。微型局域网的规模灵活可变,一个网络中的从设备数可以从几个到数千个不等,理论上几乎不存在限制。微型局域网的组网十分简单,只需要一对普通的双绞线就能组网,而且所有的从设备无需自带电源,因而具有组网快、成本低的特点,非常适于现场应用,是现场总线技术的一种新选择。1

为了更深刻的了解单总线技术,我们先从单总线芯片的硬件结构入手,引出单总线技术的特点,从而全面了解单总线技术。下面我们就从硬件方面来了解一下单总线芯片。

6.1.1单总线芯片简介

为了较为全面地掌握单总线系统,先简单的了解一下单总线的芯片。本节将分三个部分对单总线的芯片进行介绍:硬件结构、芯片序列号和芯片的供电。

1杨金岩郑应强张振仁.8051单片机数据传输接口扩展技术与应用实例[M]北京:人民邮电出版社出

版.2005.211~212

单片机与数据通信

1. 单总线硬件结构

顾名思义,单总线只有一根数据线。单总线标准为外设器件沿着一条数据线进行双向数据传输提供了一种简单的方案,任何单总线系统都包含一台主机和一个或多个从机,它们共用一条数据线。这条数据线被地址、控制和数据信息复用,大多数器件完全依靠从数据线上获得的电源供电,个别器件在许可的情况下由本地电源供电。当数据线为高电平时,电荷存储在器件内部;当数据线为低电平时,器件利用这些电荷提供能量。单总线采用线或配置,

端口的内部结构。

对于单总线器件,为了使每个器件在合适的时候都能被驱动.

它们与总线匹配的端口也必须具有开漏输出或3

态输出的功能。正如上文所述,系统主设备的I/O 端口也有类似的结构。出于主机和从机都是开漏输出,在主设备的总线侧必须有上拉电阻,系统才能正常操作。

单总线器件根据其应用场合,常用的封装形式有10种(参见6.1.2节中的表6.1),通常采用3引脚PR-35 封装,外形类似于小功率三极管(图6.2所示为DS18B20外观图),在三个引脚中有一个公共地端、一个数据输入/输出端和一个电源端。这个电源端可以为单总线器提供外部电源,从而免除总线集中馈电。对于大多数采用总线集中供电的单总线器件,等效于在各器件内部有一个约5µA 的恒流充电源(参见图6.1),从而使得单总线器件功耗较低。

单总线要求外接一个约5k Ω的上拉电阻,这样,单总线的闲置状态为高电平。不管什么原因,如果传输过程需要暂时挂起,

且要求传输过程还能够继续的话,则总线必须处于空闲状态。位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。如果总线保持低电平超过480µs ,总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM 写入等)具有足够的电源电流,必须在总线上提供强上拉(如图6.1所示的MOSFET)。

图6.2单总线芯片DS18B20外观图

第6章单总线数据传输

2. 单总线芯片序列号

单总线器件的最基本特点是每个器件都有一个采用激光刻制的序列号,任何单总线器件的序列号都不会重复。当有许多单总线器件连接在同一总线上时。系统主机可以通过器件的序列号来将需要进行访问的器件挑选出来。在这个挑选的过程中,必须有一种二进制查询算法来对总线上众多的器件进行挑选,一旦知道每个器件的地址,就可以利用地址选择任何一个器件进行通信。

单总线芯片序列号的第—个8位字节表示单总线芯片的分类码,例如可寻址开关DS2045的分类码为05H,数字温度计DSl822的分类码为10H,4通道A/D转换器DS2450的分类码为20H等,一共可以有256种不同类型的单总线芯片;序列号中接下来的48位是标识器件本身的序列号,可见每种类型的器件要生产248=281 474 976 710 656片后才会出现重复的序列码,经过计算不难发现这个数字相当于全球人均近5万片,所以在实际的使用中是不可能出现重复的;序列号的最后8位则是前面56位的CRC校验码。

系统主机与单总线产品进行通信时,为了定位和寻址该器件,必须首先准确地读取产品序列号。通过这64位的芯片序列号,系统主机就可以在任意多个节点的单总线网络中方便地识别出每个设备,实现数据通信。在数据通信过程中,当系统主机接收到64位的序列号后,可以计算出其中前56位序列码的循环冗余校验值,并与接收到的8位CRC字节进行比较,如果相等则说明本次数据传输正确无误,如果不等则表示传输出错。

每个单总线芯片(从设备)都具有生成CRC校验码的硬件电路,而作为系统主机的微处理器,既可以采用硬件电路来实现CRC校验码的生成,也可以来用软件的方法生成。采用软件的方法可以减少硬件开支,节约板上面积,是—种值得优先考虑的方法。在采用软件生成CRC校验码时,通常有两种途径:一种(目的是为了跟后面的另一种相对应)是通过计算,另一种是通过查表。计算方法是依据CRC校验码生成原理来设计程序,其优点是模块代码少,修改灵活,可移植性好,们计算的工作量大;而查表法则只需要极小的工作量即可实现。在实际的应用中,具体选择哪一种方法应该根据处理器的处理能力来决定。

下面以单总线温度传感芯片DS18B20为例讲述其CRC校验的计算方法。在集总控制系统中,某一片DS18B20的序列码为:(28H, 0BDH, 44H, 3FH, 00H, 00H, 00H, 77H)。其中28H产品系列代码,77H为CRC校验和。

DS18B20采用的CRC生成多项式为g(x)=x8+x5+x4+1。

具体的CRC计算过程如下:

∙设置CRC寄存器,并给其赋值00(hex);

∙将要处理的数据位存入输入数据寄存器;