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