摘 要: 針對(duì)目前RFID讀寫(xiě)器無(wú)法隨身攜帶,,實(shí)現(xiàn)遠(yuǎn)程的IC卡讀寫(xiě)操作的問(wèn)題,,采用GPRS無(wú)線網(wǎng)絡(luò)作為數(shù)據(jù)傳輸?shù)妮d體,實(shí)現(xiàn)了無(wú)線RFID讀寫(xiě)器的開(kāi)發(fā),。采用μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)作為讀寫(xiě)器終端的軟件平臺(tái),,在ARM7系列微處理器LPC2148上實(shí)現(xiàn)了對(duì)IC卡的發(fā)行、加值,、消費(fèi),、操作記錄查詢與匯總、數(shù)據(jù)采集以及無(wú)線傳輸,。采用動(dòng)態(tài)密鑰加密算法很好地保證了IC卡的數(shù)據(jù)安全,。應(yīng)用結(jié)果表明,該RFID讀寫(xiě)器運(yùn)行穩(wěn)定可靠,、響應(yīng)速度快,、安裝及操作方便、便于攜帶,,具有一定的實(shí)用性和推廣價(jià)值,。
關(guān)鍵詞: μC/OS-Ⅱ;GPRS,;LPC2148,;動(dòng)態(tài)密鑰
傳統(tǒng)的RFID讀寫(xiě)器多采用有線接入的方式實(shí)現(xiàn)與數(shù)據(jù)中心(上位機(jī))的通信,即使部分RFID讀寫(xiě)器終端實(shí)現(xiàn)了無(wú)線的數(shù)據(jù)傳輸,,但也多是采用短距離的無(wú)線通信方式,,最終還是要經(jīng)過(guò)現(xiàn)場(chǎng)的有線設(shè)備實(shí)現(xiàn)與數(shù)據(jù)中心的通信,無(wú)法滿足遠(yuǎn)距離,、跨區(qū)域,、便攜式的RFID讀寫(xiě)器的應(yīng)用需求。本文介紹的無(wú)線RFID讀寫(xiě)器的開(kāi)發(fā)是以提高系統(tǒng)的穩(wěn)定性,、便攜性、安全性為目標(biāo),,采用嵌入式系統(tǒng)的設(shè)計(jì)思想,,硬件方面使用功能強(qiáng)大的ARM處理器LPC2148,外擴(kuò)GPRS無(wú)線模塊實(shí)現(xiàn)終端數(shù)據(jù)的實(shí)時(shí)上傳,。LPC2148豐富的IO口資源使其能夠外擴(kuò)更多的外設(shè),,保證了終端功能的實(shí)現(xiàn)。軟件方面引入實(shí)時(shí)多任務(wù)嵌入式操作系統(tǒng)μC/OS-Ⅱ,,進(jìn)行多任務(wù)的調(diào)度,,在提高系統(tǒng)穩(wěn)定性的同時(shí)降低了系統(tǒng)的開(kāi)發(fā)難度,。
1 GPRS簡(jiǎn)介
通用分組無(wú)線業(yè)務(wù)GPRS(General Packet Radio Service)是在現(xiàn)有GSM系統(tǒng)上發(fā)展起來(lái)的一種新的承載業(yè)務(wù),目的是為GSM用戶提供分組形式的數(shù)據(jù)業(yè)務(wù),,而不需要利用電路交換模式的網(wǎng)絡(luò)資源,,從而提供了一種高效、低成本的無(wú)線分組數(shù)據(jù)業(yè)務(wù),。GPRS充分利用共享無(wú)線信道,,實(shí)現(xiàn)了與標(biāo)準(zhǔn)Internet的無(wú)縫連接,采用IP Over PPP實(shí)現(xiàn)數(shù)據(jù)終端的高速,、遠(yuǎn)程接入,。無(wú)線GPRS網(wǎng)絡(luò)所具有的永遠(yuǎn)在線、按流量計(jì)費(fèi),、傳輸速率高以及支持X.25和IP協(xié)議等突出特點(diǎn),,特別適合于RFID讀寫(xiě)器系統(tǒng)這樣間斷、突發(fā)性的數(shù)據(jù)傳輸,。
2 讀寫(xiě)器硬件組成
2.1 硬件系統(tǒng)原理
IC卡無(wú)線手持機(jī)的硬件系統(tǒng)結(jié)構(gòu)框圖如圖1所示,。圖中,LPC2148為終端的主控單元,,通過(guò)GPIO口與IC卡讀卡芯片MF RC500相連實(shí)現(xiàn)對(duì)IC卡的讀寫(xiě),;通過(guò)串口1(URRT1)與GPRS模塊MC55相連實(shí)現(xiàn)GPRS數(shù)據(jù)傳輸;系統(tǒng)外擴(kuò)一塊I2C接口的E2PROM芯片24C256,,用于存儲(chǔ)終端設(shè)置參數(shù)以及暫存IC卡用戶在本機(jī)的交易信息,;通過(guò)LPC2148自帶的USB接口實(shí)現(xiàn)上位機(jī)對(duì)讀寫(xiě)器相關(guān)參數(shù)的設(shè)置以及交易信息的離線上傳。
2.2 讀寫(xiě)器的微處理器
手持機(jī)終端系統(tǒng)的核心部分是由LPC2148及其外圍電路構(gòu)成的最小系統(tǒng)電路,。LPC2148是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的32/16 bit ARM7 TDMI-S CPU的微控制器,,并帶有32 KB和512 KB嵌入的高速Flash存儲(chǔ)器。較小的封裝和很低的功耗使得LPC2148特別適用于POS機(jī)等小型的應(yīng)用場(chǎng)合,。LPC2148提供多達(dá)45個(gè)高速GPIO口以及USB2.0全速設(shè)備控制器,,使其成為本系統(tǒng)設(shè)計(jì)的理想選擇。
2.3 讀寫(xiě)器的IC卡讀寫(xiě)模塊
IC卡讀寫(xiě)模塊選用Philips公司Mifare卡專用讀卡芯片MF RC500及其相關(guān)的外圍電路,、射頻天線等,,實(shí)現(xiàn)手持機(jī)與IC卡之間的數(shù)據(jù)通信。MF RC500是應(yīng)用于13.56 MHz非接觸式通信中高集成讀卡IC系列之一,,利用了先進(jìn)的調(diào)制和解調(diào)概念,,在13.56 MHz下,完全集成了所有類型的被動(dòng)非接觸式通信方式和協(xié)議,,并支持ISO14443A所有的層,。
2.4 匹配電路及天線的設(shè)計(jì)[1]
MF RC500是一個(gè)單獨(dú)的讀卡器集成電路,在本系統(tǒng)中,MF RC500與Mifare卡之間的數(shù)據(jù)交互是通過(guò)RF天線來(lái)完成的,。參照MF RC500數(shù)據(jù)手冊(cè),,采用直接匹配的天線,即可實(shí)現(xiàn)該讀寫(xiě)器與Mifare卡之間的數(shù)據(jù)通信和能量傳遞,,其推薦的工作距離可達(dá)100 mm,。直接匹配天線的匹配電路如圖2所示,主要包括:
(1)EMC濾波:Mifare系統(tǒng)的工作頻率為13.56 MHz,,由石英振蕩器發(fā)生,,但它同時(shí)也產(chǎn)生高次諧波。為了符合國(guó)際EMC規(guī)定,,13.56 MHz中的3次,、5次和高次諧波要被良好地抑制。本系統(tǒng)使用如圖2所示的L1,、L2,、C11、C13組成的低通濾波器來(lái)實(shí)現(xiàn)EMC濾波,。
(2)接收電路:MF RC500的內(nèi)部接收部分使用了一個(gè)新的接收概念,,即使用卡響應(yīng)的副載波負(fù)載調(diào)制所產(chǎn)生的兩個(gè)邊頻帶,由圖2中的R9,、R10,、C9、C10組成接收電路,。
(3)阻抗匹配:在圖2中由電容C11和C13組成,,電容的值由天線本身和環(huán)境因素來(lái)決定,本系統(tǒng)C11,、C13均取47 pF,。該部分電路主要是為了實(shí)現(xiàn)濾波和天線之間的阻抗匹配,以使天線的性能達(dá)到最佳,。
2.5 讀寫(xiě)器無(wú)線傳輸模塊
系統(tǒng)的無(wú)線數(shù)據(jù)傳輸通過(guò)內(nèi)嵌有TCP/IP協(xié)議的GPRS模塊來(lái)實(shí)現(xiàn),。目前市場(chǎng)上提供的GPRS無(wú)線模塊有WAVECOM公司的Q2403B,SIEMENS公司的MC35i,、MC39I,,摩托羅拉公司的G20等。結(jié)合本系統(tǒng)的實(shí)際應(yīng)用,,選用了SIEMENS的Sim300,。Sim300是新一代的900 MHz/1 800 MHz雙頻自動(dòng)選擇的無(wú)線模塊,內(nèi)嵌有TCP/IP協(xié)議棧,,無(wú)需微處理器的支持即可實(shí)現(xiàn)基于TCP/IP的數(shù)據(jù)傳輸。其支持標(biāo)準(zhǔn)的AT命令及增強(qiáng)的AT命令監(jiān)護(hù)數(shù)據(jù)模式,,功能強(qiáng)大,,操作靈活方便,。微處理器可以通過(guò)標(biāo)準(zhǔn)串口接口RS232與Sim300通信,為用戶提供了標(biāo)準(zhǔn)的AT命令接口,,為數(shù)據(jù)傳輸提供了快速,、可靠、安全的傳輸通道,,用戶可以很方便地進(jìn)行實(shí)際應(yīng)用的二次開(kāi)發(fā)設(shè)計(jì),。
2.6 讀寫(xiě)器人機(jī)交互的實(shí)現(xiàn)
手持終端人機(jī)交互通過(guò)外擴(kuò)的一塊I2C接口的數(shù)碼管驅(qū)動(dòng)及鍵盤(pán)掃描管理芯片ZLG7290,配以8 bit共陰數(shù)碼管和16個(gè)按鍵實(shí)現(xiàn),。ZLG7290是廣州周立功單片機(jī)發(fā)展有限公司研發(fā)的數(shù)碼管驅(qū)動(dòng)及鍵盤(pán)掃描管理芯片,,具有I2C總線串行接口,能夠提供鍵盤(pán)中斷,、驅(qū)動(dòng)8 bit共陰數(shù)碼管和64個(gè)按鍵掃描等功能,,并且支持10種數(shù)字和21種字母的譯碼顯示功能。
3 讀寫(xiě)器軟件設(shè)計(jì)
讀寫(xiě)器的軟件采用μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)作為系統(tǒng)的軟件平臺(tái),,在μC/OS-Ⅱ系統(tǒng)下實(shí)現(xiàn)對(duì)讀寫(xiě)器終端的控制管理,。μC/OS-Ⅱ具有較高的可靠性和穩(wěn)定性,提供了多任務(wù)管理功能,。系統(tǒng)的各單元部分以單獨(dú)的任務(wù)線程設(shè)計(jì),,在減少了軟件設(shè)計(jì)的復(fù)雜度的同時(shí)也增強(qiáng)了軟件系統(tǒng)的穩(wěn)定性。
3.1 μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)的移植
要將μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)移植到處理器上,,處理器必須滿足以下條件[2]:
(1)處理器的編譯環(huán)境能夠產(chǎn)生可以重入的C代碼,。
(2)用C語(yǔ)言就可以打開(kāi)或關(guān)閉中斷。
(3)處理器支持中斷處理,,并能產(chǎn)生定時(shí)中斷,。
(4)處理器支持能夠容納一定數(shù)量的硬件堆棧。
(5)處理器具有將寄存器,、堆棧指針讀出和存儲(chǔ)到堆棧中的指令,。
對(duì)于ARM7系列的微處理器LPC2148及其開(kāi)發(fā)環(huán)境ADS1.2的編譯器,完全能夠滿足上述條件,,可以確保μC/OS-Ⅱ在LPC2148上的移植成功,。移植工作包括:
(1)用#define設(shè)置一個(gè)常量的值(OS_CPU.H)。
(2)聲明10個(gè)數(shù)據(jù)類型(OS_CPU.H),。
(3)用#define聲明3個(gè)宏(OS_CPU.H),。
(4)用C語(yǔ)言編寫(xiě)6個(gè)簡(jiǎn)單的函數(shù)(OS_CPU_C.C)。
(5)編寫(xiě)4個(gè)匯編語(yǔ)言函數(shù)(OS_CPU_A.ASM),。
3.2 無(wú)線數(shù)據(jù)傳輸?shù)能浖?shí)現(xiàn)
Sim300中內(nèi)嵌了TCP/IP協(xié)議,,并且以AT指令的形式給控制模塊提供接入GPRS網(wǎng)絡(luò)進(jìn)而接入Internet的API接口。由于該GPRS模塊具有自動(dòng)撥號(hào)功能,因此在進(jìn)行無(wú)線數(shù)據(jù)傳輸時(shí),,不需要通過(guò)AT撥號(hào)指令連接Internet,。讀卡器系統(tǒng)在傳輸數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)準(zhǔn)確性的要求相對(duì)較高,因此,,本設(shè)計(jì)采用TCP的方式實(shí)現(xiàn)讀寫(xiě)器終端與系統(tǒng)數(shù)據(jù)中心之間的數(shù)據(jù)傳輸,。讀寫(xiě)器終端在與數(shù)據(jù)中心進(jìn)行數(shù)據(jù)傳輸時(shí)用到的AT指令如下:
(1)建立TCP連接
AT+CIPSTART=“TCP”,”61.13.48.9”,,”2020”
連接數(shù)據(jù)中心服務(wù)器,,此處61.13.48.9是服務(wù)器的IP地址,2020是端口號(hào),。連接成功的返回值是:CONNECT OK,。
(2)向服務(wù)器發(fā)送數(shù)據(jù)
AT+CIPSEND
>Hello everyone!<Ctrl+Z>
向服務(wù)器發(fā)送字符串Hello everyone,!,。發(fā)送成功返回值為:OK。
(3)關(guān)閉連接
AT+CIPCLOSE
斷開(kāi)與數(shù)據(jù)中心服務(wù)器之間的連接,,操作成功返回值為:OK,。
(4)關(guān)閉移動(dòng)場(chǎng)景
AT+CIPSHUT
操作成功返回值為:OK。
當(dāng)服務(wù)器端有數(shù)據(jù)傳輸?shù)紾PRS模塊時(shí),,數(shù)據(jù)會(huì)通過(guò)模塊與LPC2148之間的串口接口直接轉(zhuǎn)發(fā)給MCU,,不需要AT指令操作。
由于該GPRS模塊具有上電自動(dòng)撥號(hào)的功能,,在程序設(shè)計(jì)時(shí)就不再考慮終端撥號(hào)上網(wǎng)的實(shí)現(xiàn),。
3.3 MF RC500驅(qū)動(dòng)軟件的設(shè)計(jì)
MF RC500的驅(qū)動(dòng)程序主要是MCU對(duì)MF RC500的控制以實(shí)現(xiàn)MF RC500與IC卡之間的數(shù)據(jù)交互,并把相關(guān)的數(shù)據(jù)結(jié)果返回給MCU,。MCU通過(guò)MF RC500與IC卡的數(shù)據(jù)交換過(guò)程如下:
(1)由讀寫(xiě)器的MCU發(fā)送指令給MCM(MF RC500),。
(2)MCM執(zhí)行指令,并將其轉(zhuǎn)換為射頻信號(hào)發(fā)送給IC卡,。
(3)IC卡接收到來(lái)自MCM的指令后,,按指令完成其內(nèi)部的各種處理,并回送應(yīng)答信號(hào)/數(shù)據(jù)給MCM,。
(4)MCM接收卡回送的射頻信號(hào),,并將其轉(zhuǎn)換為數(shù)字信號(hào)輸出給MCU,MCU讀取MCM接收到的應(yīng)答/數(shù)據(jù),,即可完成與IC卡的數(shù)據(jù)交換,。
MF RC500實(shí)現(xiàn)對(duì)IC卡讀寫(xiě)的程序流程如圖3所示。
3.4 動(dòng)態(tài)密鑰加密算法
動(dòng)態(tài)密鑰的的基本思想是在保持系統(tǒng)主密鑰不變的情況下,,每讀一次用戶卡就使用本次通信中產(chǎn)生的數(shù)據(jù)A動(dòng)態(tài)地改寫(xiě)用戶卡的密鑰一次,,以此來(lái)確保用戶卡密鑰不斷更新,,從而不被破解。數(shù)據(jù)A可以是當(dāng)前通信時(shí)間,、操作機(jī)具體標(biāo)識(shí)或者隨機(jī)數(shù)的組合,。其具體的設(shè)計(jì)和實(shí)現(xiàn)可以參考文獻(xiàn)[2]。
本文介紹的利用GPRS無(wú)線網(wǎng)絡(luò)作為數(shù)據(jù)傳輸載體,,以ARM7系列微處理器LPC2148作為主控單元的無(wú)線RFID讀寫(xiě)器,具有通用性強(qiáng),、功耗低,、便于攜帶、安裝方便等特點(diǎn),。采用μC/OS-Ⅱ多任務(wù)實(shí)時(shí)操作系統(tǒng),,使得讀寫(xiě)器終端的穩(wěn)定性和可靠性均得到了較大的提高,同時(shí)程序的模塊化設(shè)計(jì)有利于終端功能的升級(jí)與擴(kuò)展,。應(yīng)用結(jié)果表明,,該RFID讀寫(xiě)器運(yùn)行穩(wěn)定可靠、響應(yīng)速度快,、安裝和操作方便,、便于攜帶,具有廣泛的應(yīng)用前景,。
參考文獻(xiàn)
[1] 謝高生,,易靈芝,王根平.動(dòng)態(tài)密鑰在Mifare射頻IC卡識(shí)別系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)測(cè)量與控制,,2009,,17(4):725-726.
[2] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ(第二版)[M].邵貝貝譯.北京:北京航空航天大學(xué)出版社,2003.