一 iButton简介
计算机技术的蓬勃发展,使基于条形码、磁卡、IC卡等技术的数字识别系统逐渐取代了人工识别,并被广泛应用于金融、电信、商业等领域,深刻影响着人们的日常生活。但是,条形码、磁卡、IC卡等构成的数字识别系统存在着携带不便、易受损坏、不能应用于恶劣环境等不足。美国达拉斯半导体公司(Dallas Semiconductor Corporation)推出的1种智能化信息载体iButton,较好地解决了数字识别系统存在的这些问题,为开发更加完善的新颖数字识别系统提供了技术支持和实现手段。
iButton(information Button)意为“信息钮扣”。它采用直径17mm、厚3~6mm的钮扣状不锈钢外壳封装。内部由I/O处理器和存储器两个基本部分组成,某些应用于特殊场合的iButton还内置有感温、时钟图1iButton外型结构等元器件。iButton以1-Wire规范作为通信协议,仅用1根数据线实现与外界的信息交换。图1所示是iBu-tton的外型结构示意图。
图1 iBUTTON 外置结构
iButton作为1种新颖的智能化信息载体,相比传统的信息载体具有如下特点:
① 由于iButton采用不锈钢外壳封装,无暴露的易损部件或易腐部件,具有抗撞击、防水渍、耐腐蚀、抗磁扰、防折叠等显著特点,工作温度范围也较宽,可以在-40~80℃的温度范围内正常工作,适用于恶劣的环境;
② 每片iButton内部均固化有惟一的64位标识号(ID),排列顺序依次为分类号8位、系列号48位以及CRC码8位,并且具有自毁功能,保密性能好,可适用于需要作硬件加密的场合;
③ 由于iButton采用独特的机械外形设计,具有IC卡、磁卡等信息载体无法比拟的优势,存储于其中的数据信息具有相当高的安全可靠性;
④ iButton可以嵌在戒指、钥匙串、钱包或手表上,随身携带方便;
⑤ 存取数据时采用接触方式,与触头轻轻一碰,瞬间即可完成数据信息的读写操作。
二 iButton的工作机理
1根数据线和1根地线构成了iButton的电气接口。正面是数据线,底座为地线,结构极其简单。传输数据时,无需电源和时钟信号,信号同步靠内部定时逻辑解决,而数据通信的能量则由数据线提供。iButton内部为一大规模集成电路,由I/O处理器和存储器两个基本部分构成,其功能模块如图2所示。
图2iButton内部功能模块示意图
iButton采用独特的主从式、位同步、半双工串行方式与外部进行通信。微机及有关读写设备处于主动(Master)地位;iButton处于从属(Slave)地位。Master与Slave之间以1-Wire协议为基础,按照特定的时序要求由数据线逐位交换数据。
iButton作为从设备,其工作过程可描述为:首先,由微机主动向iButton发测试脉冲,以识别iBu-tton是否已与其触头接触,若已正确连接,可接收到iButton发来的应答脉冲,表示可以进入数据通信过程。这时,微机先发操作iButton的ROM区的指令,如读ROM区数据指令、匹配操作指令、搜寻操作指令等,这些指令被iButton接受并执行。然后,发操作iButton的NV RAM区数据的指令,如读写NV RAM区数据指令、读写或复制读写缓冲区(Scratchpad)数据的指令等。之后,微机与iButton间进行数据传输操作。最后图3读写数据时序,微机再发测试脉冲,当收到iButton的应答脉冲后,整个数据通信过程即告结束。图3示意了有关时序。它们可分为测试连接与应答、从iButton读取数据和向iButton写入数据3种类型。
图3 读写数据时序
在应用软件开发过程中,对iButton进行数据读写的过程需要遵循其工作机理和时序要求,具体包括:
(1) 测试连接及应答
微机发测试负脉冲给iButton,查询iButton是否已与触头正确连接。若与触头连接良好,iButton则将数据线拉低,产生应答负脉冲。如果微机检测到这个应答脉冲,就可以进行数据读写操作了。
(2) 从iButton读取数据
微机先向iButton发1个读负脉冲,iButton接受该脉冲后立即将被读取位的内容送至数据线上,微机从数据线上获得数据。若数据线在iButton的采样时区内维持高电平,则读取值为“1”;否则,为“0”。最后,iButton释放数据线,数据线恢复为高电平,为微机继续从iButton读取数据位作好准备。
(3) 将数据写入iButton
与读取数据类似,微机向iButton发1个写负脉冲,然后开始写数据。微机维持数据线低电平特定时间,再恢复为高电平,则表明写入“0”;微机发出写负脉冲后立即将数据线拉高并维持特定时间,则表明写入“1”。完成数据写入后,数据线恢复为高电平,为微机继续向iButton写入数据位作好准备。
三 软件开发环境
iButton-TMEX professional SDK v3.10 是Dallas公司提供的进行应用程序开发的软件包,通过调用其TMEX-API函数可方便地开发iButton的应用软件。该软件包适用于DOS、Win3.1、Win95/98、WinNT、WinCE等多种操作平台,支持高级语言如VB、VC和汇编语言如8051、808x等多种编程环境。 SDK的主要内容有:编程所需的动态链接库(dll),TMEX-API函数的说明文档,Demo程序及其说明文档等。若在Win95/98操作系统下安装该软件包,会自动将IBFS32.DLL、IB97E32.DLL、IB97U32.DLL、IB10E32.DLL、DS1410D.SYS和UAAUTHD.UXD等文件写入Windows的System目录下,从而建立起调用TMEX-API函数进行应用程序开发的软件环境。
TMEX-API函数分为会话、文件操作、传输、网络和硬件等5个层次。会话层函数主要用于多任务环境下iButton与基于1-Wire协议的iButton网络MicroLAN的连接;文件操作层函数用于文件读/写以及目录增删操作;传输层函数用于读写数据包操作;网络层函数用于读取及验证iButton的ID;硬件层函数用于对指定端口等特定的硬件操作。
四 应用系统开发
iButton的应用系统可以采用两种方法实现。一种将基于单片机的应用系统作为Master,另一种将微型计算机系统作为Master。软件开发可采用汇编语言或高级语言进行编程。这两种方法实现的应用系统各有特点,可以根据不同的应用场合选用。
1. 基于单片机的应用系统设计方法
将基于单片机的应用系统作为Master,自行设计单片机与iButton的接口电路。图4为单片机与iButton的接口电路示意图。使用P0.0(指定为DATA_BIT)作为1-Wire的I/O口;晶振频率选用市场上常有的11.0592MHz;齐纳二极管将数据线的电压限制在5.6V以下,防止过高的电压损坏器件。 图4单片机与iButton的接口示意图按此思路设计的系统小巧,可以嵌入在有关的仪器仪表中,从而开发出各种具有智能化数字识别功能的便携式产品或嵌入式产品,如预付费水电表、电子公交车票、电子防盗门锁等。但是,必须按照严格的时序编程。 以下汇编程序能够测试iButton是否已与触头良好接触,具体过程为:先发1个测试脉冲给iBu-tton,检测iButton的应答脉冲,若检测到该脉冲,则将进位位置“1”,表明可继续对iButton进行数据读写操作;否则,清“0”。 Procedure TouchReset DATA_BITBIT P0.0 TRESET: PUSH B PUSH ACC MOV A, #4 CLR DATA_BIT; 开始发复位脉冲 MOV B,#221 DJNZ B,$; 至少保持480μs低电平 SETB DATA_BIT; 释放数据线 MOV B, #6 CLR C; 清应答脉冲标志 WAITLOW:JB DATA_BIT, WH; 若数据线拉高,则退出 ;循环 DJNZ B,WAITLO DJNZ ACC,WAITLO ; 延迟3360μs SJMP SHORT; 退出子程序 WH: MOV B,#111 HL: ORL C,/DATA_BIT; 检测应答脉冲 DJNZ B,HL SHORT: POP ACC POP B RET 2. 基于微机系统的设计方法
采用微机系统作为Master,利用Dallas公司提供的触头、串(并)口适配器等现成的外围产品,加之iButton构成应用系统。触头用于与iButton接触,实现数据的读写操作;串(并)口适配器,用于实现1-Wire信号与计算机串(并)口数据信号的转换。触头可通过DS9097、DS9097E或DS9097U-09串口适配器连到计算机的COM口上,也可通过DS1410E并口适配器实现与计算机的LPT口连接。如图5所示,DS9092GT触头与DS9097E串口适配器相连,DS9097E直接插到微机的COM口上,从而构成1个iButton的应用系统。 图5触头与串(并)口适配器连接用该方法实现的系统,其应用软件的开发相当方便,允许在高级语言的环境下,直接调用TMEX-API函数编程,使iButton的读写操作对用户完全透明,不必考虑复杂的时序等细节,开发效率高,人机交互界面友善。适合于开发大型企业考勤系统、单位就餐结算系统、智能化小区人员出入管理系统等。
以下VB程序调用TMEX-API函数,读取iBu-tton的ID。若与数据库技术结合,将读到的信息加上时间标签写进数据库,就能实现显示、查询、打印等功能,构成企业考勤、智能小区人员出入管理等应用系统。
图4 单片机与iBUTTON接口示意图 图5 触头与串(并)口适配器连接
…… Dim ROM(8) As Integer Dim dmmy, search, flag As Integer Dim MyHandle As Long Dim RomString As String Dim state_buffer(15360) As Byte Private Declare Function TMExtendedStartSession Lib "IBFS32.DLL" (ByVal PortNum As Integer, ByVal PortType As Integer, ByVal Reserved As Any) As Long Private Declare Function TMSetup Lib "IBFS32.DLL" (ByVal session_handle As Long) As Integer Private Declare Function TMFirst Lib "IBFS32.DLL" (ByVal session_handle As Long, state_buffer As Byte) As Integer Private Declare Function TMRom Lib "IBFS32.DLL" (ByVal session_handle As Long, state_buffer As Byte, ROM As Integer) As Integer Private Declare Function TMEndSession Lib "IBFS32.DLL" (ByVal session_handle As Long) As Integer ……
MyHandle=TMExtendedStartSession(2, 1, vbNullString) '建立会话 If (MyHandle > 0) Then'成功建立会话 dmmy=TMSetup(MyHandle)'初始化 search=TMFirst(MyHandle, state_buffer(0)) '找设备,找到设备返回“1” If (search=1) Then ROM(0)=0'表示读数据 flag=TMRom(MyHandle, state_buffer(0), ROM(0)) '读得值放入ROM(0 to 7) RomString="" For I=7 To 0 Step- If(ROM (I)<=&HF) Then RomString=RomString+"0" RomString=RomString + Hex$(ROM(I)) Next I '生成ID串RomString Text1.Text=RomString End If dmmy=TMEndSession(MyHandle)‘结束会话 End If ……
五 应用前景展望
作为1种新型智能化数据信息载体,iButton正越来越广泛应用于日常生活,其应用系统大体可分为如下几个方面:
① 应用于身份识别,如电子防盗门锁、单位考勤系统、智能小区人员出入管理系统、计算机软件的硬件加密、电子防伪、暂住人口管理系统等。
② 应用于预收(付)费系统,如预付费水电表、停车场收费系统、电子钱包、电子车票、高速公路收费、公共收费电话等。
③ 应用于数据采集系统,如机动车运行状态参数采集器、温度遥测系统、小型气象站等。
④ 应用于军事领域,如军事保密、情报系统的人员联络等。
结束语
Dallas公司推出的智能信息载体iButton,具有广阔的应用前景,必将给人们的生活带来深刻的影响。相信基于iButton的新型数字识别系统不久将会得到广泛的应用。
|