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