引言
非接觸式IC卡通過射頻感應(yīng)從讀寫設(shè)備獲取能量和交換數(shù)據(jù),所以非接觸式IC卡又叫射頻卡.與傳統(tǒng)的接觸式IC卡相比,非接觸式IC卡無論從其可靠性、易用性、安全性還是抗干擾性等方面都有著明顯的優(yōu)勢,從長遠(yuǎn)角度看,非接觸式IC卡必將取代當(dāng)前廣泛使用的接觸式IC卡.目前,國內(nèi)引進的射頻IC卡主要有荷蘭Philips公司的Mifare和美國TIMIC公司的E55xx系列卡等.而Philips公司的Mifare卡占世界范圍同類智能卡銷量的60%以上,成為市場的主流產(chǎn)品.在我們承擔(dān)非接觸式IC卡燃?xì)獗淼拈_發(fā)之處,仔細(xì)分析了市場上現(xiàn)有的射頻卡應(yīng)用的成功經(jīng)驗與失敗教訓(xùn)時發(fā)現(xiàn),許多產(chǎn)品不同程度存在著射頻信號讀寫不穩(wěn)定和數(shù)據(jù)通訊不可靠等問題,因此,如何提高射頻卡讀寫模塊的穩(wěn)定性和可靠性是本項目研究的重點.
1 MF1射頻卡的工作原理和存儲結(jié)構(gòu)
1.1工作原理
非接觸式IC卡燃?xì)獗碇猩漕l卡的電氣部分由天線、1個高速(106Kb/s)的RF接口、1個控制單元和1個8K位EEPROM組成.其工作原理如下:燃?xì)獗韮?nèi)的讀寫模塊向射頻卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有1個LC串聯(lián)諧振電路,其頻率與讀寫模塊發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接1個單向?qū)ǖ碾娮颖茫瑢㈦娙輧?nèi)的電荷送到另一個電容內(nèi)儲存,當(dāng)所積累的電荷達(dá)到2V時,此電容可作為電源為其他電路提供工作電壓,將非接觸式IC卡(用戶卡)內(nèi)數(shù)據(jù)發(fā)射出去或接收讀寫模塊的數(shù)據(jù) 。
1.2存儲結(jié)構(gòu)和組成
在射頻卡具體選型時,考慮到通用性和安全性,首選Philips公司典型產(chǎn)品Mifare1ICS50(簡稱MF1)卡.
MF1卡片的存儲容量為1K×8位字長,采用EEPROM作為存儲介質(zhì).整個結(jié)構(gòu)劃分為16個扇區(qū),編為扇區(qū)0~15.每個扇區(qū)有4個塊(Block),分別為塊0,1,2,3.每個塊有16個字節(jié).一個扇區(qū)共有16Byte×4=64Byte.每個扇區(qū)的第4塊也稱作尾塊,包含了該扇區(qū)的密碼A(6個字節(jié))、存取控制(4個字節(jié))、密碼B(6個字節(jié)),是控制塊.其余3塊是數(shù)據(jù)塊.
在本系統(tǒng)中,MF1卡片用作燃?xì)獗碛脩艨〞r,將扇區(qū)1、2用作存儲用戶相關(guān)信息,剩余空間可“一卡多用”,具體數(shù)據(jù)存儲分布如圖1所示.
MF1卡每個扇區(qū)的密碼和存取控制都是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制,存取控制決定各塊的讀寫權(quán)限與密碼驗證.16扇區(qū)中的每塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的.
2硬件設(shè)計
硬件主要包括MCU電路模塊、基于RC500的基站模塊、天線模塊電路和相關(guān)的匹配電路等,系統(tǒng)原理連接示意圖如圖2所示.
2.1 MCU部分
單片機選用低功耗、安全性高和穩(wěn)定性強的MC68HC908GP32(簡稱GP32)芯片[2].多年來,筆者一直致力于FreeScale公司(前身為原Motorola公司的半導(dǎo)體公司)所生產(chǎn)的芯片應(yīng)用開發(fā)工作.公司的08系列MCU型號就有100多種,其中的GP32比較適合燃?xì)獗韮?nèi)射頻卡的讀寫模塊設(shè)計.GP32不僅性能穩(wěn)定而且具有性能價格比高的突出優(yōu)勢.其自身有32KB的Flash存儲器、支持在線編程、8MHz內(nèi)部總線頻率和低功耗等性能,尤其還具有8個字節(jié)(32位)Flash區(qū)的密碼保護,這就大大加強了氣表內(nèi)信息的安全性.
2.2基站部分
系統(tǒng)的基站單元采用PHILIPS公司的MF-RC500芯片.MF-RC500是與射頻IC卡實現(xiàn)無線通信的核心部件,也是讀寫模塊讀寫MF1卡的關(guān)鍵接口芯片,該芯片為目前用于13暢56MHz頻段非接觸通信的主流讀卡IC.MF-RC500芯片采用先進的調(diào)制和解調(diào)技術(shù),支持13暢56MHz頻段所有被動非接觸式通信方式和協(xié)議,并支持ISO14443A中所有的層.MF-RC500芯片內(nèi)的發(fā)送器部分在不增加外接有源電路時可直接驅(qū)動的天線操作距離為100mm,接收模塊部分則提供一個穩(wěn)健可靠的解調(diào)/解碼電路,用于ISO14443A兼容的應(yīng)答信號.MF-RC500芯片的基帶部分包括ISO14443A幀處理、CRC校驗和快速CRYPTO1加密算法,這都給燃?xì)獗韮?nèi)的信息安全和系統(tǒng)可靠運行提供了有力的保障[3].
2.3天線及相關(guān)匹配電路部分
MFRC500根據(jù)其寄存器的設(shè)定對發(fā)送數(shù)據(jù)進行調(diào)制得到發(fā)送的信號,通過由天線驅(qū)動引腳TX1和TX2驅(qū)動的天線以13暢56MHz的電磁波形式發(fā)送出去.在其射頻范圍內(nèi)的非接觸卡采用RF場的負(fù)載調(diào)制進行響應(yīng)。天線接收到卡片的響應(yīng)信號經(jīng)過天線匹配電路送到MF-RC500的接收引腳RX,芯片內(nèi)部的接收器對接收信號進行解調(diào)、譯碼,并根據(jù)寄存器的設(shè)定進行處理,最后將數(shù)據(jù)發(fā)送到并行接口由微控制器讀取[4].為了獲得穩(wěn)定、可靠的射頻信號,天線部分的電路設(shè)計非常關(guān)鍵,這也是一門很深入的技術(shù).
2.3.1高頻濾波電路
為了防止信號線上的干擾,使用了EMC高頻濾波電路.MF-RC500的天線引腳TX1,TX2,RX以及參考電壓VMID先經(jīng)過EMC濾波電路,然后再與天線匹配電路連接.參見圖3的EMC濾波電路圖,L1, L2, C7, C8, C9, C10組成了MF-RC500射頻發(fā)送信號的濾波電路;R1, R2, C5, C6組成了接收信號的濾波電路,為了達(dá)到良好的電磁兼容,在制作印刷電路板(PCB)時,這部分的電路必須緊靠MF-RC500的天線引腳RX,TX1,TX2.
2.3.2天線及匹配電路
為了給射頻卡提供足夠的能量,天線與卡片間必須實現(xiàn)緊耦合,耦合系數(shù)最少為0暢3(耦合系數(shù)為0時,即由于距離太遠(yuǎn)或磁屏蔽導(dǎo)致完全去耦;耦合系數(shù)為1即全耦合).因此天線線圈采用直徑為1mm的導(dǎo)線,設(shè)計為3圈的65mm×54mm方形天線.此時,天線線圈產(chǎn)生的電感,有下列公式計算:
其中:L—天線電感;I—環(huán)形導(dǎo)體的長度(即1圈的周長),單位為cm;D—導(dǎo)體的寬度,即導(dǎo)線直徑,單位為mm;N—線圈的圈數(shù).
由公式(1)可計算出天線線圈的電感值約為1μH。為了使天線線圈接收的來自芯片天線引腳的射頻信號盡可能減少損失與輻射,采用了如圖3所示的天線匹配電路對其進行阻抗轉(zhuǎn)換.天線匹配電路的電容 C1, C2, C3, C4的參數(shù)由天線的電感值決定.由于每塊不同的天線電路板實際的天線線圈電感值總是會稍有差異,因此在天線匹配電路上使用了一個可調(diào)電容 C0,通過調(diào)整可調(diào)電容將每塊天線板的讀寫距離調(diào)整到最佳.
射頻天線電路原理圖
3軟件設(shè)計
軟件部分主要由一個主程序和若干子程序(或函數(shù))構(gòu)成,在主程序中實現(xiàn)對子程序(或函數(shù))的調(diào)用,軟件均采用模塊化程序設(shè)計方法.按氣表與MF1卡片的通信流程,將讀寫模塊與用戶卡的通信操作使用函數(shù)的形式封裝起來,構(gòu)成讀寫模塊的射頻通信函數(shù)[5]通信函數(shù)有:詢卡/應(yīng)答函數(shù)mf_request_ans(),防沖突函數(shù)mf_anticoll(),選中卡片函數(shù)mf_select(),密碼認(rèn)(.)證函數(shù)mf_authen(),寫氣量函數(shù)mf_write(),卡清零函數(shù)mf_clear().對于這些函數(shù)的具體實行過程,限于篇幅,僅對密碼認(rèn)證過程的實現(xiàn)和主程序操作流程作詳細(xì)介紹.
3.1密碼認(rèn)證過程實現(xiàn)
MF1內(nèi)部的安全加密算法叫做Crypto1,使用的密碼長度是48bit,即6個字節(jié).MF1卡中的數(shù)據(jù),都有密碼保護.只有使用正確的密碼,才能成功進行卡密碼校驗,然后才能訪問存儲在EEPROM中的卡片數(shù)據(jù).在按照ISO14443A協(xié)議成功選中一張卡后,用戶若要繼續(xù)訪問該卡,就必須首先進行卡的密碼驗證.
使用正確的密碼進行有效的密碼驗證需要經(jīng)過3個階段:
1)通過LoadKeyE2(LoadKeyE2與下文中的LoadKey,Authent1和Authent2等均為MF-RC500命令)或LoadKey命令向內(nèi)部密碼緩沖區(qū)載入密碼.
2)開始Authent1命令.命令執(zhí)行后,可通過密碼錯誤標(biāo)志位(寄存器ErrorFlag的第6位)來檢查命令的執(zhí)行情況.
3)開始Authent2命令.命令執(zhí)行后,可通過密碼錯誤標(biāo)志位(寄存器ErrorFlag的第6位)以及Crypto1On位(寄存器Control的第3位)來檢查命令的執(zhí)行情況.
若Authent2命令執(zhí)行正確,則通過了對該卡的存儲密碼的校驗,可以進一步對卡片存儲區(qū)的用戶數(shù)據(jù)(如:購買氣量,上次剩余氣量等)進行改寫操作.
3.2主程序設(shè)計
讀寫用戶卡主程序操作流程如圖4所示,當(dāng)燃?xì)庥脩艨ń邮盏阶x卡模塊的指令后,經(jīng)過指令譯碼,通過控制邏輯進行數(shù)據(jù)處理,并返回相應(yīng)的處理結(jié)果.當(dāng)用戶卡位于氣表讀卡模塊的有效工作范圍之外時,卡上芯片處于無電狀態(tài),不能進行任何操作;當(dāng)其進入讀卡器的有效工作范圍用戶卡上電復(fù)位,進入等待狀態(tài),在此狀態(tài)下可正確接收和響應(yīng)讀卡器發(fā)送的詢卡/應(yīng)答指令,并進行防沖突、相互認(rèn)證、讀、寫、加、減、恢復(fù)、傳輸?shù)炔僮?最后,將從用戶卡中讀出的氣量數(shù)與GP32內(nèi)存剩余的氣量數(shù)相加,并存回內(nèi)存,然后將卡清零后退出.
主程序操作流程
4結(jié)語
介紹了一種基于PHILIPS公司MF-RC500芯片的射頻卡讀寫模塊在非接觸式IC卡燃?xì)獗黹_發(fā)中的應(yīng)用,該模塊經(jīng)過測試,具有響應(yīng)速度快、使用簡便、讀卡距離遠(yuǎn)和通信穩(wěn)定可靠的顯著特點.如果適當(dāng)加以改裝的話,完全可應(yīng)用到水、電表中,實現(xiàn)這類傳統(tǒng)儀表的升級換代