Mifare系列射頻卡讀寫器的研制
1 引言
IC卡按卡與外界數(shù)據(jù)傳送的形式不同,分為接觸式IC卡和非接觸式 IC卡。接觸式IC卡通過8個觸點從讀寫器獲取能量和交換數(shù)據(jù);非接觸式IC卡通過射頻感應(yīng)從讀寫器獲取能量和交換數(shù)據(jù),所以非接觸式IC卡又叫射頻卡。現(xiàn)在常見的是接觸式IC卡,這類卡的讀寫操作速度較慢,操作也不方便,每次讀寫時必須把卡正確地插入到讀寫器的口槽才能完成數(shù)據(jù)交換。這樣,在公交、考勤等需要頻繁讀寫卡的場合就很不方便,而且IC卡的觸點暴露在外,容易損壞和搞臟而造成接觸不良。非接觸式IC卡是根據(jù)電磁感應(yīng)原理產(chǎn)生的。它的讀寫操作只需將卡片放在讀寫器附近一定的距離之內(nèi)就能實現(xiàn)數(shù)據(jù)交換,無需任何接觸,使用非常方便、快捷,不易損壞。因此,在公交、門禁、校園、企事業(yè)人事管理等方面有廣泛的應(yīng)用前景。目前我國引進的射頻IC卡主要有PHILIPS公司的Mifare卡和ATMEL公司的Temic卡[1]。而PHILIPS公司的 Mifare卡現(xiàn)在是市場的主流產(chǎn)品,應(yīng)用越來越廣。其典型型號為Mifare1 S50,它有1K字節(jié)E2PROM用于存放數(shù)據(jù),分成16個區(qū),每個區(qū)都有自己獨立的密碼,完善的安全機制使之具有一卡多用的特性[2]。
Mifare 卡是一種智能卡(smart card),內(nèi)建有中央微處理機(MCU)和ASIC等,使卡在安全保密性、認(rèn)證邏輯、算術(shù)運算等微操作控制有序進行。 Mifare卡讀寫器的設(shè)計一般用PHILIPS公司生產(chǎn)的讀寫模塊MCM200或MCM500。隨著技術(shù)的進步,PHILIPS公司現(xiàn)在生產(chǎn)了功能及性能更好的讀卡芯片,我們就是以這種芯片為基礎(chǔ)來設(shè)計和開發(fā)Mifare射頻卡讀寫器。
2 工作原理
射頻IC卡讀寫器以射頻識別技術(shù)為核心,讀寫器內(nèi)主要使用了1 片Mifare卡專用的讀寫處理芯片(MF RC500)。它是一個小型的最大操作距離達100mm的Mifare讀/寫設(shè)備的核心器件,其功能包括調(diào)制、解調(diào)、產(chǎn)生射頻信號、安全管理和防碰撞機制。內(nèi)部結(jié)構(gòu)分為射頻區(qū)和接口區(qū):射頻區(qū)內(nèi)含調(diào)制解調(diào)器和電源供電電路,直接與天線連接;接口區(qū)有與單片機相連的端口,還具有與射頻區(qū)相連的收/發(fā)器、 64字節(jié)的數(shù)據(jù)緩沖器、存放3套寄存器初始化文件的E2PROM、存放16套密鑰的只寫存儲器以及進行三次證實和數(shù)據(jù)加密的密碼機、防碰撞處理的防碰撞模塊和控制單元。這是與射頻卡實現(xiàn)無線通信的核心模塊,也是讀寫器讀寫Mifare卡的關(guān)鍵接口芯片。
讀寫器工作時,與Mifare卡專用的讀卡芯片(MF RC500)相連的天線線圈[3]不斷地向外發(fā)出一組固定頻率的電磁波(13.56MHz),當(dāng)有卡靠近時,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與讀寫器的發(fā)射頻率相同,這樣在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容充電有了電荷。在這個電容另一端,接有一個單向?qū)щ姷碾娮颖?,將電容?nèi)的電荷送到另一個電容內(nèi)存儲。當(dāng)電容器充電達到2V時,此電容就作為電源為卡片上的其他電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接收讀寫器發(fā)來的數(shù)據(jù)與保存。
3 系統(tǒng)組成
非接觸式IC卡應(yīng)用系統(tǒng)由Mifare卡、發(fā)卡器、讀卡器和 PC管理機組成,如圖1所示。其中Mifare卡存放身份號(PIN)等相關(guān)數(shù)據(jù),由發(fā)卡器將密碼和數(shù)據(jù)一次性寫入完成。發(fā)卡器實際上是一種通用寫卡器,直接與PC機的RS-232串行口相連或經(jīng)過RS-485網(wǎng)絡(luò)間接與PC機相連,由系統(tǒng)管理員管理,通過PC機設(shè)置或選擇好要寫入的數(shù)據(jù),發(fā)出寫卡命令完成對Mifare卡的數(shù)據(jù)及密碼的寫入。與讀卡器不同,發(fā)卡器往往處于被動地位,不主動讀寫進入射頻能量范圍內(nèi)的射頻卡,必須接收PC機的命令才操作,即必須聯(lián)機才能工作;而讀卡器往往可以脫離PC管理機工作。讀卡器是主動操作的,只要有非接觸式IC卡進入讀卡器天線射頻能量范圍,讀卡器便可讀寫卡中相關(guān)指定扇區(qū)的數(shù)據(jù)。
圖1 典型射頻卡應(yīng)用系統(tǒng)組成框圖
發(fā)卡器與讀卡器在硬件設(shè)計上大同小異,都是由單片機控制專用讀寫芯片(MF RC500),再加上一些必要的外圍器件組成。圖2為讀卡器硬件系統(tǒng)組成。讀卡器用P89C58BP單片機作主控制器;MF RC500射頻芯片作為單片機與射頻卡通訊的中介;74HC595作顯示驅(qū)動器驅(qū)動LED數(shù)碼顯示器,PS/2總線作為通用編碼鍵盤接口,鍵盤與LED顯示器作為人機交互接口;AT24C256串行E2PROM作數(shù)據(jù)存儲器;DS1302串行時鐘芯片作硬件實時時鐘;MAX232或MAX485作串口信號轉(zhuǎn)換;DS1232作看門狗定時器;Q9012三極管作提示報警信號驅(qū)動,有卡進入并讀卡成功指示燈閃一下,喇叭叫一聲。Mifare射頻卡進入距離射頻天線100mm內(nèi),讀卡器就可以讀到卡中的數(shù)據(jù)。讀卡器讀到Mifare射頻卡中的數(shù)據(jù)后,系統(tǒng)單片機要將所讀數(shù)據(jù)及刷卡的時間一起存入存儲器 AT24C256,并在LED顯示器上顯示卡數(shù)據(jù)。沒有卡進入讀卡器工作范圍時,系統(tǒng)讀出實時時鐘芯片中的時間,在顯示器上顯示當(dāng)前時間。讀卡出錯,顯示出錯標(biāo)志。主控器P89C58BP內(nèi)部有32KB的Flash存儲器,256字節(jié)RAM,可方便反復(fù)擦寫、修改程序,同時,由于外部不用擴展程序存儲器,可以簡化電路設(shè)計,減小讀卡器的尺寸,同時有較多的I/O口提供給系統(tǒng)使用。
圖2 讀卡器硬件系統(tǒng)組成
4 硬件設(shè)計
4.1 射頻芯片
MF RC500是Philips公司為Mifare卡設(shè)計的專用讀卡芯片,它與非接觸式IC卡之間通訊標(biāo)準(zhǔn)兼容ISO14443A,其功能框圖如圖3所示[4]。
圖3 MF RC500功能框圖
它內(nèi)部包括微控制器接口單元、模擬信號處理單元和ISO14443A規(guī)定的協(xié)議處理單元,以及 Mifare卡特殊的Crypto1安全密鑰存儲單元。它可以與所有兼容Intel或Motorola總線的微控制器實現(xiàn)8位并行“無縫”接口(直接連接),其內(nèi)部還具有64個字節(jié)的先進先出(FIFO)隊列,可以和微控制器之間高速傳輸數(shù)據(jù);其片內(nèi)的ISO14443A協(xié)議處理單元包括狀態(tài)和控制單元、數(shù)據(jù)轉(zhuǎn)換處理單元;片內(nèi)的模擬單元能夠?qū)?shù)字信號處理單元的數(shù)據(jù)信息調(diào)制并發(fā)送到天線中,也可以將天線接收到的信息解調(diào)成數(shù)字信號傳送給協(xié)議處理單元,帶有一定的天線驅(qū)動能力。
MF RC500的工作頻率為13.56MHz,它可以在有效的發(fā)射空間內(nèi)形成一個13.56MHz的交變電磁場,為處于發(fā)射區(qū)域內(nèi)的非接觸式IC卡提供能量,同時卡或RC500需要傳送的數(shù)據(jù)信息也被調(diào)制在這個頻率上。RC500與非接觸式IC卡之間能量的傳遞和數(shù)據(jù)雙向傳輸?shù)倪^程是初級和次級兩個線圈之間的耦合過程,從讀卡器發(fā)射給卡的數(shù)據(jù)信息在調(diào)制前采用彌勒(Miller)編碼,而從卡到讀卡器的數(shù)據(jù)信息采用曼徹斯特編碼。
4.2 實時時鐘
刷卡時要記錄刷卡的時間,用外接硬件實時時鐘芯片的辦法,為系統(tǒng)提供一個準(zhǔn)確可靠的時鐘,用3V備用電池保證在系統(tǒng)掉電時也能正常走時。我們選用體積小、接口簡單的實時時鐘芯片DS1302。它是美國DALLAS公司推出的低功耗串行通信接口專用芯片,采用3線串行方式與單片機進行數(shù)據(jù)通信。DS1302片內(nèi)還有31字節(jié)的靜態(tài)RAM,可自動進行閏年補償。數(shù)據(jù)可按單字節(jié)方式或多字節(jié)突發(fā)方式傳送。DS1302為8腳DIP封裝[5],與P89C58串行接口用3根線,SCLK接CPU的P2.2,同步時鐘輸入;RST接CPU的P2.3,通信允許信號;I/O接CPU的P2.4,串行數(shù)據(jù)輸入輸出。此外, X1,X2接32768Hz的石英晶振;Vcc1接3V備用鋰電池,主電源接Vcc2。
每個數(shù)據(jù)傳輸都是先送命令字節(jié),隨后才是數(shù)據(jù)。單字節(jié)方式傳送時,在RST=1期間(RST必須為1數(shù)據(jù)傳送才有效),先送命令字節(jié),緊接著發(fā)送一個字節(jié)的數(shù)據(jù),DS1302在接收到命令字節(jié)后自動將數(shù)據(jù)寫入指定的內(nèi)部地址或從該地址讀取數(shù)據(jù)。寫數(shù)據(jù)在SCLK的上升沿有效,讀數(shù)據(jù)是在SCLK的下降沿有效。多字節(jié)突發(fā)方式傳送時,在命令字節(jié)后,是多個字節(jié)的數(shù)據(jù)。在RST=1期間,DS1302接收到命令字節(jié)后,接著進行8個字節(jié)日歷時鐘數(shù)據(jù)或31個字節(jié)內(nèi)部RAM單元數(shù)據(jù)的讀寫操作。DS1302內(nèi)部寄存器地址中,00H-06H分別對應(yīng)存放秒、分、時、日、月、星期、和年信息的寄存器,07H為寫保護控制寄存器,08H為電池充電控制寄存器。時鐘數(shù)據(jù)以 BCD碼格式存放在00H-06H這7個寄存器中。在DS1302中串行數(shù)據(jù)傳送都是低位在前,高位在后,這與AT24C256的數(shù)據(jù)傳送正好相反。
電度表相關(guān)文章:電度表原理
評論