基于USB接口的射頻IC卡系統(tǒng)
文章出處:http://56733.cn 作者:蔣鎖良 于玉琴 人氣: 發(fā)表時間:2011年09月23日
射頻IC卡即非接觸式IC卡,是最近幾年發(fā)展起來的一項新技術(shù),它將射頻識別技術(shù)和IC 卡技術(shù)結(jié)合起來,解決了無源(卡中無電源) 和免接觸的技術(shù)問題,具有使用方便、壽命長等優(yōu)點,因而在日常生活中得到廣泛應(yīng)用。
過去IC卡系統(tǒng)的驗卡機(jī)與上位管理機(jī)之間通信,通常是使用串行口RS2232 ,但RS2232 串口的數(shù)據(jù)傳輸速率較慢,而射頻卡機(jī)一天記錄量很大,并且一個數(shù)據(jù)采集點往往要對應(yīng)多臺驗卡機(jī),因此希望加快PC 機(jī)與驗卡機(jī)之間的數(shù)據(jù)傳輸速率。
USB 是一種支持即插即用的新型接口,主系統(tǒng)和USB 外圍設(shè)備之間的數(shù)據(jù)通過一個4 針探頭傳輸,具有傳輸速度快、支持熱插拔、易于擴(kuò)展、使用方便等優(yōu)點。USB 接口的傳輸速度比串行口快得多,USB v1.1規(guī)范的數(shù)據(jù)傳輸速率可以達(dá)到1.5 MbPs~2 MbPs ,USBv2.0 所規(guī)定的傳輸速率更是達(dá)到了360 MbPs~480MbPs。正因為USB 接口具有這些優(yōu)點,因而逐漸成為PC 機(jī)與外設(shè)相連的一種發(fā)展趨勢。我們在對自行研制的JS201 型射頻驗卡機(jī)進(jìn)行改進(jìn)時,決定采用USB接口與上位管理機(jī)進(jìn)行通信。
1 硬件設(shè)計
1.1 系統(tǒng)結(jié)構(gòu)與工作原理
射頻IC系統(tǒng)結(jié)構(gòu)如圖1 所示。
圖1 射頻卡系統(tǒng)結(jié)構(gòu)框圖
整個系統(tǒng)以8051 單片機(jī)為核心,由它來完成與讀寫模塊的通信、存儲管理、輸入、顯示等功能。使用時,用戶將自己的射頻卡掠過車載驗卡機(jī)閱讀器的磁場感應(yīng)區(qū)時,射頻卡系統(tǒng)將射頻卡的卡號、金額、密碼等信息讀入,先對密碼的正確性和卡的合法性進(jìn)行判別。如果是合法卡,驗卡機(jī)根據(jù)已有設(shè)定計算出射頻卡的剩余額,然后向卡中回寫相應(yīng)的數(shù)據(jù),以確保對卡操作的正確性和安全性。
本文研制的射頻IC 卡系統(tǒng)的射頻卡閱讀模塊采用射頻讀寫芯片P4095。P4095 內(nèi)部集成了PLL 系統(tǒng),用來完成對天線諧振頻率的自適應(yīng)調(diào)整,并且外部不需要晶振的支持,具有100 kHz~150 kHz 的載波頻率范圍,由它來完成車載驗卡機(jī)與射頻卡信息的交換。實際工作時, 射頻卡本身不帶電源, 需要從閱讀器P4095 發(fā)送的射頻信號中提取能量。因此,在射頻卡接收數(shù)據(jù)期間,它一方面從接收到的信號中按原來約定的編碼方式解調(diào)出數(shù)據(jù)信息(按曼徹斯特編碼規(guī)律) ,另一方面又從接收到的信號中提取出能量。又因為射頻卡是通過負(fù)載調(diào)制的方式耦合到應(yīng)用終端的天線上的,所以在射頻卡返回數(shù)據(jù)時, P4095 連續(xù)發(fā)射125 kHz 射頻載波信號,從而使閱讀器得到射頻卡中的信息。然后,把接收到的信息發(fā)送給單片機(jī),由單片機(jī)按照射頻卡的無線規(guī)范協(xié)議對數(shù)據(jù)進(jìn)行處理、保存。
1.2 USB接口電路設(shè)計
目前設(shè)計帶USB 接口的儀器的方案主要有兩種:一種是直接利用自帶USB 端口的單片機(jī),例如Cypress公司的EZ2USB 單片機(jī)、Intel 公司的8X930 等;另一種是仍采用普通單片機(jī),但增加一塊USB 接口芯片來處理USB 通信。前者由于微處理器與USB 接口芯片集成在一起,因此開發(fā)較簡單,但價格較高,并且要購置專門的開發(fā)系統(tǒng)。后者必須另有一個微處理器來進(jìn)行控制,但其價格便宜、設(shè)計簡單,尤其適合于產(chǎn)品的改型設(shè)計,改型時硬件上只需對端口連接進(jìn)行改動,增加少量元件即可,軟件上則只要增加微處理器的USB 協(xié)議處理和數(shù)據(jù)交換程序等,無須對原有的產(chǎn)品做很大的改動。因此我們采用后一種方案對原有射頻IC 卡系統(tǒng)進(jìn)行改進(jìn)。
選用National Semiconductor 公司的USBN9603 作為USB 接口控制芯片,它集成了一個USB 收發(fā)器,以滿足傳輸時的電氣性能要求,還集成了串行接口引擎(SIE) ,主要負(fù)責(zé)時鐘恢復(fù)、數(shù)據(jù)包結(jié)束檢測、CRC 編解碼以及結(jié)點狀態(tài)識別等。它通過VBUS、GND、D+ 、D- 等4 根線與主機(jī)實現(xiàn)物理連接。其中:VBUS 為總線電源,可對USB 外設(shè)提供+5 V 電源;GND 為地線;D+和D- 為數(shù)據(jù)線,USB 利用D+ 和D- 兩數(shù)據(jù)線,采用差分信號的傳輸方式傳輸串行數(shù)據(jù),支持高速或者低速傳輸模式。另外,芯片內(nèi)部總共帶有7 個傳輸/接收FIFO 緩沖器:1 個雙向傳送和接收FIFO 緩沖器,3 個單向傳送FIFO 緩沖器,3 個單向接收FIFO 緩沖器。其與單片機(jī)的連接如圖2 所示。
圖2 單片機(jī)與USBN9603 接口電路
8051 單片機(jī)對USBN9603 操作時, 由P1.0 控制IOMS ,將其設(shè)為IPO 端口訪問方式,并根據(jù)RD、WR 信號配合A0 電平狀態(tài)通過A8~A15 完成端口數(shù)據(jù)的讀寫。端口訪問采用中斷方式,即由USBN9603 向8051單片機(jī)的INTO 產(chǎn)生中斷請求信號,8051 通過讀取US2BN9603 相關(guān)寄存器判斷產(chǎn)生中斷的類型,從而執(zhí)行相應(yīng)的中斷處理程序。
2 軟件設(shè)計
射頻IC 卡系統(tǒng)的軟件設(shè)計主要包括兩部分:一是USB 設(shè)備端的單片機(jī)軟件,主要完成USB 協(xié)議處理與數(shù)據(jù)交換,以及其他應(yīng)用功能程序;二是上位管理機(jī)(PC 機(jī)) 端的程序,由USB 通信程序和用戶服務(wù)程序兩部分組成,用戶服務(wù)程序通過USB 通信程序與系統(tǒng)USB 設(shè)備接口(USBDI) 通信,由系統(tǒng)完成USB 協(xié)議的處理與數(shù)據(jù)傳輸。
過去開發(fā)PC 端程序比較困難,程序員不僅要熟悉USB 協(xié)議,還要熟悉Windows 體系結(jié)構(gòu)。但是,從Windows 98/2000 開始, 提供了Win32 驅(qū)動程序模型(WDM) 設(shè)備驅(qū)動程序模型,并且在PC 機(jī)上可以利用高級編程語言,例如VC++ 、VB 等進(jìn)行編程;另外,許多公司提供現(xiàn)成的程序或Windows 開發(fā)庫。因此,上位管理機(jī)的控制程序開發(fā)已不再是難題,本文對此不作詳細(xì)闡述,可參見文獻(xiàn)[ 1 ,2 ] 。這里主要闡述USB設(shè)備端的單片機(jī)軟件的設(shè)計。
單片機(jī)與上位管理機(jī)通信的程序流程如圖3 所示。
圖3 軟件流程
此處單片機(jī)主要完成接收命令、分析命令、上傳數(shù)據(jù)等功能。限于篇幅,這里只給出單片機(jī)對命令分析部分的程序(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 結(jié)束語
本文在敘述射頻IC 卡系統(tǒng)的結(jié)構(gòu)與原理的基礎(chǔ)上,利用USBN9603 接口芯片對原有車載驗卡機(jī)進(jìn)行了改進(jìn),詳細(xì)介紹了硬件接口和軟件設(shè)計方法。由于USB 的諸多優(yōu)點和靈活的數(shù)據(jù)傳輸方式,基于USB 接口的射頻IC 卡系統(tǒng)必將得到更廣闊的應(yīng)用。
參考文獻(xiàn)
[1 ] Cant C.Windows WDM設(shè)備驅(qū)動程序開發(fā)指南.孫義,馬莉波,國雪飛,等譯.北京:機(jī)械工業(yè)出版社, 2000
[2 ] 張弘.USB 接口設(shè)計.西安:西安電子科技大學(xué)出版社,2002
[3 ] 沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計實例與分析.北京:北京航空航天大學(xué)出版社, 2003
[4 ] 許永和.USB 外圍設(shè)備設(shè)計與應(yīng)用.北京:中國電力出版社,2002