新闻中心

EEPW首页 > EDA/PCB > 基于多密钥iButton的智能水卡的设计

基于多密钥iButton的智能水卡的设计

——
作者:陈 蔚 黄建华时间:2007-10-15来源:国外电子元器件收藏

  摘要:DS1991是一种多密钥,文章介绍了DS1991的主要特点、工作原理及读写方法。给出了一种基于DS1991和PIC的智能水卡设计方案,同时给出了整个系统的硬件组成原理和软件设计方法。

    关键词:

1 DS1991概述

  iButtoninformation Button是一种封装在扁圆型不锈钢外壳里的直径为16毫米的微型智能化信息载体。具有双向通讯功能,数据传输使用独特的1-Wire()协议,仅用一根数据线即可与外界进行信息交换。iButton信息钮扣与其读写器的信息传递只需短暂接触即可完成,传输速率可达16.3kbps。信息纽扣内置的NVSRAM存储器可存放文字或数字化的图像,任何时刻只要短暂的触碰就可更改存放的信息。在每一个信息纽扣的晶片上都有工厂光刻的、独一无二的64位注册码,该号码具有不可伪造性。先进的设计理念及封装形式赋予了iButton超强的抗冲击、防静电、防腐蚀、防水、防摩擦等性能,极大的提高了数据的安全性,并可确保十年以上的使用寿命。

  DS1991是一种加密存储型信息纽扣,它有三个独立的电子密钥分区(提供1152位的可读写非易失安全存储器)和512位暂存器。每个密钥分区包括384位,具有独立的64位密码和64位ID码。对密钥分区的读/写操作均需进行密码验证。三个区的数据可分别操作,互不干扰。512位的暂存器主要用于加密数据的拷贝,以保证安全存储器中数据的完整性。DS1991可在恶劣环境中实现带密码保护的数据传送。

  DS1991通过严格的1-Wire()协议传输数据。1-Wire协议定义了复位脉冲、应答脉冲、写0、写1和读数据时序等几种信号类型,所有单总线命令序列都是由这些基本的信号类型组成的。访问DS1991必须严格遵循单总线命令序列,即初始化、ROM操作、存储器功能命令。

  DS1991的ROM操作命令有读取(33H)、匹配(55H)、搜索(F0H)、跳过(CCH)等。这些命令可作用于DS1991的64位光刻注册码。DS1991有6个设备检测命令:写暂存器(96H)、读暂存器(69H)、复制暂存器(3CH)、写密码(5AH)、写密钥子区(99H)、读密钥子区(66H)。存储器功能命令由三段组成:一为功能代码,二为命令的起始地址和子密钥的地址代码,三为第二个字节的取反。

2 系统结构与工作原理

  本文设计了一种基于DS1991的智能水卡。这种智能水卡由于运用了iButton信息纽扣,因而便于携带,不易损坏,只需在触头上一碰,水就哗哗的流出,再次触碰则可关闭水龙头,从而很好的达到了节约用水的目的。

  本设计中的单片机选用Microchip公司的PIC16C63,其最大优点是省电,该单片机在低功耗休眠状态时的静态电流小于1μA,正常工作时的最小工作电流仅为15μA,并具有看门狗复位电路,特别适合用来设计小型电子产品。无用户用水时,系统处于休眠状态,当水卡第一次碰触头时,单片机从休眠状态唤醒。iButton触头与单片机的连线极其简单,只需将PIC16C63的一根口线与其相连并外接一个上拉电阻即可。选用24WC02存储器可在掉电时保存数据。CD4098是双单稳态触发器。流量传感器选用基于模拟水表的旋翼式结构,可将叶轮的旋转转换为电信号。电磁阀选用12V低压电磁阀。其硬件连接如图1所示。

  使用时,先由管理员将用户预购的水量存于卡中。用水时,用户将水卡与触头一碰。单片机首先判断是否为坏卡,然后读取iButton序列号以判断是否为该供水系统所接受的智能水卡。水卡辨识正确后再读取卡中的水量信息并打开电磁阀,此后,数码管动态显示并扣除卡中所有现存水量,以防用户不进行关水触碰。单片机实时采集流量信号,并做相应扣除。当剩余水量小于初始给定值时,水卡发出声音报警提示用户及时购水。当用户用水完毕再次触碰后或剩余水量为零时,关闭阀门,并将剩余水量存入水卡,同时存储器实时存储卡中信息,以备系统故障时正确处理。

3 软件设计

  本系统对DS1991进行的操作主要包括三个过程:其中读取序列号和读密钥子区的流程图见图2所示。写密钥子区的流程图见图3。为确保数据传输的正确性,本设计对欲写的数据组都追加一个计算出的CRC校验码,并对读出的数据组添加CRC校验。只有检验正确,才视为读出的数据组,从而确保了触碰时数据传输的正确。

  1-Wire的CRC校验码由如图4所示的多项式生成。该多项式方程为X8+X5+X4+1。每片DS1991都有唯一的64位ROM代码,即:8位家族码+48位唯一序列码+8位CRC校验码。移位寄存器进行零初始化后从8位家族码的最低有效位开始移入,每次移1位,当第8位家族码移入后开始移入序列号,第48位序列号移入后,移位寄存器中的值即是CRC值,此后继续移入DS1991内部的8位CRC校验码。此时如果接收数据正确,则使移位寄存器归零。CRC的编程如下:

CHECKCRC:

MOVLW 8

MOVWF RXBUF

CRCLP:

BTFSS MD2,0

GOTO CRC0

MOVLW 1

GOTO CRC1

CRC0: MOVLW 0

CRC1: XORWF MD1,W

MOVWF NUMB

RRF NUMB

BTFSS STATUS,0

GOTO CRC2

MOVF MD1,W

XORLW 18H

MOVWF MD1

CRC2: RRF MD1

RRF MD2

DECFSZ RXBUF

GOTO CRCLP

RETURN

  本系统软件采用模块化设计,分为初始化模块、检验坏卡模块、读序列号模块、CRC校验模块、读/写DS1991模块、流量检测数据处理模块、I2C存储器存储模块、动态显示模块以及报警提醒模块等。

4 结束语

  使用iButton作智能水卡时,其坚固的不锈钢外壳确保了水卡的抗冲击、防水、耐磨、耐腐蚀特性;而先进的防静电电路及芯片则可确保iButton能承受高达8,000伏的静电,从而保证自身和存储数据的安然无恙。在耐用性、识别成功性、使用方便性、加密性能及携带性等方面,该水卡比现今较流行的磁卡、IC卡、射频卡都优越许多。此外,DS1991的多密钥特性更是为数据的保密提供了可靠的保证。

 



评论


相关推荐

技术专区

关闭