第6章+单总线数据传输.docx
- 文档编号:4903689
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:20
- 大小:202.16KB
第6章+单总线数据传输.docx
《第6章+单总线数据传输.docx》由会员分享,可在线阅读,更多相关《第6章+单总线数据传输.docx(20页珍藏版)》请在冰豆网上搜索。
第6章+单总线数据传输
第6章单总线数据传输
本章主要内容包括:
Ð单总线技术概述
Ð单总线数据传输协议
Ð单总线驱动程序
本章首先对单总线的基本知识和芯片进行了简单介绍,接着详细论述了单总线数据传输协议,包括通信信号的类型、单总线通信的初始化、ROM命令、功能命令、单总线器件的ROM搜索。
最后给出了单总线的驱动程序,以便读者参阅。
6.1单总线技术概述
1-wire单总线是Maxim全资子公司Dallas的一项专有技术。
与目前多数标准串行数据通信方式,如SPI/IIC/MICROWIRE不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。
它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
采用单总线接口芯片可以方便地组成数据交换网络,由单总线芯片组成的网络被称为微型局域网(MicroLAN)。
微型局域网是一种主从式网络,它以个人计算机或单片机作为网络中的主设备,而网络中其他所有设备都被称为从设备,从设备由主设备集中管理来实现主设备和各从设备之间的数据通信。
微型局域网的规模灵活可变,一个网络中的从设备数可以从几个到数千个不等,理论上几乎不存在限制。
微型局域网的组网十分简单,只需要一对普通的双绞线就能组网,而且所有的从设备无需自带电源,因而具有组网快、成本低的特点,非常适于现场应用,是现场总线技术的一种新选择。
为了更深刻的了解单总线技术,我们先从单总线芯片的硬件结构入手,引出单总线技术的特点,从而全面了解单总线技术。
下面我们就从硬件方面来了解一下单总线芯片。
6.1.1单总线芯片简介
为了较为全面地掌握单总线系统,先简单的了解一下单总线的芯片。
本节将分三个部分对单总线的芯片进行介绍:
硬件结构、芯片序列号和芯片的供电。
1.单总线硬件结构
顾名思义,单总线只有一根数据线。
单总线标准为外设器件沿着一条数据线进行双向数据传输提供了一种简单的方案,任何单总线系统都包含一台主机和一个或多个从机,它们共用一条数据线。
这条数据线被地址、控制和数据信息复用,大多数器件完全依靠从数据线上获得的电源供电,个别器件在许可的情况下由本地电源供电。
当数据线为高电平时,电荷存储在器件内部;当数据线为低电平时,器件利用这些电荷提供能量。
单总线采用线或配置,主机为漏极输出,只能将总线下拉至低电平。
图6.1为单总线器件I/O端口的内部结构。
图6.1单总线器件I/O端口内部结构
图6.2单总线芯片DS18B20外观图
对于单总线器件,为了使每个器件在合适的时候都能被驱动.它们与总线匹配的端口也必须具有开漏输出或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)。
2.单总线芯片序列号
单总线器件的最基本特点是每个器件都有一个采用激光刻制的序列号,任何单总线器件的序列号都不会重复。
当有许多单总线器件连接在同一总线上时。
系统主机可以通过器件的序列号来将需要进行访问的器件挑选出来。
在这个挑选的过程中,必须有一种二进制查询算法来对总线上众多的器件进行挑选,一旦知道每个器件的地址,就可以利用地址选择任何一个器件进行通信。
单总线芯片序列号的第—个8位字节表示单总线芯片的分类码,例如可寻址开关DS2045的分类码为05H,数字温度计DSl822的分类码为10H,4通道A/D转换器DS2450的分类码为20H等,一共可以有256种不同类型的单总线芯片;序列号中接下来的48位是标识器件本身的序列号,可见每种类型的器件要生产248=281474976710656片后才会出现重复的序列码,经过计算不难发现这个数字相当于全球人均近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);
∙将要处理的数据位存入输入数据寄存器;
∙将数据的8-bit字符与8位CRC进行异或,并把结果存入数据位;
∙输入数据寄存器右移一位;
∙如果移出位为1,将数据位与8位18(hex)进行异或,结果存入数据位;
∙数据位与输入数据寄存器循环右移一位;
∙将数据位存入CRC寄存器;
∙数据位循环右移一位。
重复第2步至第8步直到8次移位全部完成。
此时一个8-bit数据处理完毕。
从第2步开始装入下一个数据直到所有数据全部处理完毕。
最终CRC寄存器的内容即为CRC值。
3.单总线芯片的供电
单总线接口技术的另外—个显著的特点就是不需要使用独立的电源,所有的单总线芯片都可以通过单线寄生电源供电。
图6.3所示对单线寄生供电的原理进行了描述。
图6.3寄生供电原理
在图6.3所示中,DQ引脚连接在单线总线上,整个器件的电源来自这条总线上并接的主机,这种“偷电”式的供电又称为寄生电源(ParasitePower)。
当总线处于高电平时不仅经过二极管给芯片提供了电源,同时又给内部电容器充电而存储了能量;当总线变为低电平时二极管截止,芯片改由电容器供电,仍可正常操作,当然维持时间不可能太长。
可见为了确保器件正常工作,总线上应该间隔地输出高电平,且保障能提供足够的电源电流,一般应有1mA。
因此当主设备位用5V电源时,总线的上拉电阻不可能大于5kΩ。
需要说明的是,当同一单总线上有多个器件同时操作时会出现供电不足的问题。
为了解决单总线供电不足的问题,可以采用图6.4所示的方法。
在图6.4中,使用MOSFET将I/O线的高电平强拉到5.0V,从而可以增加驱动电流。
图6.4使用MOSFET将单总线拉至5.0V
除了图6.4介绍的解决供电问题的方法外,还可以通过单总线芯片的VDD引脚使用外接电源的方法来解决这一问题。
在这种解决方法下。
应将I/O引脚通过4.7kΩ的电阻连接到正电源端。
采用这种外接电源供电的方法有如下的优点:
∙免除了电源驱动能力的后顾之忧,一条总线上挂接的节点数量可以真正不受限制;
∙无需很强的上拉;
∙在器件高负荷工作期间,I/O总线不必持久保持高电平给器件充电,这样可以提高数据传输速率;
∙使多个器件可以同时工作。
6.1.2单总线技术的特点及其应用
单总线技术以其简单的接线方式、低廉的成本、简单的程序设计有着无可比拟的优势,下面就来详细的介绍单总线的特点及其应用。
1.单总线技术的特点
单总线技术有以下三个显著的特点:
∙单总线芯片通过一根信号线进行地址信息、控制信息及数据信息的传送,并通过该信号线为单总线芯片提供电源;
∙每个单总线芯片都具有全球唯一的访问序列号.当多个单总线器件挂在同—单总线上时,对所有单总线芯片的访问都通过该唯一序列号进行区分;
∙单总线芯片在工作过程中,不需要提供外接电源,而通过它本身具有的“总线窃电”技术从总线上获取电源。
除了以上的三个特点,单总线技术采用了特殊的总线通信协议来实现数据通信。
在通信过程中,单总线数据波形类似于脉冲宽度调制信号,总线发出复位信号(保持低电平的周期最长)同步整个总线,然后由系统主机初始化每一位数据时隙,利用宽脉冲或窄脉冲来实现写“0”或写“1”。
在读数据时,主机利用窄脉冲初始化时隙,从机将数据线保持在低电平,通过展宽低电平脉冲返回逻辑“0”,或保持脉冲宽度不变来返回逻辑“1”。
大多数的单总线器件支持两种数据速率,较低的数据速率(标准)约为14kbit/s,较高的数据速率约为140kbit/s。
关于单总线的数据传输协议将在6.2节中进行详细的介绍。
2.应用单总线技术的典型芯片
单总线芯片不仅可以方便地组建基于单总线的微型局域网,而且由于其引脚极少,容易与微处理器等其他器件接口,在PCB板的布线过程中也较为简单,干扰小、而且省电,因此也广泛应用于各类电子设备中,如设备的安全密码、设备属性登记与标识、设备的温度监控、电源电压监视、外部事件记录、实时时钟等。
DallasSemiconductor公司生产的单总线芯片系列已有30多个产品,而且每年都有不少的新产品推出。
为了方便读者开发应用单总线器件,现将目前已有的单总线品种列在表6.1中,表中的封装结构代号含义为:
1为PR-35、2为SSOP、3为TO-92、4为SOT-223、5为TSOC-6、6为DIPl6、7为SOIC16、8为SOIC8(150mil)、9为SOIC8(208mil)、10为CSP。
表6.1中的各类存储器容量均以二进制的位为单位。
表6.1单总线芯片总览
名称
功能和用途
ROMID
存储器
封装
DS1820
9位数字温度计
64位
16位EEPROM
1,2
DS18B20
9~12位数字温度计
64位
16位EEPROM
3,8
DS18S20
9位数字温度计
64位
16位EEPROM
3,8
DS1822
经济型9~12位数字温度计
64位
无
3,8
DS2223
经济性RAM
无
256位RAM
3,4
DS2224
经济性RAM+ROM
32位ROM
224位RAM
3,4
DS2401
硅序列号
64位
无
3,4,5,10
DS2404
实时时钟+经济型RAM
64位
4096位NVRAM
2,6,7
DS2404-C01
实时时钟+双端口存储器
64位
4096位双端口NVRAM
7
DS2405
单通道可寻址开关
64位
无
3,4,5
DS2406
双通道可寻址开关+存储器
64位
1024位EPROM
3,5
DS2407
双通道可寻址开关+存储器
64位
1024位EPROM
3,5
DS2048
8通道可寻址开关+存储器
64位
1024位EPROM
7
DS2049
微型局域网耦合器
64位
无
5
DS2415
实时时钟
64位
无
5
DS2417
实时时钟+中断输出
64位
无
5,10
DS2422
双通道事件计数器+RAM
64位
1024位NVRAM
5
DS2423
双通道事件计数器+RAM
64位
4096位NVRAM
5
DS2430A
EEPROM
64位
256位EEPROM
3,5,10
DS2432
EEPROM
64位
1024位EEPROM
5
DS2433
EEPROM
64位
4096位EEPROM
1,9,10
DS2450
4路16位A/D转换器
64位
无
9
DS2480
RS232到单总线转换/驱动器
无
无
8
DS2480B
RS232到单总线转换/驱动器
无
无
8
DS2502
只加存储器
64位
1024位EPROM
3,5,8,10
DS2502-E64
只加存储器
64位
1024位EPROM
3,5
DS2502-UNW
只加存储器
64位
1024位EPROM
3,5,8,10
DS2505
只加存储器
64位
16384位EPROM
3,5,10
DS2505-UNW
只加存储器
64位
16384位EPROM
3,5,10
DS2506
只加存储器
64位
65536位EPROM
1,9,10
DS2506-UNW
只加存储器
64位
65536位EPROM
1,9,10
DS2890
100K数字电位器
64位
无
3,5
DS9502
25KV以上ESD保护二极管
无
无
5
DS9503
25KV以上ESD保护二极管
无
无
5
DS9097U-09
通用单总线COM口适配器
64位
无
套件
除了表6.1中所列出的器件外,DallasSemiconductor公司还提供一种独具特色的iButton系列产品。
iButton产品从原理与功能上而言,仍然是单总线芯片产品,仅它们的封装形式饺为特别。
iButton产品有F3和F5两种封装形式,均为不锈刚外壳密封,其形状如纽扣电池,F5封装的外表大小相当于4枚1分的人民币硬币叠在一起,F3则较薄—些。
它们的引脚与纽扣电池相似,只有2个引线端面,背面是地线,中心面是数据线。
有些iButton内部带微型锂电池,为内部实时时钟或有关记录数据供电,可保存10年。
有些则无需内部电池,例如EEPROM的产品,有些产品还将序列号刻在外壳上供用户辨识。
由于iButton封装的特殊性,使用时不是采用传统的焊接方法,而是采用嵌入式的接触连接。
除了在单总线系统中用作节点从设备外,通常也将这类芯片嵌入其他电子产品中作为安全认证或某种辅助功能。
在表6.2列出了iButton系列的今部产品,其中大部分都在表6.1中找到功能相同的芯片,但iButton只有2个引脚,所以在表6.1中有些引脚较多的芯片在表6.2中无法找到替代品。
表6.2iButton系列单总线芯片总览
名称
功能和用途
ROMID
存储器
封装
DS1920
温度计iButton
64位
16位EEPRROM
F5
DS1921
实时时钟+温度计iButton
64位
4096位NVRAM
F5
DS1954
密码iButton
64位
F5
DS1955
密码iButton
64位
F5
DS1957
密码iButton
64位
F5
DS1963
金融安全认证iButton
64位
4096位NVRAM
F5
DS1963L
带写循环计数器的金融iButton
64位
4096位NVRAM
F5
DS1971
EEPRROMiButton
64位
256+64位EEPRAM
F3,F5
DS1973
EEPRROMiButton
64位
4096位EEPRROM
F3,F5
DS1982
只加存储器iButton
64位
1024位EPROM
F3,F5
DS1982U
只加存储器iButton
64位
1024位EPROM
F3,F5
DS1985
只加存储器iButton
64位
16384位EPROM
F3,F5
DS1985U
只加存储器iButton
64位
16384位EPROM
F3,F5
DS1986
只加存储器iButton
64位
65536位EPROM
F3,F5
DS1986U
只加存储器iButton
64位
65536位EPROM
F3,F5
DS1990A
序列号iButton
64位
无
F3,F5
DS1991
存储器iButton
64位
1344位NVRAM
F5
DS1992
存储器iButton
64位
1024位NVRAM
F5
DS1993
存储器iButton
64位
4096位NVRAM
F5
DS1994
实时时钟+存储器iButton
64位
4096位NVRAM
F5
6.2单总线数据传输协议
单总线因采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的,具有独特的接线方式,因而其通讯协议也与目前多数标准串行数据通信方式所不同。
典型的单总线命令序列如下:
∙初始化;
∙ROM命令,跟随需要交换的数据;
∙功能命令,跟随需要交换的数据;
每次访问单总线器件,必须严格遵守这个命令序列。
如果出现序列混乱,则单总线器件不会响应主机。
但是,这个准则对于搜索ROM命令和报警搜索命令例外。
在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。
为了说明单总线数据传输的过程,以下将分4个部分对单总线数据通信传输过程进行介绍,它们分别是单总线通信信号类型、单总线通信初始化、单总线通信的ROM命令及单总线通信的功能命令。
6.2.1单总线通信信号类型
所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。
该协议定义了几种信号类型:
复位脉冲、应答脉冲、写0、写1、读0和读1。
所有这些信号,除了应答脉冲以外,都由主机发出同步信号。
并且发送所有的命令和数据都是字节的低位在前。
注意:
这一点与多数串行通信格式不同(多数为字节的高位在前)。
单总线通信协议中不同类型的信号都采用一种类似于脉宽调制的波形表示,逻辑“0”用较长的低电平持续周期表示,逻辑“1”用较长的高电平持续周期表示。
在单总线通信协议中,读/写实习的概念十分重要,当系统主机向从设备输出数据时产生写时隙,当主机从从机设备中读取数据时产生渎时隙,每一个时隙内总线只能传输一位数据。
无论是读时隙还是写时隙,它们都以主机驱动数据线为低电平开始,数据线的下降沿使从设备触发其内部的延迟电路,使之与主机同步。
在写时隙内,该延迟电路决定从设备采样数据线的时间窗口。
单总线通信协议中存在两种写时隙:
写1和写0。
主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。
所有写时隙至少需要60ms,且在两次独立的写时隙之间至少需要1ms的恢复时间。
两种写时隙均起始于主机拉低数据总线。
产生写1时隙的方式:
主机在拉低总线后,接着必须在15ms之内释放总线,由上拉电阻将总线拉至高电平;产生写0时隙的方式为在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60ms)。
在写时隙开始后15ms~60ms期间,单总线器件采样总线电平状态。
如果在此期间采样值为高电平,则逻辑1被写入该器件;如果为0,则写入逻辑0。
图6.5单总线通信协议中写时隙时序图
图6.5给出了写时隙(包括写1和写0)时序的图形解释。
在图6.5中,黑色实线代表系统主机拉低总线,黑色虚线代表上拉电阻将总线拉高。
对于读时隙,单总线器件仅在主机发出读时隙时,才向主机传输数据。
所以在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。
所有渎时隙至少需要60ms,且在两次独立的读时隙之间至少需要1ms的恢复时间。
每个读时隙都由主机发起.至少拉低总线1ms。
在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。
若从机发送1,则保持总线为高电平;若发送0,则拉低总线。
当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。
从机发出的数据在起始时隙之后,保持有效时间15ms,因此主机在读时隙期间必须释放总线并且在时隙起始后的15ms之内采样总线状态。
图6.6所示给出了读时隙(包括读1和读0)时序的图形解释。
图6.6单总线通信协议中读时隙时序图
在图6.6所示中,黑色实线代表系统主机拉低总线,灰色实线代表从机拉低总线,而黑色的虚线则代表上拉电阻将总线拉高。
以上对单总线通信过程中的几种信号进行了介绍,但出于复位脉冲及应答脉冲与单总线通信过程初始化的密切关系.对这两种信号的介绍将在下一节中进行详细的阐述。
6.2.2单总线通信的初始化
单总线上的所有通信都是以初始化序列开始,初始化序列包括主机发出的复位脉冲及从机的应答脉冲,这一过程如图6.7所示。
在图6.7中,黑色实线代表系统主机拉低总线,灰色实线代表从机拉低总线,而黑色的虚线则代表上拉电阻将总线拉高。
图6.7初始化过程中的复位与应答脉冲
系统主设备发送端发送的复位脉冲是一个480μs~960μs的低电平,然后释放总线进入接收状态。
此时系统总线通过47kΩ的上拉电阻接至VCC高电平端,时间约为15μs~60μs,接着在接收端的设备就开始检测I/O引脚上的下降沿以监视在线脉冲的到来。
主设备处于这种状态下的时间至少为480μs。
作为从设备的器件在接收到系统主设备发出的复位脉冲之后,向总线发出一个应答脉冲,表示从没备已准备好,可根据各类命令发送或接收数据。
通常情况下,器件等待15μs~60μs即可发送应答脉冲(该脉冲是一个60μs~240μs的低电平信号,它由从机强迫将总线拉低)。
复位脉冲是主设备以广播方式发出的,因而总线上所有的从设备都同时发出应答脉冲。
一旦检测到应答脉冲后,主设备就认为总线上已连接了从设备,接着主设备将发送有关的ROM功能命令。
如果主设备未能检测到应答脉冲,则认为总线上没有挂接单总线从设备。
6.2.3单总线通信的ROM命令
在系统主机检测到应答脉冲后,就可以发出ROM命令。
这些命令与各个从机唯一的64位ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。
这些命令还允许主机能够检测到总线上有多少个从机设备以及设备类型,或者有没有设备处于报警状态。
从机设备可以支持5种ROM命令(实际情况与具体型号有关),每种命令长度为8位。
主机在发出功能命令之前,必须送出合适的ROM命令,下面简要地介绍各个ROM命令的功能,以及使用在何种情况下。
ROM命令的操作流程如图6.8所示。
图6.8ROM命令流程图
1.读ROM(代码为33H)
该命令仅适用于总线上只有一个从机设备(单节点)的情况。
它允许主机直接读出从机的64位ROM代码,而无需执行搜索ROM过程。
如果该命令用于多节点系统,则必然发生数据冲突,因为每个从机设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 总线 数据传输
![提示](https://static.bdocx.com/images/bang_tan.gif)