PHILIPS MFRC500非接觸式IC卡讀寫模塊的應(yīng)用開發(fā)
文章出處:http://m.dipdnbxp.cn 作者:山東在學(xué)控制科學(xué)與工程學(xué)院 張俊杰 喬誼正 人氣: 發(fā)表時間:2011年10月27日
摘要:本文介紹了PHILIPS公司的MF1ICS50非接觸式IC卡的內(nèi)部結(jié)構(gòu)、工作原理及基于基站芯片MFRC500的嵌入式讀寫模塊的軟硬件設(shè)計。
關(guān)鍵詞:IC卡;非接觸式;嵌入式MF1卡RC500
引言
近幾年來,隨著IC卡中非接觸式射頻卡的高度安全保密性、使用簡單等特點,使之在各領(lǐng)域的應(yīng)用中異軍突起,成為當(dāng)今IC智能卡中的流行寵物,應(yīng)用前景十分廣闊。我們在深入了解了PHILIPS公司的MF1ICS50非接觸式IC卡和讀卡設(shè)備的核心模塊MFRC500的工作原理后,開發(fā)出了MF1卡讀寫模塊。本讀寫模塊能完成對MF1卡所有讀寫及控制操作,并且還可以方便的嵌入到其他系統(tǒng)(如:考勤,門禁)中,受控于主控模塊,成為用戶系統(tǒng)的一部分。用戶利用本模塊可以方便的構(gòu)成自己的智能卡應(yīng)用產(chǎn)品。
內(nèi)部結(jié)構(gòu)及工作原理
MF1卡系統(tǒng)的核心是PHILIPS公司的MIFARE1ICS50系列晶片,該技術(shù)已定為國際標(biāo)準(zhǔn):ISO/IEC14443TYPEA。目前許多較大的IC卡卡片制造商均以MIFARE技術(shù)為標(biāo)準(zhǔn)。
MF1卡中包含一塊ASIC微晶片和一個高頻天線,其基本工作原理是:讀寫器中的MIFARE基站向MIFARE卡發(fā)一組固定頻率(13.56MHz)的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與基站發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,使卡片內(nèi)具有電荷,當(dāng)所積累的電荷達(dá)到2V時,卡片中芯片將卡內(nèi)數(shù)據(jù)發(fā)射出去或接收基站對卡片的操作。
MF1的框圖如圖1,整個卡片包含了兩個部分,RF射頻接口電路和數(shù)字電路部分。
圖1 MF11CS50的組成框圖(略)
RF射頻接口電路
在RF射頻接口電路中,主要包括有波形轉(zhuǎn)換模塊。它可將卡片讀寫器上的13.56MHz的無線電調(diào)制頻率接收,一方面送調(diào)制/解調(diào)模塊,另一方面進(jìn)行波形轉(zhuǎn)換,將正弦波轉(zhuǎn)換為方波,然后對其整流濾波,由電壓調(diào)節(jié)模塊對電壓進(jìn)行進(jìn)一步的處理,包括穩(wěn)壓等,最終將輸出電壓供給卡片上的各電路。
在數(shù)字電路部分模塊中
ATR模塊
當(dāng)一張MF1卡片處在卡片讀寫器的天線工作范圍之內(nèi)時,程序員控制讀寫器向卡片發(fā)出RequestAll(或RequestStd)命令后,卡片的ATR將啟動,將卡片Block0中的卡片類型(TagType)號,共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行第一步的ATR工作,讀寫器對卡片的其他操作(Read/Write等)將不會進(jìn)行??ㄆ念愋停═agType)號共2個字節(jié),可能為:0004H。
AntiCollision模塊
如果有多張MF1卡片處在卡片讀寫器天線的工作范圍之內(nèi),AntiCollision模塊的防重疊功能將啟動工作。在程序員控制下的卡片讀寫器將會首先與每一張卡片進(jìn)行通信,取得每一張卡片的序列號??ㄆx寫器中的AntiCollision防重疊功能配合卡片上的防重疊功能模塊,由程序員來控制讀寫器,根據(jù)卡片的序列號來選定一張卡片。被選中的卡片將直接與讀寫器進(jìn)行數(shù)據(jù)交換,未被選擇的卡片處于等待狀態(tài),隨時準(zhǔn)備與卡片讀寫器進(jìn)行通信。AntiCollision模塊(防重疊功能)啟動工作時,卡片讀寫器將得到卡片的序列號。序列號存儲在卡片的Block0中,共有5個字節(jié),實際有用的為4個字節(jié),另一個字節(jié)為序列號的校驗字節(jié)。序列號中實際有用的4個字節(jié),可能為:773B72A9。
Select Application 模塊
當(dāng)卡片與讀寫器完成了上述的二個步驟,程序員控制的讀寫器要想對卡片進(jìn)行讀寫操作,必須對卡片進(jìn)行"Select"操作,使卡片真正地被選中。被選中的卡片將卡片上存儲在Block0中的卡片容量"Size"字節(jié)傳送給讀寫器。當(dāng)讀寫器收到這一字節(jié)后,即可對卡片進(jìn)行深一步的操作。例如,可以進(jìn)行密碼驗證等。讀寫器收到的"Size"字節(jié)可能為:88H。
認(rèn)證及存取控制模塊
經(jīng)過上述三個步驟,確認(rèn)已經(jīng)選擇了一張卡片時,程序員對卡片進(jìn)行讀寫操作之前,必須對卡片上已經(jīng)設(shè)置的密碼進(jìn)行三級認(rèn)證,如果匹配,則允許進(jìn)一步的Read/Write操作。MF1卡片上有16個扇區(qū),每個扇區(qū)都可分別設(shè)置各自的密碼,互不干涉。因此每個扇區(qū)可獨立地應(yīng)用于一個應(yīng)用場合。整個卡片可以設(shè)計成"一卡通"形式來應(yīng)用。
控制及算術(shù)運算單元
這一單元是整個卡片的控制中心,是卡片的"頭腦"。它主要進(jìn)行對整個卡片的各個單位進(jìn)行微操作控制,協(xié)調(diào)卡片的各個步驟;同時它還對各種收/發(fā)的數(shù)據(jù)進(jìn)行算術(shù)運算處理,遞增/遞減處理,CRC運算處理等,是卡片中內(nèi)建的中央微處理機(MCU)單元。
數(shù)據(jù)加密單元
該單元完成對數(shù)據(jù)的加密處理及密碼保護(hù)。
存儲器及其接口電路
該單元主要用于存儲數(shù)據(jù),EEPROM中的數(shù)據(jù)在卡片失掉電源后(卡片離開讀寫器天線的有效工作范圍內(nèi))仍將保持,用戶所要存儲的數(shù)據(jù)存放在該單元中。MF1卡片中的這一單元容量為8196bit(1Kbyte),分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成,(我們也將16個扇區(qū)的64個塊按絕對地址編號為0~63)。第0扇區(qū)的塊0(即絕對地址0塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。
每個扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。每個扇區(qū)的塊3為控制塊,包括了密碼A、存取控制、密碼B。具體結(jié)構(gòu)如下:
每個扇區(qū)的密碼和存取控制都是獨立的,可以根據(jù)實際需要設(shè)定各自的密碼及存取控制。
存取控制為4個字節(jié),共32位,扇區(qū)中的每個塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的。三個控制位以正和反兩種形式存儲于存取控制字節(jié)中,決定了該塊的訪問權(quán)限(如:進(jìn)行減值操作必須驗證KEYA,進(jìn)行加值操作必須驗證KEYB,等等)。
讀寫模塊的結(jié)構(gòu)及工作原理
模塊的核心部份包括一個控制用微處理器和一個MIFARE基站芯片。它能獨立完成對MIFARE卡的所有操作,還具有與用戶主系統(tǒng)的串行通信能力,可根據(jù)用戶系統(tǒng)的命令完成對MIFARE卡的讀寫操作,并將所得數(shù)據(jù)返回給用戶系統(tǒng)。這個用戶系統(tǒng)可以是一個主控板或PC機。
模塊硬件主要由中央微處理器(89C52)、MIFARE基站芯片、高頻電路、模塊天線、RS232通信電路、復(fù)位電路、LED狀態(tài)顯示和喇叭驅(qū)動電路等組成。
寫模塊的核心是PHILIPS公司生產(chǎn)的讀寫卡專用芯片MFRC500。RC500符合ISO14443A,外接天線后讀卡距離可達(dá)到10cm。RC500與CPU接口非常簡單,上電或復(fù)位后能自動監(jiān)測與CPU的接口方式,我們采用地址數(shù)據(jù)總線復(fù)用方式。具體見原理圖4。
圖3 硬件結(jié)構(gòu)框(略)
圖4 CPU與RC500接口電路原理圖(略)
RC500內(nèi)部有8個寄存器頁,每頁有8個寄存器,每個寄存器有8位數(shù)據(jù)。這些寄存器可統(tǒng)一編址(在我們的系統(tǒng)中為0x00--0x3F),CPU將這些寄存器作為外部RAM進(jìn)行操作。例如,CPU需要讓RC500執(zhí)行某個命令(如:Transmit)時,把此命令的代碼(0x1a)寫入Command寄存器可以了。
RC500與卡片的通信是通過天線發(fā)送一些指令代碼來完成,并且要按照特定的通訊流程,具體的通信流程如下圖:
CPU對卡片的操作不是簡單的一條指令所能完成的,其中必須有對RC500硬件內(nèi)部寄存器的設(shè)置。例如對卡片進(jìn)行讀(READ)操作,程序員必須對RC500內(nèi)部的BitPhase、Rxthreshold、TimerControl、InterruptEn、InterruptRq等寄存器進(jìn)行配置,還要讀PrimaryStatus、SecondaryStatus等寄存器的狀態(tài),對最終讀得的數(shù)據(jù)還必須進(jìn)行校驗。一般的操作步驟如下:寄存器初始化,把要發(fā)送的數(shù)據(jù)(如:Read=0x30)放到RC500內(nèi)部的FIFO(先入先出)寄存器中,然后把命令代碼(如;Transceive=0x1e)寫到Command寄存器。RC500便會執(zhí)行命令,按照特定格式把數(shù)據(jù)發(fā)出去,然后等待卡片返回的數(shù)據(jù)(也放到FIFO中),CPU從FIFO中讀走數(shù)據(jù),完成操作。
在讀寫模塊主程序中,標(biāo)準(zhǔn)配置以RS232方式與主控模塊進(jìn)行通信。一條指令包括命令碼、命令塊長度、命令塊、異或校驗幾部分。主程序運行時循環(huán)等待主控模塊的指令,有指令收到,便跳出循環(huán)執(zhí)行該指令。這樣即使用戶不清楚MFRC500和MF1卡的工作原理,也可將讀寫模塊方便的嵌入到自己的系統(tǒng)中。
圖5 RC500與MF1卡的通信流程圖(略)
此外,我們還根據(jù)用戶需要有ABA,WIG26等其它串行輸出方式。
讀寫模塊應(yīng)用實例
該讀寫模塊已經(jīng)成功的應(yīng)用到山東浪潮瀚海電子公司開發(fā)的考勤、門禁、售飯等系統(tǒng)中。與磁卡、只讀射頻卡(EM卡)組成的系統(tǒng)相比,系統(tǒng)性能大大改善,并且為"一卡通"的實現(xiàn)提供了必備條件。圖6為一個典型的網(wǎng)絡(luò)門禁控制系統(tǒng)。
圖6 MF1卡讀寫模塊在門禁系統(tǒng)的應(yīng)用(略)
結(jié)束語
IC卡以其高度的信息集成及安全性已經(jīng)融入當(dāng)今信息技術(shù)的主流,越來越受到人們的青睞。本文介紹了PHILIPS公司的MFICS50非接觸式IC卡的內(nèi)部結(jié)構(gòu)和工作原理,以及基于MFRC500的嵌入式讀寫模塊的軟硬件設(shè)計。此讀寫模塊的使用使復(fù)雜的IC卡技術(shù)變得非常簡單,對非接觸式智能卡的推廣有重要意義。