基于FM1712的通用射頻卡讀寫模塊設(shè)計(jì)
射頻卡(非接觸IC卡)是最近幾年發(fā)展起來的一項(xiàng)新技術(shù),與傳統(tǒng)的接觸式IC卡磁卡相比較,利用射頻識(shí)別技術(shù)(radio frequency identifica-tion)開發(fā)的非接觸式IC卡成功解決了無(wú)源和免接觸等難題,是電子器件領(lǐng)域的一大突破。其高度安全保密性以及使用簡(jiǎn)單等特點(diǎn),使之在各領(lǐng)域的應(yīng)用異軍突起?! ∫? 本文介紹的非接觸射頻卡讀寫器就是基于單片機(jī)AT89C51CC01 (筆者應(yīng)設(shè)計(jì)需要選擇帶獨(dú)立CAN控制器的MCU)與復(fù)旦微電子股份有限公司的FM1712嵌入式讀寫芯片開發(fā)的。它能完成對(duì)Mifare卡的所有讀寫及控制操作,并可方便地嵌入到其它的系統(tǒng)(例如:門禁,公交,考勤等)中而成為用戶系統(tǒng)的一部分?! ? FM1712芯片簡(jiǎn)介 FM1712系列是復(fù)旦微電子股份有限公司設(shè)計(jì)的非接觸卡讀卡機(jī)專用芯片。它采用0.6微米CMOS EEPROM工藝制造,可分別支持13.56 MHz頻率下的typeA、typeB非接觸式通信協(xié)議,以及Mifare標(biāo)準(zhǔn)的加密算法,并可兼容Philips的RC500、RC530、RC531讀卡機(jī)芯片?! M1712內(nèi)部的發(fā)射器不需要增加有源電路就可以驅(qū)動(dòng)近距離天線(可達(dá)10 cm),而其接收部分則提供了一個(gè)堅(jiān)固而有效的解調(diào)和解碼電路,以用于接收ISO14443兼容的應(yīng)答信號(hào)。數(shù)字部分還可以處理ISO14443幀和錯(cuò)誤檢測(cè)奇偶CRC。FM1712芯片只需少量的外圍電路就可以工作,它支持6種微處理器接口,其數(shù)字電路具有TTL和CMOS兩種電壓工作模式?! ? 系統(tǒng)設(shè)計(jì) 圖1所示是基于FM1712的通用射頻讀寫系統(tǒng)的結(jié)構(gòu)框圖。該系統(tǒng)由AT89C51CC01、鍵盤、EEPROM、FM1712、LCD,以及485通信模塊組成。MCU負(fù)責(zé)控制FM1712對(duì)Mifare卡(也就是應(yīng)答器PICC)的讀寫操作,再根據(jù)得到的數(shù)據(jù)對(duì)LCD、EEPROM進(jìn)行相應(yīng)的操作?! CU與PC機(jī)通過CAN總線進(jìn)行通信。使用時(shí),即使PC機(jī)與MCU之間通信發(fā)生異常,MCU也可以獨(dú)立工作。在與PC機(jī)通信恢復(fù)之后,MCU還可以將備份在EEP-ROM中的信息再傳給PC機(jī)。AT89C5lCC01是一款單片封裝的微控制器,它采用高性能的處理器結(jié)構(gòu),其指令執(zhí)行時(shí)間只需2至4個(gè)時(shí)鐘周期。EEPROM采用的FM24C64L是一款以I2C為操作方式的存儲(chǔ)芯片。LCD則選擇內(nèi)置HD61202U控制器的點(diǎn)陣式液晶LM12864,因?yàn)長(zhǎng)M12864是并口操作方式,因此使用起來比較方便。整個(gè)系統(tǒng)采用12 V電源供電,再由穩(wěn)壓芯片穩(wěn)壓成3.6 V。
3 工作原理 射頻卡的電氣部分由天線和1個(gè)高速(106KB/s)RF口、1個(gè)控制單元和1個(gè)8 KB的EEPROM組成。其中EEPROM分為16個(gè)扇區(qū),每個(gè)扇區(qū)為4塊,每塊16個(gè)字節(jié),以塊為存取單位,每個(gè)扇區(qū)有獨(dú)立的一組密碼以進(jìn)行訪問控制。每張卡都有一個(gè)唯一的32位序列號(hào)。該RF卡無(wú)電源,自帶高頻天線,內(nèi)含加密控制邏輯和通訊邏輯電路。 信息存儲(chǔ)在Mifare卡里,讀寫器與Mifare卡通過各自的天線建立二者之間的非接觸信息傳輸通道。系統(tǒng)數(shù)據(jù)存儲(chǔ)在無(wú)源Mifare,也就是PICC(應(yīng)答器)中。圖2為系統(tǒng)工作原理,可以看出,PCD(讀寫器)的主要任務(wù)是傳輸能量給PICC,并建立與之的通信?! ICC是由一個(gè)電子數(shù)據(jù)作載體,通常由單個(gè)微型芯片以及用作天線的大面積線圈等組成;而PCD則可產(chǎn)生高頻強(qiáng)電磁場(chǎng),這種磁場(chǎng)能穿過線圈橫截面和線圈周圍的空間。因?yàn)镕M1712提供的頻率為13.56 MHz,其波長(zhǎng)比PCD的天線和PICC之間的距離大好多倍,故可以把PICC到天線之間的電磁場(chǎng)當(dāng)作簡(jiǎn)單的交變磁場(chǎng)來對(duì)待?! ∈紫茸孭CD天線線圈發(fā)射磁場(chǎng)的一小部分磁力線穿過PICC的天線線圈,接著將PICC天線線圈和電容器C構(gòu)成的振蕩回路調(diào)頻到PCD的發(fā)射頻率。回路的諧振可使PICC線圈的電壓達(dá)到最大值,將該電壓整流后作為數(shù)據(jù)載體(微型芯片)的電源。這樣,在PICC啟動(dòng)之后,可與PCD之間進(jìn)行數(shù)據(jù)通信。如上所述可以看出。PCD的性能與天線的參數(shù)有著直接的關(guān)系。在對(duì)天線的性能進(jìn)行優(yōu)化之后,PCD的讀卡距離可以達(dá)到10 cm。 4 讀寫器的天線設(shè)計(jì) 由于FM1712的頻率是13.56 MHz,屬于短波段,因此可以采用小環(huán)天線。小環(huán)天線有方型、圓形、橢圓型、三角型等。本系統(tǒng)采用方型天線。天線是非接觸式lC卡讀寫器的一個(gè)重要組成部分,在讀寫器和非接觸式IC卡通信中,天線主要用于產(chǎn)生能發(fā)射和接收射頻信號(hào)磁通量,而磁通量用于給讀寫器提供電源并在讀寫器和卡片之間傳送信息。 根據(jù)互感原理可知,半徑越大、匝數(shù)越多,讀寫器上的天線和卡上天線的互感系數(shù)就越大。根據(jù)國(guó)際標(biāo)準(zhǔn)要求,卡和讀寫器的通信距離為10 cm。天線可等效成R、L、C并聯(lián)回路(見系統(tǒng)工作原理圖),故在設(shè)計(jì)天線時(shí)要注意天線的品質(zhì)因數(shù)。國(guó)際標(biāo)準(zhǔn)ISO14443規(guī)定:無(wú)論TYPEA或TYPEB非接觸式IC卡,其讀寫器和卡之間的數(shù)據(jù)傳輸速度為106 KB/s,載波的頻率f0=13.56 MHz,因此,每一位數(shù)據(jù)的維持時(shí)間T0=106/104k=9.44μs。 TYPEA類射頻智能卡讀寫器到射頻卡的信號(hào)編碼是修正米勒編碼,傳送每一位數(shù)都會(huì)具有3μs的載波中斷,因此,該信號(hào)的帶寬近似為B=1/T=1/3μs=333.333 kHz。這樣,天線的品質(zhì)因數(shù)應(yīng)為:Q=f0/B=13.56 MHz/333.333kHz=35。由于天線的傳輸帶寬與品質(zhì)因數(shù)成反比關(guān)系,因此,過高的品質(zhì)因數(shù)會(huì)導(dǎo)致帶寬縮小,從而減弱讀寫器的調(diào)制邊帶。導(dǎo)致讀寫器無(wú)法與卡通信。
5 硬件接口電路設(shè)計(jì) 圖3所示是該讀卡器的硬件接口電路。由圖3可以看出,MCU與FM1712是通過SPI總線通信的。本系統(tǒng)采用中斷(INT1)工作模式,即MCU利用FM1712提供的中斷信息對(duì)其進(jìn)行控制。需要注意的是,F(xiàn)M1712復(fù)位后必須進(jìn)行一次初始化程序以視始化SPI接口模式,這樣還可以同步進(jìn)行MCU和FM1712的啟動(dòng)工作。另外,根據(jù)系統(tǒng)的需要,也可以采用查詢方式對(duì)FM1712進(jìn)行操作。
6 讀寫器對(duì)卡的操作 FM1712內(nèi)部有8個(gè)寄存器頁(yè),每頁(yè)有8個(gè)寄存器,每個(gè)寄存器有8位數(shù)據(jù)。這些寄存器是統(tǒng)一編址的(從0x00到0x3F),MCU通過SPI接口與FM1712通信來對(duì)這些寄存器進(jìn)行設(shè)置。如MCU需要讓FM1712執(zhí)行某個(gè)命令(Transceive),就可以把此命令的代碼(1E)寫入Command寄存器。必須注意的是,MCU對(duì)卡片的操作不是簡(jiǎn)單的一條指令所能完成的,其中必須有對(duì)FM1712內(nèi)部硬件寄存器的設(shè)置。其操作如圖4所示。以下是對(duì)卡的操作定義。
(1) 初始化:包括對(duì)MCU的初始化和對(duì)各硬件寄存器設(shè)定初始值、打開RF場(chǎng)以及看門狗復(fù)位等操作;同時(shí)要初始化FM1712的SPI接口和定時(shí)器。設(shè)置定時(shí)器控制寄存器,并打開TX1、TX2?! ?(2) Request (請(qǐng)求):當(dāng)一張Mifare卡片處在卡片讀寫器的天線工作范圍之內(nèi)時(shí),程序員可控1制讀寫器向卡片發(fā)出REQUEST all(或REQUESTstd)命令,以啟動(dòng)卡片的ATR將卡片Block0中的卡片類型(TagType)號(hào)共2個(gè)字節(jié)傳送給讀寫器,從而建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行復(fù)位請(qǐng)求操作,讀寫器對(duì)卡片的其它操作將不能進(jìn)行?! ?3) Anticollision Loop(防沖突機(jī)制):如果有多張Mifare卡片處在卡片讀寫器的天線工作范圍之內(nèi),PCD將首先與每一張卡片進(jìn)行通信,以取得每一張卡片的系列號(hào)。由于每一張Mifare卡片都具有其唯一的序列號(hào)而決不會(huì)相同,因此,PCD可根據(jù)卡片的序列號(hào)來保證一次只對(duì)一張卡進(jìn)行操作。該操作后,PCD得到PICC的返回值即為卡的序列號(hào)?! ?4) Select Tag(選擇卡片):完成上述步驟之后,PCD必須對(duì)卡片進(jìn)行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)?! ?5) Authentication(三次相互驗(yàn)證):經(jīng)過上述步驟并在確認(rèn)已經(jīng)選擇了一張卡片時(shí),讀寫器在對(duì)卡進(jìn)行讀寫操作之前,還必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證。如果匹配,才允許進(jìn)一步進(jìn)行讀寫操作?! ?6) 讀寫操作:對(duì)卡的最后操作就是讀、寫、增值、減值、存儲(chǔ)和傳送等操作。在每一個(gè)加值和減值操作后都必須跟隨一條Transfer傳送指令。這樣才能真正地將數(shù)據(jù)結(jié)果傳送到卡片上。如果沒有傳送指令,數(shù)據(jù)結(jié)果仍將保持在數(shù)據(jù)緩沖寄存器中?! ?7) 若循環(huán)詢問是Request All指令,那么,在處理完一張卡片后,還要判斷是否還有未處理完的卡片。 7 結(jié)束語(yǔ) IC卡以其高度的信息集成及安全性已經(jīng)融入當(dāng)今信息技術(shù)的主流之中。本文介紹的讀寫器所用的讀卡芯片F(xiàn)M1712是一款優(yōu)秀的新型國(guó)產(chǎn)芯片,經(jīng)實(shí)驗(yàn)證明,基于該芯片設(shè)計(jì)的Mifare卡讀寫器,工作十分穩(wěn)定。此外,在此讀寫器的基礎(chǔ)上,只要稍加改動(dòng)還能開發(fā)成不同的射頻識(shí)別應(yīng)用系統(tǒng),因而具有很好的市場(chǎng)前景。