非接觸式RFID的讀寫器系統(tǒng)設(shè)計
關(guān)鍵詞 射頻識別 RFID ISO15693通信協(xié)議 讀寫器 射頻卡
引 言
隨著計算機和嵌入式系統(tǒng)的發(fā)展,IC卡已經(jīng)融入人們的日常生活,并發(fā)展成幾大類,其中非接觸IC卡的出現(xiàn)引起了人們的特別關(guān)注。與之相應(yīng),能夠讀取非接觸IC卡內(nèi)信息的讀寫器(閱讀器)也在不斷地發(fā)展和更新。非接觸式卡又稱射頻卡(應(yīng)答器),它使用無線電調(diào)制方式和閱讀器進行信息交換。通常根據(jù)以下幾種標(biāo)準(zhǔn)來設(shè)計,即ISO/IECl0536標(biāo)準(zhǔn)、ISO/IECl4443標(biāo)準(zhǔn)、IS0/IECl5693標(biāo)準(zhǔn)。根據(jù)ISO/IEC10536標(biāo)準(zhǔn)設(shè)計的卡稱為“密耦合卡”,對庇的閱讀器也相應(yīng)遵循ISO/IECl0536標(biāo)準(zhǔn)設(shè)計;根據(jù)ISO/IECl4443標(biāo)準(zhǔn)設(shè)計的卡是近耦合卡,對應(yīng)的閱讀器遵循ISO/IECl4443標(biāo)準(zhǔn)設(shè)計;根據(jù)ISO/IECl5693標(biāo)準(zhǔn)設(shè)計的卡是遙耦合卡,對應(yīng)的閱讀器遵循ISO/IECl5693標(biāo)準(zhǔn)設(shè)計。遙耦合卡比近耦合卡具有更遠的讀卡距離,但二者均采用13.56MHz工作頻率,均具有防沖突機制。
本文以射頻識別技術(shù)的實際應(yīng)用為背景,以智能車輛識別系統(tǒng)的設(shè)計為實例,闡述了使用一種TI公司生產(chǎn)的工作于13.56 MHz的典型射頻IC卡進行系統(tǒng)開發(fā)的方法。該系統(tǒng)采用性價比較高的PICl6F874單片機作為主控器件,具有更強的研究性、實用性和推廣性。
1 系統(tǒng)總體結(jié)構(gòu)及方案設(shè)計
本系統(tǒng)采用基于ISO15693協(xié)議的TI公司的工作于13.56MHz的射頻標(biāo)XXXXXXXXXX(RI-I02-112A,RI-I03-112A等)為射頻信息鈕,由基于Rl-R6C-001A的射頻信息鈕讀頭模塊、天線、單片機、電源穩(wěn)壓模塊(UA7805)、串口通信電路(MAX232)、液晶顯示電路(SEDl335、MAX749)、無線收發(fā)模塊(AYG-59C)等組成。電源穩(wěn)壓模塊把整個系統(tǒng)的工作電壓穩(wěn)定在5V,MAX749芯片主要是為液晶模塊提供所需的負電壓。系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
把此系統(tǒng)用于城市的公交車運行情況的統(tǒng)計上,前提是要把每輛公交車上貼一個射頻卡,在每個站牌處安裝一個由閱讀器組成的系統(tǒng)(包括閱讀器、液晶模塊、無線收發(fā)模塊)。該系統(tǒng)的工作過程如下:
首先,由應(yīng)用軟件通過單片機(PICl6F874)向射頻信息鈕讀卡模塊(RI-R6C-001A)發(fā)出指令(如讀射頻卡的UID),射頻信息鈕讀卡模塊把單片機發(fā)過來的數(shù)據(jù)按所選擇的射頻協(xié)議(ISOl5693)的要求對數(shù)據(jù)進行編碼和調(diào)制,然后經(jīng)過天線發(fā)送出去。此時,在閱讀距離范圍內(nèi)的電子標(biāo)簽(射頻卡)收到此命令,經(jīng)過認證,如果正確,則按命令的要求把自己的UID發(fā)送出去(如果錯誤,則返回錯誤信息)。讀卡模塊經(jīng)過天線收到此信息,對其進行解調(diào)和解碼后,通過SPI串口送給單片機。單片機把收到的數(shù)據(jù)通過RS232串口送給收發(fā)模塊(AYG-59C),收發(fā)模塊以短消息的形式把數(shù)據(jù)發(fā)送給控制中心,然后控制中心把收到的數(shù)據(jù)以短消息群發(fā)的形式送給各個智能站牌。站牌處的無線收發(fā)模塊收到此信息后,通過串口RS232送給單片機。單片機把此信息送給液晶顯示模塊,通過液晶顯示模塊乘客就可以知道公交車行駛的情況。
2 系統(tǒng)硬件設(shè)計
硬件主要包括單片機MCU、RI-R6C-001A、液晶顯示器、時鐘電路、匹配電路及接口等外圍電路。下面給出各部分的詳細說明及相關(guān)設(shè)計。
2.1 MCU部分
圖2為MCU加外圍器件的應(yīng)用原理,也即控制部分電路原理。
控制部分首先輔助RI-R6C-001A工作。因為RIR6C-00lA芯片要正常工作,實現(xiàn)射頻閱讀器的功能,不但要有外圍電路,而且還要有控制器對其進行適當(dāng)?shù)目刂?。PICl6F874控制器有豐富的位操作指令,有SPI串行幾和精簡的指令集,能夠很容易地模擬RI-R6C-001A傳送數(shù)據(jù)的時序以及時鐘切換的時序。由于RI-R6C-001A對外只提供4個引腳(DOUT、DIN、SCLOCK、M-ERR),所以控制器的接口電路相對較簡單。DOUT、DIN、SCLOCK三個引腳分別連接到單片機的SPI串行口SDI、SDO、SCK三根線上,用來實現(xiàn)數(shù)據(jù)的串行傳輸。M-ERR引腳用來檢測接收到射頻卡中的數(shù)據(jù)是否發(fā)生錯誤(若有錯誤,則此引腳變?yōu)楦唠娖?,因此把此引腳接到單片機的外部中斷輸入33引腳,用于檢測接收數(shù)據(jù)是否有錯誤,進而單片機對其作出相應(yīng)的處理。由于RI-R6C-OO1A在接收射頻卡中的數(shù)據(jù)并把它發(fā)送給控制器時,要求控制器對其發(fā)送的數(shù)據(jù)是否結(jié)束作出判斷,并且RI-R6C-00lA不發(fā)送數(shù)據(jù)時就不再送時鐘,所以在此電路設(shè)計中把RI-R6C-001A的SCLOCK引腳也接到了具有電壓變化中斷功能的RB4引腳。RB4引腳外接一個二極管,與軟件結(jié)合起來,要求當(dāng)控制器供應(yīng)時鐘時,RB4引腳處于高電平輸出狀態(tài),經(jīng)過二極管,RB4引腳不會輸入時鐘;當(dāng)RI-R6C-001A供應(yīng)時鐘時,RB4引腳處于輸入狀態(tài),SCLOCK信號輸入此引腳,從而可以對發(fā)送數(shù)據(jù)是否結(jié)束作出相應(yīng)的判斷。其次控制器還要適時控制LCD的液晶顯示,圖2中,ADJ、CTRL是與MAX749相連的,提供LCD所需的-20V電壓;C5、C6、C7、E4、E7以及D0~D7是與LCD相連的控制信號與數(shù)據(jù)信號;同時也通過MAX232控制無線收發(fā)模塊AYG-59C數(shù)據(jù)的發(fā)送和接收。
2.2 射頻部分
微處理器與RI-R6C-001A之間的通信主要通過幾根連線實現(xiàn),圖3所示為射頻芯片加外圍器件的應(yīng)用原理。
射頻電路由三大部分組成:RI-R6C-OO1A應(yīng)用電路,與單片機相連的接口電路,天線發(fā)送、接收電路。在RI-R6C-001A應(yīng)用電路中,L1、L2、C2組成的T型網(wǎng)絡(luò)以及L3、C9組成的LC網(wǎng)絡(luò)都起濾波作用,使RI-R6C-001A通過天線接收的數(shù)據(jù)不至于流向發(fā)送端TX-OUT,因為此芯片發(fā)送數(shù)據(jù)時頻率是13.56 MHz,而接收信號的副載波頻率是13.56 MHz/28和13.56 MHz/32(FM)或13.56 MHz/32(AM),R-MOD端的電阻R2決定發(fā)送信號的調(diào)制深度;R3、L4、ClO、C11組成串聯(lián)諧振電路,匹配阻抗為50Ω??烧{(diào)電容Cll用來準(zhǔn)確調(diào)整電路諧振點在13.56 MHz。這一設(shè)計有利于閱讀器正確的收/發(fā)信息。
3 系統(tǒng)軟件設(shè)計
RI-R6C-001A射頻芯片正常工作時,一個基本的請求、應(yīng)答時序如圖4所示。
由圖4可知,當(dāng)控制器由發(fā)送轉(zhuǎn)換為接收過程中,它同時由主動轉(zhuǎn)化為被動,由發(fā)送時鐘轉(zhuǎn)換為接收時鐘。這里有時鐘切換問題。
a時刻表示控制器發(fā)送數(shù)據(jù)結(jié)束(發(fā)送數(shù)據(jù)時由控制器送出時鐘);b時刻控制器把DIN置高電平,為SCLOCK準(zhǔn)備一個控制模式的轉(zhuǎn)換或者準(zhǔn)備一個結(jié)束信號ESl;c時刻DIN下降,控制器明確表明把SCLOCK的控制權(quán)交給射頻芯片RI-R6C-001A(此時SCLOCK=0,并且控制器和射頻芯片RI-R6C-001A的時鐘線都處于輸出狀態(tài));d時刻DIN再次置高電平,表明控制器離開對總線的控制,直到DIN下降從而要求收回時鐘的控制權(quán)。在d時刻,SCLOCK仍然等于0,但控制器的SCLOCK引腳為輸入狀態(tài),射頻芯片RI-R6C-00lA的SCLOCK引腳為輸出狀態(tài)。d時刻之后,射頻芯片RI-R6C-091A便開始把接收到的從標(biāo)簽過來的數(shù)據(jù)送給控制器,以便下一步對收到的數(shù)據(jù)進行處理。當(dāng)射頻芯片RI-R6C-001A控制時鐘時,它將發(fā)送一個S2給控制器。S2對應(yīng)于標(biāo)簽發(fā)過來的SOF,然后接著發(fā)送數(shù)據(jù)7位(圖中所示)和一個ES2對應(yīng)于標(biāo)簽過來的EOF。e時刻表示標(biāo)簽過來的數(shù)據(jù)射頻芯片RI-R6C-001A傳送結(jié)束。e時刻之后,控制器把DIN置低的目的是收回時鐘的控制權(quán),DIN引腳再一次出現(xiàn)一個高電平脈沖,表示控制器收回了對時鐘的控制權(quán),在高電平脈沖期間時鐘將改變方向。根據(jù)需要,可以再進行下一次發(fā)送指令。
在智能車輛識別系統(tǒng)中,閱讀器對應(yīng)答器的操作主要是讀標(biāo)簽的UID,因此,實現(xiàn)軟件時.應(yīng)嚴格按照圖4所示的時序要求。其實,閱讀器對接收到的一系列數(shù)據(jù)先進行判斷,然后決定執(zhí)行什么命令,再將該命令轉(zhuǎn)換為應(yīng)答器所能接受的無線處理方式。注意,由于閱讀器對命令的分析和執(zhí)行都需要時間,所以要保證操作完成的速度和正確性。例如,在發(fā)命令CMD之后,要有一個很短的時間延遲,再發(fā)二進制數(shù)據(jù),以確保RI-R6C-001A能正確地動作。操作指令和參數(shù)均用上六進制數(shù)表示;同時,閱讀器按照TS015693無線協(xié)議規(guī)范,將命令信息包調(diào)制發(fā)出。當(dāng)?shù)玫綉?yīng)答器的應(yīng)答信息后,再向控制器發(fā)送操作結(jié)果信息。命令處理過程實際上是命令的解釋和執(zhí)行過程。下面以讀一個標(biāo)簽的UID為例(其他命令的用法與之類似),給出系統(tǒng)的工作流程,如圖5所示。
下面是讀標(biāo)簽UID的程序段:
由SPI口模擬的RI-R6C-001A的時序結(jié)果如圖6所示。圖6中,上升沿采樣數(shù)據(jù),兩幅圖中均有兩個信號,上面的是時鐘信號SCLOCK,下面的是數(shù)據(jù)線DIN。起始位后,發(fā)送的數(shù)據(jù)是十六進制的7D,緊接著是停止位,然后X是一個起始位,依次循環(huán)。從時序圖中可以看出,用SPI口能完全模擬該射頻芯片的協(xié)議。
結(jié)語
本系統(tǒng)在完成硬件和軟件設(shè)計后進行了制版、調(diào)試和測試。經(jīng)過測試,閱讀器完成了與IC卡之間的數(shù)據(jù)傳輸,已經(jīng)可以使用。系統(tǒng)中程序的設(shè)計采用PIC16F87X匯編語言和C語言,通過利用PC機、仿真器以及MPLAB ICE集成開發(fā)環(huán)境,完成了軟件的調(diào)試。如果硬件和軟件設(shè)計合理,則可進一步提高其可靠性和安全性,再加上成本低廉、讀寫電路簡單,應(yīng)用必然會更加廣泛。
評論