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