射频IC 卡即非接触式IC 卡,是最近几年发展起来的一项新技术,它将射频识别技术和IC 卡技术结合起来,解决了无源(卡中无电源) 和免接触的技术问题,具有使用方便、寿命长等优点,因而在日常生活中得到广泛应用。
过去IC 卡系统的验卡机与上位管理机之间通信,通常是使用串行口RS2232 ,但RS2232 串口的数据传输速率较慢,而射频卡机一天记录量很大,并且一个数据采集点往往要对应多台验卡机,因此希望加快PC 机与验卡机之间的数据传输速率。
USB 是一种支持即插即用的新型接口,主系统和USB 外围设备之间的数据通过一个4 针探头传输,具有传输速度快、支持热插拔、易于扩展、使用方便等优点。USB 接口的传输速度比串行口快得多,USB v1.1规范的数据传输速率可以达到1.5 MbPs~2 MbPs ,USBv2.0 所规定的传输速率更是达到了360 MbPs~480MbPs。正因为USB 接口具有这些优点,因而逐渐成为PC 机与外设相连的一种发展趋势。我们在对自行研
制的JS201 型射频验卡机进行改进时,决定采用USB接口与上位管理机进行通信。
1 硬件设计
1.1 系统结构与工作原理
射频IC 系统结构如图1 所示。
整个系统以8051 单片机为核心,由它来完成与读写模块的通信、存储管理、输入、显示等功能。使用时,用户将自己的射频卡掠过车载验卡机阅读器的磁场感应区时,射频卡系统将射频卡的卡号、金额、密码等信息读入,先对密码的正确性和卡的合法性进行判别。如果是合法卡,验卡机根据已有设定计算出射频卡的剩余额,然后向卡中回写相应的数据,以确保对卡操作的正确性和安全性。
图1 射频卡系统结构框图
本文研制的射频IC 卡系统的射频卡阅读模块采用射频读写芯片P4095。P4095 内部集成了PLL 系统,用来完成对天线谐振频率的自适应调整,并且外部不需要晶振的支持,具有100 kHz~150 kHz 的载波频率范围,由它来完成车载验卡机与射频卡信息的交换。实际工作时, 射频卡本身不带电源, 需要从阅读器P4095 发送的射频信号中提取能量。因此,在射频卡接收数据期间,它一方面从接收到的信号中按原来约定的编码方式解调出数据信息(按曼彻斯特编码规律) ,另一方面又从接收到的信号中提取出能量。又因为射频卡是通过负载调制的方式耦合到应用终端的天
线上的,所以在射频卡返回数据时, P4095 连续发射125 kHz 射频载波信号,从而使阅读器得到射频卡中的信息。然后,把接收到的信息发送给单片机,由单片机按照射频卡的无线规范协议对数据进行处理、保存。
1.2 USB接口电路设计
目前设计带USB 接口的仪器的方案主要有两种:一种是直接利用自带USB 端口的单片机,例如Cypress公司的EZ2USB 单片机、Intel 公司的8X930 等;另一种是仍采用普通单片机,但增加一块USB 接口芯片来处理USB 通信。前者由于微处理器与USB 接口芯片集成在一起,因此开发较简单,但价格较高,并且要购置专门的开发系统。后者必须另有一个微处理器来进行控制,但其价格便宜、设计简单,尤其适合于产品的改型设计,改型时硬件上只需对端口连接进行改动,增加少量元件即可,软件上则只要增加微处理器的USB 协议处理和数据交换程序等,无须对原有的产品做很大的改动。因此我们采用后一种方案对原有射频IC 卡系统进行改进。
选用National Semiconductor 公司的USBN9603 作为USB 接口控制芯片,它集成了一个USB 收发器,以满足传输时的电气性能要求,还集成了串行接口引擎(SIE) ,主要负责时钟恢复、数据包结束检测、CRC 编解码以及结点状态识别等。它通过VBUS、GND、D+ 、D- 等4 根线与主机实现物理连接。其中:VBUS 为总线电源,可对USB 外设提供+5 V 电源;GND 为地线;D+和D- 为数据线,USB 利用D+ 和D- 两数据线,采用差分信号的传输方式传输串行数据,支持高速或者低速传输模式。另外,芯片内部总共带有7 个传输/接收FIFO 缓冲器:1 个双向传送和接收FIFO 缓冲器,3 个单向传送FIFO 缓冲器,3 个单向接收FIFO 缓冲器。其与单片机的连接如图2 所示。
图2 单片机与USBN9603 接口电路
8051 单片机对USBN9603 操作时, 由P1.0 控制IOMS ,将其设为IPO 端口访问方式,并根据RD、WR 信号配合A0 电平状态通过A8~A15 完成端口数据的读写。端口访问采用中断方式,即由USBN9603 向8051单片机的INTO 产生中断请求信号,8051 通过读取US2BN9603 相关寄存器判断产生中断的类型,从而执行相应的中断处理程序。
2 软件设计
射频IC 卡系统的软件设计主要包括两部分:一是USB 设备端的单片机软件,主要完成USB 协议处理与数据交换,以及其他应用功能程序;二是上位管理机(PC 机) 端的程序,由USB 通信程序和用户服务程序两部分组成,用户服务程序通过USB 通信程序与系统USB 设备接口(USBDI) 通信,由系统完成USB 协议的处理与数据传输。
过去开发PC 端程序比较困难,程序员不仅要熟悉USB 协议,还要熟悉Windows 体系结构。但是,从Windows 98/2000 开始, 提供了Win32 驱动程序模型(WDM) 设备驱动程序模型,并且在PC 机上可以利用高级编程语言,例如VC++ 、VB 等进行编程;另外,许多公司提供现成的程序或Windows 开发库。因此,上位管理机的控制程序开发已不再是难题,本文对此不作详细阐述,可参见文献[ 1 ,2 ] 。这里主要阐述USB设备端的单片机软件的设计。
单片机与上位管理机通信的程序流程如图3 所示。
图3 软件流程
此处单片机主要完成接收命令、分析命令、上传数据等功能。限于篇幅,这里只给出单片机对命令分析部分的程序(PLM51 语言) 。
declare Mrxd bit at (0b2h) register ;
extint : procedure interrupt 0 using 1 ; declare (temp , i) byte , tt word , com-pa (5) byte ;
ea = 0 ;
command = 0 ;
temp = get-char (ok) ;
if ok = 0 or temp <> 's'then goto exit ;
do i = 0 to 3 ;
do while Mrxd = 1 and tt < 60000 ; tt = tt + 1 ;
end ;
com-pa (i) = get-char (ok) ;
if ok = 0 then goto exit ;
end ;
if com-pa (3) < > ( (com-pa (0) + com-pa (1) + com-pa (2) ) and 127) then goto exit ; if com-pa (0) = self - addrP10 + '0'and com-pa (1) = self-addr mod 10 + '0'then
if com-pa (2) = '1'then
do i = 0 to 5 ;
do while Mrxd = 1 and tt < 60000 tt = tt + 1 ;
end ;
com-pa (i) = get-char (ok) ;
if ok = 0 then goto exit ;
end ;
3 结束语
本文在叙述射频IC 卡系统的结构与原理的基础上,利用USBN9603 接口芯片对原有车载验卡机进行了改进,详细介绍了硬件接口和软件设计方法。由于USB 的诸多优点和灵活的数据传输方式,基于USB 接口的射频IC 卡系统必将得到更广阔的应用。