Mifare1系列射頻卡讀卡器的開發(fā)
文章出處:http://srpd123.com 作者:劉志平 趙國良 人氣: 發(fā)表時間:2011年10月23日
近幾年來,由于非接觸式IC智能射頻卡的高度安全保密性,使之在IC智能卡領(lǐng)域中異軍突起,成為當(dāng)今IC智能卡中的流行寵物,應(yīng)用前景十分廣闊.非接觸式智能卡讀寫系統(tǒng)是射頻技術(shù)中的重要組成部分,其實現(xiàn)原理為:由讀寫器向Mifare1卡,也就是射頻卡發(fā)射特定頻率的無線電磁波,當(dāng)射頻卡靠近讀寫器時,受讀寫器發(fā)射的電磁波激勵,卡片內(nèi)的IC諧振電路產(chǎn)生共振并且接收電磁波能量.當(dāng)射頻卡接收到足夠的能量時,就將卡內(nèi)存儲的識別資料以及其他數(shù)據(jù)以無線電波的方式傳輸?shù)阶x寫器
并且接受讀寫器對卡內(nèi)數(shù)據(jù)的進(jìn)一步操作。文中提出了一種Mifare1射頻卡讀卡器系統(tǒng)的設(shè)計,此系統(tǒng)是針對煤礦考勤而研制,目前已投人使用.該系統(tǒng)采用AT89S52單片機(jī)實現(xiàn)對射頻芯片MF RC500的控制,完成對Mifare1卡卡號的讀取以及數(shù)據(jù)的無線交換.下面首先給出系統(tǒng)的總體結(jié)構(gòu)以及工作原理,然后從硬件和軟件設(shè)計2個方面對系統(tǒng)進(jìn)行詳細(xì)討論和說明.
1 系統(tǒng)總體結(jié)構(gòu)及工作原理
該讀卡器由AT89S52單片機(jī)、MF RC500芯片和外圍電路組成,與Mifare1卡的數(shù)據(jù)交換都是通過2者之間的射頻場來完成.系統(tǒng)結(jié)構(gòu)如圖1所示.
系統(tǒng)的工作原理主要是由AT89S52對MF RC500進(jìn)行控制與通信,MF RC500驅(qū)動外同電路對Mifare1卡進(jìn)行讀寫操作.具體說來,AT89S52通過串行口接收PC機(jī)的指令,完成對卡的操作和整個讀寫器的管理.MF RCS00負(fù)責(zé)信號的編碼、解碼,信號的調(diào)制、解調(diào);匹配電路建立讀寫器同射頻卡之間的聯(lián)系,此部分的設(shè)計直接影響到射頻功率的大小以及系統(tǒng)的抗干擾能力;Mifare1卡是系統(tǒng)的應(yīng)用終端.接收讀寫器的指令并返回指令執(zhí)行結(jié)果。
圖1 Mifarel系列射頻卡讀卡器系統(tǒng)總體框圖
2 系統(tǒng)硬件設(shè)計
硬件主要包括單片機(jī)、MF RC500、匹配電路及天線設(shè)計等外圍電路.下面給出各部分的詳細(xì)說明及相關(guān)設(shè)計.
2.1 單片機(jī)
系統(tǒng)中選用低成本、高性能的CMOS 8位單片機(jī)AT8 9 S5 2.片內(nèi)含8 k BytesISP的可反復(fù)擦寫1 000次的Flash只瀆程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS一51指令系統(tǒng)及80C51引腳結(jié)構(gòu).芯片內(nèi)集成
了通用8位中央處理器,同時片內(nèi)帶有防死鎖的Watchdog,以確保系統(tǒng)穩(wěn)定運(yùn)行.
2.2 MF RC500芯片
Philips公司的MF RC500芯片是應(yīng)用于13.56 MHZ非接觸式通信的高集成讀卡IC系列中的一員.該讀卡IC系列利用先進(jìn)的調(diào)制和解調(diào)概念,完全集成了在13.56 MHz下所有類型的被動非接觸式通信方式和協(xié)議.MF RC500支持ISO14443A所有的層,內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動近操作距離的天線(可達(dá)100 mm);接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于ISO14443兼容的應(yīng)答器信號;數(shù)字部分處理:ISO14443A幀和錯誤檢測(奇偶&CRC).此外,它還支持快速CRYPTO!加密算法,用于驗證Mifare1系列產(chǎn)品,方便的并行接口可直接連接到任何8位微處理器,給閱讀器的設(shè)計提供了極大的靈活性.MF RC500可方便地用于各種基于ISO/IEC 14443A標(biāo)準(zhǔn)并且要求低成本、小尺寸、高性能以及單電源的非接觸式通信的應(yīng)用場合。
MF RC500的內(nèi)部EEPROM分為4部分,分別用于保存產(chǎn)品有關(guān)信息、存放寄存器初始化啟動文件以及存放加密運(yùn)算的密鑰等.8×64位的FIFO用于緩存微控制器與芯片之問的輸人輸出數(shù)據(jù)流,可處理數(shù)據(jù)流長度達(dá)64 Byte.
2.3 匹配電路及天線設(shè)計
有2個不同的概念可以設(shè)計一個天線和一個匹配電路:一種是直接匹配的天線,讀卡器和天線的最小距離可以建立一個小型的完整終端;另一種是50 Ω匹配的天線,可以作為讀卡器和天線之間用長距離同軸電纜連接應(yīng)用的一個簡單解決方案,連接讀卡器匹配電路和天線的同軸電纜最長距離可達(dá)10 m.在本系統(tǒng)中,采用的是直接匹配的天線.
直接匹配的天線的理論工作距離可達(dá)100m,工作距離主要由天線的大小以及天線匹配電路的修正值決定,需要的部件有EMC濾波器、接收電路和天線本身的匹配等.圖2是本系統(tǒng)使用的直接匹配天線電路.
圖2 直接匹配天線電路配置
2.3.1 EMC電路
MIFARE系統(tǒng)的工作頻率是13.56 MHz,這個頻率要用一個石英振蕩器發(fā)生,但它同時也產(chǎn)生高次諧波.為了符合國際EMC規(guī)定13.56 MHz中的3次、5次和高次諧波要被良好地抑制,除了多層設(shè)計外,還需要加低通濾波器.低通濾波器由元件L0和C0成.一般選取L0為1 μH,C0為68 μF。
2.3.2 接收電路
MF RC500的內(nèi)部接收部分使用了一個新的接收概念,它使用卡響應(yīng)的副載波負(fù)載調(diào)制所產(chǎn)生的2個邊頻帶,建議使用內(nèi)部產(chǎn)生的VMID電勢作為RX管腳的輸人電勢.為了減少干擾,在VMID管腳連接一個電容到地.讀卡器的接收部分需要在RX 和VMID引腳之間連接一個分壓器.另外建議在天
3 系統(tǒng)軟件設(shè)計
由于本系統(tǒng)應(yīng)用在煤礦考勤中,所以軟件部分主要包括對礦工所持Mifare1卡卡號的讀取以及把當(dāng)天下井時長存入卡片中.讀取卡號在防碰撞操作中完成,時間存人在寫卡操作過程中完成.具體工作流程如圖3所示。
圖3 系統(tǒng)軟件流程
圖3實際上是對一張Mifare1卡的完整操作過程,主要包括復(fù)位請求、防碰撞、選卡、密碼驗證、寫卡等操作.其執(zhí)行順序必須依次進(jìn)行,不能顛倒.下面結(jié)合實際開發(fā)經(jīng)驗,詳細(xì)介紹對Mifare1卡的每一步操作.
3.1 復(fù)位請求
當(dāng)一張Mifarel卡處在讀寫器天線的1二作范圍之內(nèi)時,讀寫器向卡發(fā)出REQUEST all命令.卡的ATR將啟動,實現(xiàn)復(fù)位請求.請求成功,則將卡Block 0中的卡類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò).如果不進(jìn)行復(fù)位請求操作,讀寫器對卡的其他操作將不會進(jìn)行.具體操作程序為:
3.2 防碰撞
如果有多張Mifare1卡處在讀寫器天線的工作范圍之內(nèi)時,讀寫器首先與每一張卡進(jìn)行通信,取得每一張卡的ID號.由于每一張Mifarel卡都具有惟一的ID號,因此讀寫器根據(jù)卡的ID號來保證一次只對一張卡操作,操作成功后將返回卡的ID號.具體操作程序為:
3.3 選擇卡
完成上面2個步驟后,就可以對某張卡進(jìn)行選擇操作,這時其他卡將不響應(yīng)而進(jìn)入空閑狀態(tài).如果通信成功,被選擇的卡將返回其容量大?。唧w操作程序為:
3.4 密碼驗證
一張Mifare1只有通過密碼驗證后才能對其EEPROM中的數(shù)據(jù)進(jìn)行讀寫操作.為此,用戶必須事先將密碼編程到MF RC500的非易失性密匙存儲器中,RC500將與卡片各個扇區(qū)中的密碼A或密碼B驗證,成功后方能進(jìn)行下一步操作.所以用戶必須妥善保管卡片中的密碼,一旦丟失,將無法對卡片進(jìn)行任何操作,此卡報廢.具體操作程序為:
M500 HostCodeKey (KeyUncode,KeyCode);6字節(jié)密碼轉(zhuǎn)換成12字節(jié)
status= M500PiccAuthKey(PICC_AUTHENT1A,CardSnr,KeyCode,4)/block4密碼4驗證if(status! =0)//失敗
return ;
3.5 寫卡
經(jīng)過密碼證實后,就可以對卡中各扇區(qū)的數(shù)據(jù)進(jìn)行讀、寫、增值和減值等操作.下面舉例說明如何把礦工下井時長寫入到數(shù)據(jù)塊中.
char value[16];
PrepareValue(0,value);//將初始下井時長0 h格式化到value數(shù)組中
M500PiccWrite(4,value);//存value到Block4數(shù)據(jù)塊中
PrepareValue(TimeData,value);//將當(dāng)天下井時長
TiineData格式化到value數(shù)組中
M500PiccValue(PICC—INCREMENT,4,value,4);//Block4中數(shù)據(jù)每次做加TiineData操作
4 結(jié)束語
介紹了Mifare1系列射頻卡的讀卡器開發(fā),并結(jié)合到實際應(yīng)用中.經(jīng)實踐證明,本系統(tǒng)運(yùn)行穩(wěn)定,操作方便,能對有效范圍內(nèi)的多張卡準(zhǔn)確無誤地讀寫,讀寫距離可達(dá)7 cm,目前在煤礦考勤中發(fā)揮著重要作用.
作者簡介:劉志平(1983-- 男,碩士研究生,主要研究方向:計算機(jī)控制、應(yīng)用技術(shù)
原文下載地址:http://www.yktchina.com/BBS/disptopic.asp?boardid=4&topicid=3796&frompage=1