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