高性價(jià)比的MIFARE卡讀寫模塊的設(shè)計(jì)
文章出處:http://www.fang1.net 作者:微計(jì)算機(jī)信息 人氣: 發(fā)表時(shí)間:2011年09月18日
在IC卡讀寫機(jī)具領(lǐng)域中,可以降低成本的部分主要是讀寫機(jī)具的核心---讀寫模塊。接觸式IC卡由于卡座與卡上芯片接觸點(diǎn)易磨損,而且不耐臟、不防水、易腐蝕,等缺點(diǎn)正逐漸被非接觸式IC卡所替代。非接觸式IC卡是根據(jù)射頻電磁感應(yīng)原理產(chǎn)生的,它的讀寫操作只需將卡片放在讀寫器附近一定的距離之內(nèi)就能實(shí)現(xiàn)數(shù)據(jù)交換,無(wú)需任何接觸,使用中非常方便、快捷,不易損壞,因此,在公交、門禁、校園、企事業(yè)人事管理、娛樂(lè)場(chǎng)所等方面得到廣泛的應(yīng)用[2]。非接觸IC卡又有高頻與低頻之分,由于低頻信號(hào)很容易受外部信號(hào)干擾,經(jīng)常會(huì)讀錯(cuò)卡號(hào)或?qū)⒖▽懗闪?。高頻卡則不易受外界干擾,讀寫穩(wěn)定性要遠(yuǎn)遠(yuǎn)高于低頻卡,但高頻讀寫模塊的價(jià)格也高于低頻卡。PHILIPS公司的Mifare卡是國(guó)內(nèi)使用較為廣泛的一種高頻卡,但PHILIPS進(jìn)口原裝的Mifare卡讀寫模塊價(jià)格昂貴,使得讀寫機(jī)具造價(jià)具高不下。筆者使用MF RC500芯片如自行開發(fā)的Mifare卡讀寫模塊其性能與進(jìn)口模塊相當(dāng),成本卻遠(yuǎn)遠(yuǎn)低于進(jìn)口模塊。
一、基于MF RC500開發(fā)的高性價(jià)比的Mifare卡讀寫模塊
MF RC500主要應(yīng)用于13.56MHz非接觸式IC卡的讀寫。該芯片利用了先進(jìn)的調(diào)制和解調(diào)概念,完全集成了在13.56MHz下所有類型的被動(dòng)非接觸式通信方式和協(xié)議。MF RC500支持ISO14443A(13.56MHz 電子標(biāo)簽標(biāo)準(zhǔn))所有的層。內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動(dòng)操作近距離的天線(可達(dá)10cm)。接收器部分提供一個(gè)可靠而有效的解調(diào)和解碼電路,用于ISO14443A兼容的應(yīng)答器信號(hào)。 數(shù)字部分處理ISO14443A幀和錯(cuò)誤檢測(cè)。此外,它還支持快速CRYPTO1加密算法用于驗(yàn)證MIFARE系列產(chǎn)品。方便的并行接口可直接連接到任何8位微處理器,這樣給讀卡器/終端的設(shè)計(jì)提供了極大的靈活性。圖2給出了MFRC500的外圍電路的原理圖。
二、MF RC500各引腳功能簡(jiǎn)介
1、振蕩器
名 稱 |
類 型 |
功 能 |
OSCIN |
輸入 |
晶振輸入端 |
OSCOUT |
輸出 |
晶振輸出端 |
MFRC500的1腳OSCIN和2腳OSCOUT分別為晶振輸入端和晶振輸出端。13.56MHz晶振通過(guò)快速片內(nèi)緩沖區(qū)連接到OSCIN和OSCOUT。如果器件采用外部時(shí)鐘,可從OSCIN輸入。
2、天線
非接觸式天線使用以下4個(gè)管腳:
名 稱 |
類 型 |
功 能 |
TX1, TX2 |
輸出緩沖 |
天線驅(qū)動(dòng)器 |
VMID |
模擬 |
參考電壓 |
RX |
輸入模擬 |
天線輸入信號(hào) |
為了驅(qū)動(dòng)天線,MF RC500通過(guò)TX1和TX2提供13.56MHz的能量載波。根據(jù)寄存器的設(shè)定對(duì)發(fā)送數(shù)據(jù)進(jìn)行調(diào)制得到發(fā)送的信號(hào)。該卡采用RF場(chǎng)的負(fù)載調(diào)制進(jìn)行響應(yīng)。天線拾取的信號(hào)經(jīng)過(guò)天線匹配電路送到RX腳。MF RC500內(nèi)部接收器對(duì)信號(hào)進(jìn)行檢測(cè)和解調(diào)并根據(jù)寄存器的設(shè)定進(jìn)行處理。然后數(shù)據(jù)發(fā)送到并行接口由微控制器進(jìn)行讀取。天線部分電路圖如(圖3)。
3、電源
器件MF RC500對(duì)各部分使用單獨(dú)電源供電,以實(shí)現(xiàn)在EMC特性和信號(hào)解耦方面達(dá)到最佳性能。MF RC500具有出色的RF性能并且模擬和數(shù)字部分可適應(yīng)不同的操作電壓。
名 稱 |
類 型 |
功 能 |
TVDD |
電源 |
發(fā)送器電源電壓 |
VSS |
電源 |
發(fā)送器電源地 |
AVDD |
電源 |
模擬部分電源電壓 |
AGND |
電源 |
模擬部分電源地 |
DVDD |
電源 |
數(shù)字部分電源電壓 |
DVSS |
電源 |
數(shù)字部分電源地 |
4、輔助管腳 MF RC500的第27腳AUX為輔助管腳可選擇內(nèi)部信號(hào)驅(qū)動(dòng)該管腳。它可作為設(shè)計(jì)和測(cè)試之用。
5、復(fù)位管腳 RSTPD為復(fù)位管腳,該管腳禁止了內(nèi)部電流源和時(shí)鐘并使MF RC500從微控制器總線接口脫開。如果RST釋放,MF RC500則執(zhí)行上電時(shí)序。
6、串行信號(hào)開關(guān)串行信號(hào)
開關(guān)用于橋接芯片數(shù)字電路和模擬電路兩部分,兩部分電路的輸入/ 輸出和外部應(yīng)用所需的輸入/ 輸出可以靈活組合。這種組合可借助MFIN和MFOUT引腳和MF RC500內(nèi)部相關(guān)寄存器來(lái)控制實(shí)現(xiàn).。
名 稱 |
類 型 |
功 能 |
MFIN |
帶施密特觸發(fā)器的輸入 |
MIFARE接口輸入 |
MFOUT |
輸出 |
MIFARE接口輸出 |
7、并行接口
下面列出的16個(gè)管腳用于控制并行接口:
名 稱 |
類 型 |
功 能 |
D0 … D7 |
帶施密特觸發(fā)器的I/O |
雙向數(shù)據(jù)總線 |
A0 … A2 |
帶施密特觸發(fā)器的I/O |
地址線 |
NWR/RNW |
帶施密特觸發(fā)器的I/O |
寫禁止/只讀 |
NRD/NDS |
帶施密特觸發(fā)器的I/O |
讀禁止/數(shù)據(jù)選通禁止 |
NCS |
帶施密特觸發(fā)器的I/O |
片選禁止 |
ALE |
帶施密特觸發(fā)器的I/O |
地址鎖存使能 |
IRQ |
輸出 |
中斷請(qǐng)求 |
三、MF RC500與89C51的接口電路如(圖4):
MF RC500支持不同的微控制器接口。一個(gè)智能的自動(dòng)檢測(cè)邏輯可以自動(dòng)適應(yīng)系統(tǒng)總線的并行接口。使用信號(hào)NCS選擇芯片。要使用獨(dú)立的地址和數(shù)據(jù)總線與微控制器相連,必須將ALE腳連接到DVDD。若使用復(fù)用的地址和數(shù)據(jù)總線與微控制器接口,必須將ALE腳連接到微控制器的ALE信號(hào)。 若要使用RNW和NDS(取代NWR和NRD)與微控制器相連,微控制器的RNW必須連接到管腳NWR,而NDS必須連接到NRD。由圖4可以看出,本系統(tǒng)采用中斷(INT1)工作模式,即MCU 利用MF RC500提供中斷信息對(duì)其進(jìn)行控制。另外,根據(jù)系統(tǒng)的需要,可以采用查詢方式對(duì)MF RC500 進(jìn)行操作。對(duì)Mifare卡操作流程由以下幾個(gè)部分組成:
1、復(fù)位請(qǐng)求
扇區(qū)號(hào) |
塊號(hào) |
內(nèi)容 |
塊地址 |
扇區(qū)0 |
0塊 |
廠商代碼 |
0 |
|
1塊 |
數(shù)據(jù)(16字節(jié)) |
1 |
|
2塊 |
數(shù)據(jù)(16字節(jié)) |
2 |
|
3塊 |
密碼區(qū) |
3 |
扇區(qū)1 |
0塊 |
數(shù)據(jù)(16字節(jié)) |
4 |
|
1塊 |
數(shù)據(jù)(16字節(jié)) |
5 |
|
2塊 |
數(shù)據(jù)(16字節(jié)) |
6 |
|
3塊 |
密碼區(qū) |
7 |
. |
|
: : : |
|
扇區(qū)15 |
0塊 |
數(shù)據(jù)(16字節(jié)) |
60 |
|
1塊 |
數(shù)據(jù)(16字節(jié)) |
61 |
|
2塊 |
數(shù)據(jù)(16字節(jié)) |
62 |
|
3塊 |
密碼區(qū) |
63 |
當(dāng)一張Mifare卡片處在卡處讀寫器的天線的工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡片發(fā)出復(fù)位命令??ㄆ邮盏胶?,將0區(qū)0塊中的廠商代碼(作為不同卡型的區(qū)分)送給讀寫端Mifare卡(以M1卡為例)內(nèi)存儲(chǔ)結(jié)構(gòu)如下表[5]。建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。
2.反碰撞操作如果有多張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時(shí),模塊將首先與每一張卡片進(jìn)行通信,取得每一張卡片的系列號(hào)。由于每一張Mifare卡片都具有其唯一的序列號(hào),決不會(huì)相同,因此根據(jù)卡片的序列號(hào)來(lái)保證一次只對(duì)一張卡操作。
3、卡選擇操作完成了上述二個(gè)步驟之后,讀寫模塊必須對(duì)卡片進(jìn)行選擇操作。既與被選中的卡進(jìn)行一次數(shù)據(jù)交換,當(dāng)某卡被選中后該卡則將其數(shù)據(jù)容量傳送給讀寫端。
4、認(rèn)證操作經(jīng)過(guò)上述三個(gè)步驟,在確認(rèn)已經(jīng)選擇了一張卡片時(shí),由程序控制模塊在對(duì)卡進(jìn)行讀寫操作之前,必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,Mifare 類產(chǎn)品中加密算法的實(shí)現(xiàn)被稱之為CRYPT01 , 它是一種密鑰長(zhǎng)度為48bit 的流密碼。要訪問(wèn)一個(gè)Mifare 類卡的數(shù)據(jù), 首先要完成認(rèn)證。如果匹配,才允許進(jìn)一步的讀寫操作。
5、讀寫操作對(duì)卡的最后操作是讀、寫、增值、減值、存儲(chǔ)和傳送等操作。