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