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