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