一種基于MF RC500的Mifare1卡讀寫器的設(shè)計(jì)與實(shí)現(xiàn)
文章出處:http://coolbang.cn 作者:微計(jì)算機(jī)信息 人氣: 發(fā)表時間:2011年09月18日
1 引言
隨著射頻技術(shù)的推廣,Mifare1卡已經(jīng)廣泛應(yīng)用于公共交通終端、手持終端、板上單元、非接觸式PC終端等各個非接觸式通信場合。非接觸式智能卡讀寫系統(tǒng)是射頻技術(shù)中的一個重要組成部分,可完成指令分析、數(shù)據(jù)采集等諸多功能。這種射頻讀寫系統(tǒng)的實(shí)現(xiàn)原理如下:由讀寫器向Mifare1卡,也就是射頻卡發(fā)射特定頻率的無線電磁波。當(dāng)射頻卡靠近讀寫器時,受讀寫器發(fā)射的電磁波激勵,卡片內(nèi)的LC諧振電路產(chǎn)生共振并且接收電磁波能量。當(dāng)射頻卡接收到足夠的能量時,就將卡內(nèi)存儲的識別資料以及其他數(shù)據(jù)以無線電波的方式傳輸?shù)阶x寫器并且接受讀寫器對卡內(nèi)數(shù)據(jù)的進(jìn)一步操作。
本文提出了一種基于MF RC500的Mifare1卡讀寫器設(shè)計(jì)方案,該方案采用AT89S52單片機(jī)實(shí)現(xiàn)對MCM(Mifare Core Module)的控制。本文的設(shè)計(jì)方案具有硬件實(shí)現(xiàn)簡單、易于軟件二次開發(fā)等優(yōu)點(diǎn)。同時,由于良好的電磁兼容性,該系統(tǒng)比較穩(wěn)定,通信可靠性得到了保證。下面首先給出了系統(tǒng)的總體結(jié)構(gòu)以及方案設(shè)計(jì),然后從硬件設(shè)計(jì)及軟件設(shè)計(jì)兩個方面對系統(tǒng)進(jìn)行了討論和說明。
2系統(tǒng)總體結(jié)構(gòu)及方案設(shè)計(jì)
基金資助:國家科技型中小企業(yè)技術(shù)創(chuàng)新基金(No.00C26212110519)
本文采用AT89S52單片機(jī)、MF RC500以及外圍電路實(shí)現(xiàn)讀寫器的基本組成。讀寫器與Mifare1卡由射頻場來建立無線鏈接并完成數(shù)據(jù)交換。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
系統(tǒng)的工作方式主要是由AT89S52對MF RC500進(jìn)行控制與通信,MF RC500驅(qū)動外圍電路對Mifare1卡進(jìn)行讀寫操作。具體說來,MCU(微控制器,即AT89S52)通過串行口接收PC機(jī)的指令,完成對卡的操作和整個讀寫器的管理;MF RC500負(fù)責(zé)信號的編碼、解碼,信號的調(diào)制、解調(diào);外圍電路建立讀寫器同射頻卡之間的聯(lián)系,此部分的設(shè)計(jì)直接影響到射頻功率的大小以及系統(tǒng)的抗干擾能力;Mifare1卡是系統(tǒng)的應(yīng)用終端,接收讀寫器的指令并返回指令執(zhí)行結(jié)果。
3系統(tǒng)硬件設(shè)計(jì)
硬件主要包括微型單片機(jī)MCU、MF RC500、時鐘電路、匹配電路及接口等外圍電路。下面給出各部分的詳細(xì)說明及相關(guān)設(shè)計(jì)。
(1) MCU部分
系統(tǒng)中選用低功耗、高性能的CMOS 8位單片機(jī)AT89S52。片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器。器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器。同時片內(nèi)帶有防死鎖的WATCHDOG,以確保系統(tǒng)穩(wěn)定運(yùn)行。
(2) 基站部分
系統(tǒng)的基站單元采用PHILIPS公司生產(chǎn)的MF RC500芯片。MF RC500是與射頻卡實(shí)現(xiàn)無線通信的核心部件,也是讀寫器操作Mifare1卡的關(guān)鍵接口芯片。它利用先進(jìn)的調(diào)制和解調(diào)概念,完全集成了在13.56MHz下所有類型的被動非接觸式通信方式和協(xié)議。MF RC500支持ISO14443A所有的層,內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動近操作距離的天線(可達(dá)100mm);接收器部分提供一個堅(jiān)固并有效的解調(diào)和解碼電路,用于ISO14443兼容的應(yīng)答器信號;數(shù)字部分處理ISO14443A幀和錯誤檢測(奇偶&CRC)。此外,它還支持快速CRYPTO1加密算法,用于驗(yàn)證Mifare系列產(chǎn)品。方便的并行接口可直接連接到任何8位微處理器,對讀卡器和終端的設(shè)計(jì)提供了極大的靈活性。
MF RC500的內(nèi)部EEPROM分為4部分,分別用于保存產(chǎn)品有關(guān)信息、存放寄存器初始化啟動文件以及存放加密運(yùn)算的密鑰等。8×64位的FIFO用于緩存微控制器與芯片之間的輸入/輸出數(shù)據(jù)流,可處理數(shù)據(jù)流長度達(dá)64字節(jié)。芯片的中斷請求有定時設(shè)置到、發(fā)送請求、接收請求、一個命令執(zhí)行完、FIFO滿、FIFO空等六種。MF RC500內(nèi)有定時器,其時鐘源于13.56MHz晶振信號,13.56MHz信號由晶振電路外接石英晶體產(chǎn)生。微處理器可借助于定時器完成有關(guān)定時任務(wù)的管理。定時器可用于定時輸出計(jì)數(shù)、看門狗計(jì)數(shù)、停止監(jiān)測、定時觸發(fā)等工作。
(3) 時鐘電路
MF RC500內(nèi)部集成了振蕩器緩沖,連接外部的13.56MHz的石英震蕩晶體,以獲取低相位抖動,如圖2所示。由于提供給MF RC500的時鐘要作為同步系統(tǒng)的編碼器和解碼器的時間基準(zhǔn),因此頻率的穩(wěn)定性是正確執(zhí)行的一個重要因素,為了獲得最佳性能,時鐘抖動應(yīng)該盡可能小。
(4) 匹配電路
匹配電路包括EMC低通濾波器、接收電路、天線匹配電路和天線。
EMC低通濾波電路:MIFARE系統(tǒng)在13.56MHz頻率下操作,石英晶振產(chǎn)生用于驅(qū)動MF RC500以及作為驅(qū)動天線的13.56MHz能量載波的基頻,這樣會產(chǎn)生比該頻率更高的諧波,因此對輸出信號必須進(jìn)行適當(dāng)?shù)臑V波,低通濾波器元件包括L0和C0,如圖3所示。
接收電路:MF RC500的內(nèi)部接收部分使用一個受益于副載波雙邊帶的概念裝入卡響應(yīng)的調(diào)整,因此可以使用內(nèi)部產(chǎn)生的VMID電勢作為RX腳的輸入電勢。為了提供一個穩(wěn)定的參考電壓,必須在VMID腳接一個對地電容,如圖4所示。
天線匹配電路:其中的元器件參數(shù)與天線的電氣特性和環(huán)境有關(guān)。電路如圖5所示。
天線:天線設(shè)計(jì)中,最重要的是計(jì)算出天線線圈的電感量,從而確定天線旁路電容和電阻值。一般采用經(jīng)驗(yàn)公式對線圈電感量進(jìn)行估算。假設(shè)天線設(shè)計(jì)為常用的環(huán)行或者矩形,則有:
式中, 為導(dǎo)體環(huán)一圈的長度; 為導(dǎo)線直徑或者PCB板上導(dǎo)體的寬度; 為天線形狀因素(環(huán)行天線 =1.07,矩形天線 =1.47); 為圈數(shù)。
(5) MF RC500與MCU的接口電路
MF RC500支持與不同的微處理器直接接口,包括獨(dú)立讀寫選通的MCU連接、公共讀寫選通的MCU連接以及具有公共讀寫選通和掛鉤功能的MCU連接。在每次上電或硬件復(fù)位后,MF RC500也復(fù)位其并行微處理器接口模式并自動檢測當(dāng)前微處理器接口的類型。
本系統(tǒng)選用具有公共讀寫選通和掛鉤功能的MCU連接方式,圖6為MF RC500與MCU的接口原理。由圖中可以看出,本系統(tǒng)采用中斷(INT1)工作模式,即MCU利用MFRC500提供中斷信息對其進(jìn)行控制。另外,根據(jù)系統(tǒng)的需要,可以采用查詢方式對MF RC500進(jìn)行操作。
4系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括對MF RC500進(jìn)行初始化、接收上位計(jì)算機(jī)的指令、控制MF RC500,并且把MF RC500的狀態(tài)信息反饋給計(jì)算機(jī)。程序流程如圖7所示。
(1) 初始化并行接口
首先讀Command 寄存器直到Command的6位值為00H,內(nèi)部初始化階段此時結(jié)束,MF RC500準(zhǔn)備接收控制;將80H 寫入Page寄存器以初始化微處理器接口;讀Command寄存器,如果該值為00H則微處理器接口初始化成功;在接口初始化之后通過將0X00 寫入頁寄存器,激活線性地址模式。這個過程可以用以下代碼表示:
do{PReset=1; Delay(10); PReset=0;} // 給復(fù)位脈沖
while (ReadRC(RegPage) != 0x80);
do{ WriteRC(RegPage,0x0);}
while(ReadRC(RegCommand) != 0x00);
if (ReadRC(RegCommand) != 0x00)
status = MI_INTERFACEERR;//接口初始化錯誤
else
status = 0; //接口初始化成功
(2) 對Mifare1卡的操作
MCU對Mifare1卡操作的命令主要有空操作、裝載密碼、驗(yàn)證密碼、讀卡、寫卡和關(guān)卡等。無論哪種操作都必須先把命令代碼寫入到Command寄存器,比如執(zhí)行驗(yàn)證密碼則需要執(zhí)行WriteRC(RegCommand,0x0c)命令。
從操作流程上,可以把Mifare1卡的操作分為以下幾項(xiàng):
復(fù)位請求:當(dāng)一張Mifare1卡處在讀寫器天線的工作范圍之內(nèi)時,讀寫器向卡發(fā)出REQUEST all(或REQUEST std)命令。卡的ATR將啟動,將卡Block 0中的卡類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行復(fù)位請求操作,讀寫器對卡的其它操作將不會進(jìn)行。
反碰撞操作:如果有多張Mifar1e卡處在讀寫器天線的工作范圍之內(nèi)時,讀寫器首先與每一張卡進(jìn)行通信,取得每一張卡的ID號。由于每一張Mifare1卡都具有唯一的ID號,因此讀寫器根據(jù)卡的ID號來保證一次只對一張卡操作。
卡選擇操作:完成了上述二個步驟之后,讀寫器必須對卡進(jìn)行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)。
認(rèn)證操作:經(jīng)過上述三個步驟,在確認(rèn)已經(jīng)選擇了一張卡片時,讀寫器必須對卡上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證。如果匹配,才允許進(jìn)一步的讀寫操作。
讀寫操作:對卡的讀、寫、增值、減值、存儲和傳送等操作。
5結(jié)論
本文的創(chuàng)新工作:基于PHILIPS公司生產(chǎn)的MF RC500芯片,提出了一種結(jié)合單片機(jī)AT89S52的通用射頻卡讀寫器的設(shè)計(jì)與實(shí)現(xiàn)方案。系統(tǒng)實(shí)現(xiàn)了對Mifare1卡讀寫操作的同時,具有以下優(yōu)點(diǎn):(1) 由于接口方式比較多,對IO口操作簡單,可以方便地對MF RC500進(jìn)行控制并獲取相應(yīng)信息;(2) 由于該系統(tǒng)在天線設(shè)計(jì)合理的情況下可靠性比較高,有效距離可達(dá)10cm;(3) 計(jì)算機(jī)只需通過一定的方式發(fā)送命令,即可對卡操作,在此基礎(chǔ)上可以根據(jù)不同的需要開發(fā)出相應(yīng)的軟件產(chǎn)品,具有很大的實(shí)用價值。
實(shí)際應(yīng)用表明該讀寫器架構(gòu)具有響應(yīng)速度快、使用簡單、讀卡距離遠(yuǎn)和通信穩(wěn)定可靠的顯著優(yōu)點(diǎn)。