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 卡系统必将得到更广阔的应用。