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