MFRC522射頻模塊在門禁系統(tǒng)中的應(yīng)用
摘要:介紹了MFRC522射頻模塊的開發(fā)及在門禁監(jiān)控系統(tǒng)中的應(yīng)用。該射頻模塊提供UART和PC兩種用戶接口,同時(shí)模塊具有天線識(shí)別距離大、操作接口易用等特點(diǎn),極大地方便了客戶在二次開發(fā)中的使用。目前,該模塊已成功應(yīng)用于某些高端小區(qū)和星級(jí)酒店的門禁監(jiān)控系統(tǒng)中,具有較高的推廣價(jià)值。
關(guān)鍵詞:MFRC522;天線電路設(shè)計(jì);射頻模塊
引言
隨著射頻技術(shù)的發(fā)展,基于ISO14443A協(xié)議的近場(chǎng)距離識(shí)別技術(shù)越來越多的應(yīng)用于民用產(chǎn)品中,最常見的如公共交通、身份識(shí)別、門禁監(jiān)控等眾多領(lǐng)域。為使應(yīng)用系統(tǒng)的開發(fā)人員快速開發(fā)射頻識(shí)別產(chǎn)品,本文設(shè)計(jì)了一種實(shí)用型射頻讀寫模塊,該模塊具有天線識(shí)別距離大、用戶接口靈活和操作簡(jiǎn)單等特點(diǎn)。該模塊采用MFRCA22作為射頻讀寫芯片,該芯片支持ISO14443A的多層協(xié)議;在內(nèi)部嵌入天線,同時(shí)支持使用外部天線的功能。分別從硬件和軟件兩方面對(duì)系統(tǒng)設(shè)計(jì)進(jìn)行詳細(xì)的介紹:硬件方面給出系統(tǒng)總體框圖,并對(duì)主要芯片和天線設(shè)計(jì)進(jìn)行介紹;軟件方面則重點(diǎn)介紹ISO14443A協(xié)議和接口編程,最后結(jié)合應(yīng)用實(shí)例,展示了模塊通用和易用等特點(diǎn)。
1 硬件電路設(shè)計(jì)
本文設(shè)計(jì)的射頻模塊為基于MFRC522射頻讀寫芯片,適用于支持ISO14443A協(xié)議的所有非接觸式卡。硬件系統(tǒng)由射頻讀寫芯片MFRC522、單片機(jī)LPC931、電源模塊和天線電路組成,系統(tǒng)硬件框圖如圖1所示。
單片機(jī)LPC931作為模塊的主控器,接收從UART和I2C總線接口發(fā)送過來的系統(tǒng)命令,驅(qū)動(dòng)射頻讀寫芯片MFRC522支持ISO14443A型卡的所有操作。用戶使用UART接口時(shí),系統(tǒng)能自動(dòng)監(jiān)測(cè)UART接口發(fā)送數(shù)據(jù)的波特率,從而調(diào)整內(nèi)部,配置適應(yīng)相應(yīng)的數(shù)據(jù)通信速率。用戶在使用I2C總線接口與模塊進(jìn)行通信時(shí),I2C總線接口通信速率為100 Kbps。射頻讀寫芯片MRFCA22的集成度高且接口靈活,在使用時(shí),只需要按照芯片資料進(jìn)行簡(jiǎn)單設(shè)計(jì)就可以實(shí)現(xiàn)芯片功能,同時(shí)天線設(shè)計(jì)方面也提供了詳細(xì)的說明。下面就從這兩個(gè)方面進(jìn)行闡述。
1. 1 射頻讀寫芯片MFRC522
射頻讀寫芯片MFRC522是NXP半導(dǎo)體公司生產(chǎn)的一款應(yīng)用于13.56 MHz的非接觸式射頻讀寫芯片,具有集成度高、功耗低和封裝小等特點(diǎn)。該讀寫芯片采用先進(jìn)的調(diào)制和解調(diào)技術(shù),完全集成了在13.56 MHz下所有類型的被動(dòng)非接觸式通信方式,支持ISO1443A的多層應(yīng)用協(xié)議。芯片內(nèi)部發(fā)送器可驅(qū)動(dòng)讀寫器天線與ISO14443A型卡和應(yīng)答機(jī)的通信,接收器提供有效的解調(diào)和解碼電路,用于處理ISO14443A兼容的應(yīng)答器信號(hào)。在數(shù)字信號(hào)處理部分,支持ISO14443A型卡的幀數(shù)據(jù)校驗(yàn)和快速CRYPTO1加密算法,具有很強(qiáng)的加密性。
MFRC522在系統(tǒng)的應(yīng)用過程如下:MFRC522與單片機(jī)LPC931之間采用SPI接口進(jìn)行數(shù)據(jù)交換,通過單片機(jī)發(fā)送過來的控制命令實(shí)現(xiàn)ISO1444 3A協(xié)議的所有操作。首先,LPC931對(duì)MFRC522進(jìn)行復(fù)位,開啟天線,設(shè)置初始化寄存器值;隨后,MRFC522開始進(jìn)入命令接收狀態(tài),LPC931開始按照ISO14443A協(xié)議的流程發(fā)送尋卡、防沖撞、選卡、密鑰校驗(yàn)和讀寫卡操作的命令,完成對(duì)射頻卡的數(shù)據(jù)讀寫操作。MFRC522在系統(tǒng)中的應(yīng)用電路連接如圖2所示。
1.2 射頻天線及匹配電路設(shè)計(jì)
在電感耦合式射頻識(shí)別系統(tǒng)中,標(biāo)簽的微芯片工作所需要的全部能量都由標(biāo)簽天線線圈耦合閱讀器和天線線圈產(chǎn)生的磁通量形成的感應(yīng)電壓提供。所以,在射頻產(chǎn)品中,天線設(shè)計(jì)的成功與否直接決定產(chǎn)品性能。
在本設(shè)計(jì)中,采用直接匹配的天線設(shè)計(jì)方式,天線電路分為3個(gè)部分;發(fā)射電路、接收電路和天線及匹配電路,電路連接如圖3所示。由C1、R1、C2和R2組成的接收電路與由L1、L2、C3和CA組成的發(fā)射濾波電路中的元件參數(shù)是固定的,而對(duì)于天線匹配電路中的C6、C7、Ra和C8、C9、Rb值由設(shè)計(jì)的天線來決定,為獲得天線的良好性能,相關(guān)參數(shù)值的選取還須經(jīng)過天線的調(diào)諧過程。
在進(jìn)行天線調(diào)諧過程中,不是匹配電路使天線輻射的能量越大,天線性能越好。此時(shí),識(shí)別卡的區(qū)域可能是斷層的,而應(yīng)該注重天線性能與射頻卡的接收能力相匹配,這樣識(shí)別卡的距離才能達(dá)到最佳。
在天線附近區(qū)域存在金屬材料的應(yīng)用環(huán)境中,可以在金屬材料表層加涂鐵氧體磁性材料,增加天線信號(hào)的接收性能,避免天線信號(hào)被金屬材料吸收。
2 軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要完成接收用戶命令及射頻卡與模塊之間的數(shù)據(jù)交互。在所有的ISO14443A型卡中,以飛利浦公司設(shè)計(jì)的Mifare1系列S50卡最常用。下面將詳細(xì)介紹標(biāo)準(zhǔn)Mifare1卡內(nèi)部存儲(chǔ)結(jié)構(gòu)及S50卡基本功能的實(shí)現(xiàn)方法,隨后對(duì)如何使用接口函數(shù)進(jìn)行詳細(xì)說明。
2.1 Mifare1卡內(nèi)部存儲(chǔ)結(jié)構(gòu)
Mifare1 S50卡內(nèi)部有8K容量的E2PROM,分為16個(gè)扇區(qū),每個(gè)扇區(qū)內(nèi)有4個(gè)數(shù)據(jù)塊,每塊有16字節(jié)數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)如圖4所示。
第0扇區(qū)的塊0內(nèi)已固化存儲(chǔ)廠商代碼,其中包含唯一識(shí)別的卡號(hào),其他扇區(qū)的塊0、1和2為數(shù)據(jù)塊,用于存儲(chǔ)用戶數(shù)據(jù)。由于數(shù)據(jù)存儲(chǔ)格式的不同,數(shù)據(jù)塊可以分為2種:普通數(shù)據(jù)塊和數(shù)值塊,普通數(shù)據(jù)塊存儲(chǔ)任意16字節(jié)數(shù)據(jù),而數(shù)值塊內(nèi)數(shù)據(jù)存儲(chǔ)格式如下所示。
其中,有效數(shù)據(jù)為帶符號(hào)位的4字節(jié)數(shù)據(jù),塊號(hào)為1字節(jié),只有在這種存儲(chǔ)格式下才能執(zhí)行卡的增值或減值操作。
此外,每個(gè)扇區(qū)的數(shù)據(jù)塊3為該扇區(qū)密鑰控制塊,內(nèi)部包含密鑰A(6字節(jié))、存取控制(4字節(jié))和密鑰B(6字節(jié))。每個(gè)扇區(qū)的密鑰和存取控制條件都是獨(dú)立設(shè)置的,可以根據(jù)需要設(shè)定各自的密鑰及存取控制。在存取控制中,每塊都有3個(gè)控制位相對(duì)應(yīng),用以決定某數(shù)據(jù)塊或控制塊的讀寫條件。默認(rèn)存取控制為FF 07 80 69,表示該扇區(qū)驗(yàn)證密鑰A時(shí)可以讀寫數(shù)據(jù)塊和密鑰塊。一般常用操作時(shí),會(huì)在發(fā)卡時(shí)修改密鑰控制塊的密鑰和控制存取,但需注意修改時(shí),避免產(chǎn)生死鎖情況。
2.2 Mifare1卡基本功能實(shí)現(xiàn)
對(duì)一張Mifare1卡來說,基本功能無(wú)非就是實(shí)現(xiàn)讀取和寫入卡內(nèi)數(shù)據(jù),而在對(duì)Mifare1卡進(jìn)行讀寫操作之前,必須經(jīng)過尋卡、防沖撞、選卡和密鑰驗(yàn)證等環(huán)節(jié)。
尋卡主要實(shí)現(xiàn)在天線識(shí)別范圍內(nèi)搜尋是否存在Mifarel卡。尋卡成功后,進(jìn)入防沖撞操作的過程,主要功能是在若干個(gè)Mifarel卡中按照一定算法獲取其中1張卡的序列號(hào)。隨后選擇該序列號(hào)的卡,進(jìn)行密鑰驗(yàn)證。
密鑰驗(yàn)證以扇區(qū)為單位,其結(jié)果在于開啟通信加密單元,成功后的數(shù)據(jù)傳輸都將加密。只有通過某扇區(qū)密鑰驗(yàn)證后,才可以對(duì)該扇區(qū)的塊內(nèi)數(shù)據(jù)進(jìn)行讀或?qū)?。若要?duì)Mifarel卡進(jìn)行增值或減值操作,則需要把該塊的數(shù)據(jù)初始化轉(zhuǎn)換為數(shù)值塊數(shù)據(jù)格式,隨后就可直接進(jìn)行增值或減值操作。
卡操作完畢后,可以使卡進(jìn)入Halt狀態(tài),此時(shí)只有使用Request All指令才能喚醒該卡。Mifarel卡基本功能的具體實(shí)現(xiàn)流程如圖5所示。
2.3 接口函數(shù)
為方便用戶使用該模塊,系統(tǒng)提供了多種類型接口,即可并不需要直接去了解ISO14443A協(xié)議中的細(xì)節(jié),或通過簡(jiǎn)單的接口調(diào)用方式對(duì)ISO14443A型卡進(jìn)行所有操作。模塊提供UART和I2C兩種用戶接口,兩種接口的上層軟件接口函數(shù)均有統(tǒng)一方式,用戶在使用時(shí),只需要對(duì)底層接口進(jìn)行修改,就可以操作ISO14443A塑卡的所有操作。UART和I2C總線兩種用戶接口使用同一種數(shù)據(jù)幀傳輸格式,一幀的數(shù)據(jù)格式如下所示。
接口函數(shù)中提供操作MFRCA22的基本命令,如配置讀卡芯片、讀寫寄存器和裝載密鑰,也提供ISO14443A協(xié)議的基本操作,如常規(guī)操作中的尋卡、防碰撞、選卡和讀寫卡操作。同時(shí),提供集成接口函數(shù),通過調(diào)用集成接口函數(shù)就可以實(shí)現(xiàn)對(duì)卡識(shí)別,還可對(duì)某塊數(shù)據(jù)進(jìn)行讀操作,如調(diào)用PiccAutoDetect接口函數(shù)就能實(shí)現(xiàn)上述操作。同時(shí)可以選擇數(shù)據(jù)主動(dòng)輸出還是以提供中斷信號(hào)提示方式輸出數(shù)據(jù),下面對(duì)自動(dòng)識(shí)別卡操作接口函數(shù)進(jìn)行簡(jiǎn)單介紹。
自動(dòng)識(shí)別卡操作接口函數(shù)如下:
int PiccAutoDecect(char ADMode,char TxMode,char Req,char Auth,char KeyAB,char*Key,int Block)
在參數(shù)ADMode中,定義了最后執(zhí)行Halt操作、繼續(xù)檢測(cè)卡、中斷輸出和主動(dòng)發(fā)送數(shù)據(jù)等模式選擇。參數(shù)TxMode中定義了天線驅(qū)動(dòng)類型,參數(shù)Req中定義尋卡模式,參數(shù)Auth中定義校驗(yàn)密鑰A或校驗(yàn)密鑰B,參數(shù)Key為密鑰數(shù)據(jù),而參數(shù)Block定義操作的塊號(hào)。讀卡成功后,若在UART接口下參數(shù)ADMode中有設(shè)置主動(dòng)發(fā)送數(shù)據(jù),則可以調(diào)用下面接口接收數(shù)據(jù):
int PiccADRcv(char*Tx,char* Tag,char*Sak,char*Snr,char*Dat)
其中參數(shù)*Tx為天線參數(shù),*Tag為尋卡請(qǐng)求應(yīng)答,*Sak為選卡應(yīng)答,*Snr為選卡卡號(hào),*Dat為塊內(nèi)數(shù)據(jù)。
若沒有設(shè)置主動(dòng)發(fā)送數(shù)據(jù),則可以通過調(diào)用ReadAutoDetect接口函數(shù)獲取自動(dòng)識(shí)別卡操作的數(shù)據(jù),返回?cái)?shù)據(jù)的格式跟上面描述相同。
3 產(chǎn)品應(yīng)用實(shí)例
在為某用戶進(jìn)行電梯監(jiān)控系統(tǒng)設(shè)計(jì)中,使用了門禁系統(tǒng),采用本文設(shè)計(jì)的模塊作為射頻讀寫模塊。模塊在兩處使用,一處位于電梯轎廂內(nèi)部的電梯內(nèi)呼控制系統(tǒng)中,作為電梯乘坐人員啟動(dòng)電梯到達(dá)固定樓層的工具;另一處位于系統(tǒng)監(jiān)控中心的發(fā)卡系統(tǒng)內(nèi),為電梯乘坐人員進(jìn)行發(fā)卡、充值和銷卡。
在電梯內(nèi)呼控制系統(tǒng)中,控制系統(tǒng)與射頻模塊采用UART接口方式進(jìn)行通信,讀取用戶卡中的信息并傳遞到監(jiān)控中心。對(duì)有效用戶將開啟對(duì)應(yīng)樓層,如有消費(fèi)需求,則可以進(jìn)行讀寫卡操作。在電梯內(nèi)呼控制系統(tǒng)中,采用NXP公司設(shè)計(jì)的LPC2364 MCU作為主控制器,嵌入本文設(shè)計(jì)的射囊模塊,實(shí)現(xiàn)智能呼叫電梯和人員管理,電梯內(nèi)呼控制系統(tǒng)中的硬件框圖如圖6所示。
由于對(duì)無(wú)源射頻卡操作時(shí),卡與讀卡器之間的數(shù)據(jù)交換時(shí)的能量由天線提供,當(dāng)卡位于天線信號(hào)較弱區(qū)域時(shí),天線輻射的能量不足以支持?jǐn)?shù)據(jù)交換,則導(dǎo)致數(shù)據(jù)交換失敗。所以,在天線識(shí)別的臨界區(qū)域時(shí),如果快速移動(dòng)射頻卡,可能會(huì)出現(xiàn)數(shù)據(jù)交換失敗情況,但此時(shí)卡內(nèi)的數(shù)據(jù)可能已經(jīng)改變,而返回到讀卡器中的操作狀態(tài)是不成功的。特別是在使用射頻卡作為消費(fèi)卡使用的情況時(shí),容易出現(xiàn)無(wú)刷卡和錯(cuò)誤刷卡的情況。此時(shí),需要對(duì)數(shù)據(jù)卡操作進(jìn)行軟件上的優(yōu)化,一方面在后臺(tái)做好數(shù)據(jù)備份的工作,二是在卡內(nèi)劃分出一個(gè)數(shù)據(jù)塊用于存儲(chǔ)備份數(shù)據(jù)。
結(jié)語(yǔ)
基于射頻芯片MFRC522和單片機(jī)LPC931,設(shè)計(jì)了一種遵循ISO14443A協(xié)議的射頻模塊,從硬件設(shè)計(jì)和軟件開發(fā)兩方面對(duì)開發(fā)過程進(jìn)行詳細(xì)說明。實(shí)驗(yàn)結(jié)果表明該模塊具有設(shè)計(jì)靈活和使用方便等特點(diǎn),具有良好的推廣價(jià)值。