??? 摘 要: 傳統(tǒng)只讀射頻卡讀卡器的設(shè)計(jì)一般采用U2270B或P4095讀寫基站芯片加MCU模式,其成本高、功耗大。本文介紹一種僅采用一片89C2051加少量普通元件構(gòu)成的讀卡器電路以及獨(dú)特的等時(shí)間間隔" title="時(shí)間間隔">時(shí)間間隔指令分組并行處理" title="并行處理">并行處理的程序設(shè)計(jì)方案,電路簡(jiǎn)單、功耗小、成本低。
??? 關(guān)鍵詞: 射頻卡讀卡器? 等時(shí)間間隔指令分組? 并行處理
?
??? 非接觸式只讀型IC卡又稱只讀射頻卡(RFID),經(jīng)過多年的發(fā)展和推廣,已經(jīng)廣泛應(yīng)用于身份識(shí)別和尋址控制,如門禁、保安、考勤、食堂等領(lǐng)域。目前已逐步擴(kuò)展應(yīng)用到展覽會(huì)、公園、旅店、餐廳等公共場(chǎng)所的門票、優(yōu)惠卡以及生產(chǎn)過程、郵政包裹、航空鐵路運(yùn)輸、產(chǎn)品包裝、交通等部門的物流、電子標(biāo)簽、防偽標(biāo)志、一次性票證等眾多領(lǐng)域。
??? 射頻卡與讀卡設(shè)備之間無(wú)須接觸,采用無(wú)線耦合和電磁感應(yīng)方式與讀卡設(shè)備之間通訊。射頻卡按照其工作頻率可以分為低頻卡和高頻卡兩類。低頻卡的工作頻率為125kHz,高頻卡的工作頻率為13.56MHz。其中瑞士EM微電子公司的EM4100低頻卡及兼容系列由于價(jià)格低、讀卡距離遠(yuǎn)、讀卡器簡(jiǎn)單而應(yīng)用最為廣泛。
?? ?傳統(tǒng)的低頻射頻卡讀卡器的設(shè)計(jì)一般采用U2270B或P4095讀寫基站芯片+MCU模式,電路相對(duì)復(fù)雜,成本較高。本文介紹一種新穎的射頻卡讀卡器,該讀卡器采用獨(dú)特的等時(shí)間間隔指令分組并行處理的程序設(shè)計(jì)方案,充分利用89C2051的潛在功能,舍去了讀寫基站芯片,因而硬件電路大大簡(jiǎn)化。該類型的讀卡器讀卡距離與采用讀寫基站芯片的讀卡器相當(dāng),但電路功耗低、硬件成本僅為傳統(tǒng)讀卡器的一半左右,因此多年來已生產(chǎn)大量產(chǎn)品,運(yùn)行使用情況良好。
1 EM4100射頻卡簡(jiǎn)介
??? EM4100是一種廣為使用的只讀射頻感應(yīng)卡,其內(nèi)部ROM保存著10位十進(jìn)制卡號(hào)數(shù)據(jù)。當(dāng)它被放在一個(gè)頻率125kHz交變電磁場(chǎng)時(shí)感應(yīng)獲得能量驅(qū)動(dòng),射頻卡內(nèi)置天線環(huán)路等效負(fù)載的改變,勢(shì)必造成射頻卡對(duì)交變電磁場(chǎng)能量吸收數(shù)量的改變。如果這個(gè)天線環(huán)路等效負(fù)載是按照一定時(shí)序變化的,就可以對(duì)該外部交變電磁場(chǎng)實(shí)現(xiàn)反調(diào)制,從而將其內(nèi)部芯片數(shù)據(jù)反饋傳遞給讀卡器。
??? EM4100采用Manchester(曼徹斯特)調(diào)制格式編碼。一旦射頻卡獲得有效能量,它就會(huì)周而復(fù)始地向外發(fā)送64個(gè)數(shù)據(jù)位信息(稱之為一幀數(shù)據(jù)),位傳送率為RF/64,即每一位信息時(shí)長(zhǎng)為64個(gè)外部電磁場(chǎng)波動(dòng)周期,也就是64位信息位中包括9位‘1’的同步引導(dǎo)頭,40位的卡號(hào)數(shù)據(jù),14位奇偶校驗(yàn)以及 1位停止位。全部64位信息由制造商生產(chǎn)時(shí)編程刻錄在ROM中,其卡號(hào)數(shù)據(jù)是全球唯一的。
?
??? 圖1為曼徹斯特編碼" title="曼徹斯特編碼">曼徹斯特編碼示意圖,在一個(gè)數(shù)據(jù)位的中間時(shí)刻,信號(hào)的上跳變" title="跳變">跳變表示數(shù)據(jù)“1”的編碼;信號(hào)的下跳變表示數(shù)據(jù)“0”的編碼。
??? 表1為EM4100射頻卡內(nèi)部64數(shù)據(jù)位信息定義。
?
??? 其中D20~D23,D30~D33,……,D80~D83,D90~D93 32個(gè)數(shù)據(jù)位依次由低到高存放4個(gè)字節(jié)的卡號(hào)數(shù)據(jù)。所以最大卡號(hào)數(shù)據(jù)為0FFFFFFFFH,也就是10位十進(jìn)制數(shù)的“4294967295”。
2 射頻卡讀卡器的設(shè)計(jì)
2.1 電路設(shè)計(jì)方案
??? 按照射頻卡工作原理,讀卡器的電路設(shè)計(jì)分為125kHz電磁波產(chǎn)生電路、電磁波的接收及解調(diào)電路、曼徹斯特編碼信號(hào)的解碼電路三個(gè)部分。
??? 圖2為射頻卡讀卡器電路圖。
?
??? (1)125kHz電磁波產(chǎn)生電路
??? 為了充分利用硬件資源,125kHz信號(hào)直接由U1單片機(jī)的P1.7口提供,用軟件在P1.7口產(chǎn)生精確的矩形波" title="矩形波">矩形波周期信號(hào)。U2A的6個(gè)并接反相器74HC04起到功率放大驅(qū)動(dòng)的作用,125kHz信號(hào)通過限流電阻R5提供給天線L1、電容C1組成的串聯(lián)諧振電路。適當(dāng)調(diào)節(jié)天線L1的電感量,使LC串聯(lián)諧振電路在125Hz達(dá)到諧振,此時(shí)在C1兩端能觀察到峰峰值高達(dá)80V的正弦信號(hào)。由于C1兩端電壓較高,所以在選擇元件參數(shù)時(shí)要注意電容的耐壓?jiǎn)栴}。
??? (2)電磁波的接收及解調(diào)電路
??? 如圖2所示,D1、D2,C2~C6,R1~R4共同構(gòu)成了電磁波接收及解調(diào)電路。
??? 在讀卡器附近沒有射頻卡的情況下,在測(cè)試點(diǎn)①處得到的是125kHz的等幅振蕩信號(hào)。一旦有卡片進(jìn)入讀卡范圍,由于卡片天線環(huán)路等效負(fù)載的反調(diào)制作用,在①處得到的信號(hào)將如圖1第三行所示的調(diào)制波形。該調(diào)制波經(jīng)C2耦合,同時(shí)送到D1、C5及D2、C6組成的檢波電路。在測(cè)試點(diǎn)②③處將得到圖1第二行所示的解調(diào)包絡(luò)波形,不過②③兩點(diǎn)的波形剛好互為反相。解調(diào)波形再經(jīng)過電阻R1、R4電容C3(下半部分電路為電阻R2、R3電容C4)構(gòu)成的π型濾波器進(jìn)一步濾去殘余的125kHz載波信號(hào),得到較為理想的解調(diào)信號(hào)送至單片機(jī)的兩個(gè)輸入端P1.0、P1.1。
??? (3)曼徹斯特編碼信號(hào)的解碼
??? 單片機(jī)的兩個(gè)輸入端P1.0、P1.1連接其內(nèi)部比較器+、-輸入端,比較器的輸出端直接連接內(nèi)部P3.6腳。程序讀P3.6腳就可獲得較為理想的解調(diào)后的編碼信號(hào),曼徹斯特編碼信號(hào)的解碼是通過程序軟件實(shí)現(xiàn)的。
2.2 程序設(shè)計(jì)
??? (1)數(shù)據(jù)位檢測(cè)
??? 數(shù)據(jù)位的檢測(cè)就是曼徹斯特編碼信號(hào)的解碼,主要在于P3.6引腳信號(hào)的跳變邊沿檢測(cè)。因?yàn)閮蓚€(gè)數(shù)據(jù)位的時(shí)間間隔為512μs,所以在檢測(cè)到一個(gè)跳變后,再分別檢測(cè)P3.6在延時(shí)400μs、600μs時(shí)的狀態(tài),從而判定下一個(gè)跳變是上升沿還是下降沿。但是這樣的檢測(cè)存在一點(diǎn)問題,曼徹斯特編碼信號(hào)的跳變不僅發(fā)生在每個(gè)數(shù)據(jù)位的中間,也會(huì)發(fā)生在兩個(gè)相同數(shù)據(jù)位(相鄰兩個(gè)數(shù)據(jù)位為11或00)的交界處,見圖1曼徹斯特編碼信號(hào)波形第3、4數(shù)據(jù)位交界處有個(gè)下降沿,第5、6數(shù)據(jù)位交界處有個(gè)上升沿。仔細(xì)分析圖1曼徹斯特編碼波形圖,可以發(fā)現(xiàn),只有當(dāng)相隔512μs后仍能檢測(cè)到跳變,當(dāng)前的跳變才有可能是數(shù)據(jù)位中間的跳變,如果512μs后檢測(cè)不到跳變,則當(dāng)前的跳變就是數(shù)據(jù)位連接處的跳變。一旦判斷表明當(dāng)前的跳變是數(shù)據(jù)位連接處的跳變,就需要從下一個(gè)邊沿重新開始檢測(cè)所有的數(shù)據(jù)位。
??? (2)同步頭檢測(cè)
??? 按照上述方法,如果連續(xù)檢測(cè)到9個(gè)上升沿(即9位數(shù)據(jù)1的同步頭)就意味著新的一幀數(shù)據(jù)開始到來。但是,由于邊沿檢測(cè)程序及9個(gè)1的同步頭判斷程序需要花費(fèi)不少時(shí)間,所以不采用邊檢測(cè)邊判斷同步頭的方法,而是一次性連續(xù)讀入128位(這樣肯定能獲得完整的一幀數(shù)據(jù)),然后在這128位中尋找同步頭,再進(jìn)行后續(xù)的數(shù)據(jù)位處理。通過實(shí)踐發(fā)現(xiàn),經(jīng)過這樣處理后讀卡器讀卡最靈敏。
??? (3)等時(shí)間間隔指令分組產(chǎn)生125kHz矩形波
??? 125kHz矩形波的周期是8μs,利用P1.7產(chǎn)生該信號(hào)意味著每隔4μs P1.7就要取反一次。在采用12MHz晶振的單片機(jī)系統(tǒng)中,顯然是無(wú)法用定時(shí)器中斷來實(shí)現(xiàn)的,因?yàn)楣馐侵袛囗憫?yīng)最長(zhǎng)時(shí)就要達(dá)到8個(gè)機(jī)器周期,超過了4μs。
??? 為了既能產(chǎn)生125kHz矩形波又能同時(shí)做數(shù)據(jù)位檢測(cè)等其他工作,采用等時(shí)間間隔指令分組方法實(shí)現(xiàn)了并行處理算法。具體思路如下:在連續(xù)讀入128數(shù)據(jù)位時(shí),為實(shí)現(xiàn)該工作而編寫的指令代碼都按執(zhí)行時(shí)間被劃分為4μs一組,每組的第一條指令必定是CPL P1.7以產(chǎn)生125kHz矩形波信號(hào)(如圖3所示),而同組的其他指令才用于實(shí)現(xiàn)邊沿檢測(cè)、數(shù)據(jù)存儲(chǔ)等工作。圖3中左邊的“并行處理算法示意圖”和右邊的“程序片斷”僅用于示例,兩者沒有對(duì)應(yīng)關(guān)系。
?
??? 本文介紹了一種新型只讀型射頻卡讀卡器的電路及程序?qū)崿F(xiàn)方法。該讀卡器采用等時(shí)間間隔指令分組并行處理算法最大化,利用了89C2051的功能,相比同類型讀卡器不需要U2270或P4095讀寫基站芯片,因此電路簡(jiǎn)潔、成本低、功耗小。
參考文獻(xiàn)
[1] ATMEL89系列Flash單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版杜,2001.
[2] EM4100 datasheet(EM4100數(shù)據(jù)手冊(cè)).
[3] Temic U2270B datasheet(U2270B數(shù)據(jù)手冊(cè)).
[4] www.sefea.com/pdf/P4095_B.pdf(P4095數(shù)據(jù)手冊(cè)).