1 引言 随着计算机和嵌入式系统的发展。IC卡已经融入人们的日常生活并发展成几个大类,其中,非接触IC卡的出现引起了人们的特别关注。 射频卡属于非接触IC卡,它避免了普通IC卡与读卡器之间的物理接触,减少了卡的磨损,所以受到广泛的欢迎。射频卡也是射频识别(RFID)系统的组成部分之一。 射频识别(Radio Frequency Identification,以下简称RFID)技术是20世纪90年代兴起的一种自动识别技术。它利用无线射频方式进行非接触双向通信并交换数据,以达到识别目的。典型的RFID系统由电子标签flag)、读写器(Read/Write Device)及数据交换和管理系统等组成。电子标签也称射频卡,具有智能读写及加密通信能力。 2 系统工作原理及硬件设计 笔者设计的射频卡读写系统由计算机、读写器和射频卡组成,系统结构如图1所示。 2.1 射频卡读写器 射频卡读写器主要由PIC16型单片机和北京威利姆兴公司生产的AT-RFMOD06系列射频基站模块组成。该模块采用一种常见的U2270B型非接触卡读写基站电路。电路内部集成了由片上电源、振荡器和线圈激励器组成的能量传输线路,用来给射频卡提供工作电源:还集成了信号放大和天线驱动线路来完成与射频卡之间的信号发送与接收。AT-RFMOD06与PIC16的接口电路如图2所示。 AT-RFMOD06模块的引脚功能如表1所示。该模块采用单列9引脚封装。内部集成了时钟、射频驱动、滤波、放大、调制解调等模拟电路.所以按照图2连接好数字接口电路后,只需选择适当的天线和谐振电容器即可完成射频电路的设计。 在图2中,基站天线和振荡电容器组成了LC振荡电路,系统要求产生的振荡频率限定在125 kHz(±5%),天线的振荡幅度最高可以达到120 V,一般不要大于80 V,可以通过和天线线圈串联的电阻器来调节天线的振荡幅度。振荡电容的耐压值应大于100 V。经过反复调试,参数设定为C=2200 pF,L=680uH,R=82Ω。
表1 AT-RFMOD06的引脚功能 引脚名称 | 功能描述 | ANT CENTER | 天线(中心)
| OP256OUT | RF256卡写卡输入 | VCC | 电源(2.7 V-5.5 VDC) | CFE | 射频场开关控制 | DATA OUT | 解调数据输出(解码用信号) | CLOCK OUT | 时钟输出(125 kHz时钟输出) | DRIVER OUT(-) | 天线驱动(-) | GND | 地线 | DRIVER OUT(+) | 天线驱动(+) | 2.2 AT88RF256型射频卡 AT88RF256-12卡是美国ATMEL公司推出的一款基于125 kHz工作频率的感应卡,可以加密,数据量为256位。作为典型的低频、加密和可读写卡,AT88RF256-12在市场上有着广泛的应用前景。AT88RF256-12由电路和线圈组成。电路内部结构如图3所示。电路的L1引脚和L2引脚与线圈连接,当线圈的电感为10.1 mH时,卡片的工作频率为125 kHz。其工作电源由片内线圈与电路内置电容产生LC振荡蓄电提供.AT88RF256-12设计时把电容内置到电路中,既减少了卡的加工环节,又提高了模块及成卡的成品率和可靠性。LC振荡产生的电能经卡片内的电源电路变换后分别提供给控制部分和EEPROM单元。 3 编解码及软件流程 3.1 射频卡的寄存器和命令 卡片内部的EEPROM分为10页,每页包括32位,其内容如表2所示。
表2 EEPROM的页面内容 页数 | 内容 | 0-6页 | 射频卡ID和用户数据区 | 7页 | ATMEL公司写入的出厂ID | 8页 | 匹配字页(数据固化和卡片的其他控制) | 9页 | 卡密码 | 用户对卡的操作包括读卡、写卡、核对密码、停止卡等,必须按以下7个命令格式来执行上述操作: 0A2A1A010:写第A2A1A0页32位的EEPROM; 0A2A1A001:读第A2A1A0页32位的EEPROM; 000011:数据固化命令(8位); 010011:写卡片控制位命令(24位): 000111:写卡片密码命令: 011000:停止卡命令: 011100:核对密码命令。
3.2 射频卡的控制要点 3.2.1 编码要求 AT88RF256卡在默认状态下读卡片用MILLER(密勒)码,写命令数据用MANCHESTER(曼彻斯特)码。初始化下,密勒码元宽度是128us,曼彻斯特码元宽度是256us。 3.2.2 发送命令的时间 读写器要对卡片发送命令,除了卡片要进入射频场内获取能量外,发送时间也受限制。卡片进入射频场后.按如下格式向读写卡器循环发送数据:起始位;32-152位(长度可自行设定)的ID数据;停止位;8位收听窗(Listening Window)。 图4示出基站模块的DATA OUT引脚的输出波形,在每个数据包之间都有一个持续8位密勒码元宽度的低电平状态的收听窗。只有在收听窗第2位至第7位,射频卡才可以接收读写卡器发送的读、写命令。所以本设计的一个关键是如何捕捉到收听窗,这属于读卡和解码操作的一部分,解码是建立在对基站模块DATA OUT引脚的波形分析的基础上的。 3.2.3发送命令格式 基站根据需要在7种命令格式中选择向射频卡发送的命令,当发送带有数据的命令时,在命令的最后要添加一个bit的校验位.校验位是命令字和所有参数的奇校验。卡片接收到命令后要比对奇偶校验位,只有当校验位正确时才真正地执行命令.否则将返回ID.不执行命令。这样可以有效避免因为空间干扰而对卡片数据的错误操作,大大提高卡片读写的可靠性。 3.2.4多张卡冲突 在开发过程中.多张卡片同时进场时,DATAOUT引脚的波形相当于若干个卡片单独进场时的波形的叠加,无法选定某一卡片进行读写。出现这种情况时,为了避免误写卡的操作,等待检测到只有惟一的卡片在场内时再进行所需的操作。
3.3 程序设计 已知密勒码元宽度为128us.卡片ID的长度是32位,只能在收听窗的第2位至第7位发送命令。下面是用PIC单片机编写的收听窗程序。其中RB口的OUT引脚输入的是基站模块DATA OUT引脚的信号,参考图2。出错返回5AH,正确返回0H。 IJSTEN: MOVLW .80 LISLOOP:MOVWF CARDDEL MOVLW .70 MOVWF D1 BTFSC RB,OUT GOTO LISTEN2 LISTEN1:NOP BTFSC RB,OUT GOTO LISTEN0 DECFSZ D1,1 GOTO LISTEN1 RETLW 0H LISTEN2:NOP BTFSS RB,OUT GOTO LISTEN0 LISTEN0:DECFSZ D1,1 GOTO LISTEN2 RETLW 5AH LISTEN0:DECFSZ CARDDEL,1 GOTO LISLOOP RETLW 5AH 在正确跟踪收听窗的基础上,以曼彻斯特编码格式向射频卡第5页写入32位数据为例,如图5所示。每当成功写入某页32位数据后,卡片循环发送新写入的数据.直至卡片退场。这就方便了用户对写入的数据进行校验。 4 结束语 由于基站模块集成了调制解调功能,所以通信上只需注重基带信号的处理,降低了设计难度。这套射频卡读写器已经应用到电能表预付费系统中,替代了一批原先使用的普通IC卡电表.系统的可靠性得到用户的肯定,加上射频卡操作便捷,该系统的应用前景十分看好。
|