基于TI S6700系列芯片的RFID閱讀器設計
射頻識別技術是二十世紀九十年代興起的一項自動識別技術,它利用無線電射頻方式進行非接觸式雙向通信。RFID(Radio Frequency Identification)系統(tǒng)中射頻卡(應答器)與閱讀器之間無需物理接觸即可完成識別,可實現(xiàn)多目標識別和運動目標識別,應用范圍更加廣泛。圖1是閱讀器和應答器組成的一個完整射頻系統(tǒng):
圖1 閱讀器與應答器信息傳遞示意圖(略)
從射頻系統(tǒng)中可以看出閱讀器的重要性及它的功能,在整個通信過程中閱讀器起到橋梁的作用。
硬件設計
考慮到閱讀器在系統(tǒng)中要完成的工作主要是從射頻卡讀取數(shù)據(jù),并將數(shù)據(jù)經(jīng)相應的處理后送給主機。在設計時按功能對閱讀器進行模塊化設計,圖2是閱讀器的內(nèi)部功能框圖。圖中閱讀器分為射頻卡數(shù)據(jù)讀取部分(射頻部分)、控制電路部分、主機接口電路部分。
圖2 閱讀器內(nèi)部功能框圖(略)
控制部分
圖3是控制器的接口電路圖。
圖3 控制電路部分(略)
此控制部分是為了輔助RI-R6C-001A工作,因為RI-R6C-001A芯片要正常工作,完成射頻閱讀器的功能,不但需要有外圍電路,而且還需要有控制器對其進行適當?shù)目刂?。在此設計中選用了PIC16F874單片機作為控制器,由于此單片機有豐富的位操作指令,有SPI串行口,精簡的指令集,能夠很容易的模擬RI-R6C-001A傳送數(shù)據(jù)的時序以及時鐘切換時序。由于RI-R6C-001A對外只提供 四個引腳DOUT、DIN、SCLOCK、M-ERR,所以控制器的接口電路相對較簡單。DOUT、DIN、SCLOCK三個引腳分別連接到單片機的SPI串行口SDI、SDO、SCK三根線上,用來實現(xiàn)數(shù)據(jù)的串行傳輸。M-ERR引腳用來檢測接收到射頻卡中的數(shù)據(jù)是否發(fā)生錯誤,若有錯誤此引腳變?yōu)楦唠娖?,因此把該引腳接到單片機的外部中斷輸入引腳端,用于檢測接收數(shù)據(jù)是否有錯誤,進而單片機對其做出相應的處理。由于RI-R6C-001A在接收射頻卡中的數(shù)據(jù)并把它發(fā)送給控制器時,要求控制器要對其發(fā)送數(shù)據(jù)是否結束做出判斷,并且RI-R6C-001A不發(fā)送數(shù)據(jù)時就不再送時鐘,所以在此電路設計中把RI-R6C-001A的SCLOCK引腳也接到了具有電壓變化中斷功能的RB4引腳,此引腳外接一個二極管,與軟件結合起來,要求當控制器供應時鐘時,RB4引腳處于高電平輸出狀態(tài),經(jīng)過二極管,RB4引腳不會輸入時鐘;當RI-R6C-001A供應時鐘時 ,RB4引腳處于輸入狀態(tài),SCLOCK信號輸入此引腳,從而可以對發(fā)送數(shù)據(jù)是否結束作出相應的判斷。
射頻部分
RI-R6C-001A芯片是TI公司最新開發(fā)的針對IC卡讀寫的多協(xié)議收發(fā)器,支持的協(xié)議包括: Tag-it協(xié)議、ISO/IEC 15693-2、ISO/IEC 14443-2(TYPE A)。該收發(fā)器由發(fā)送器,接收器,電源供應,參考時鐘和內(nèi)部振蕩器,默認的復位設置和電源管理,串行通信接口等幾部分組成。該芯片通常是+5V供電,采用SSOP20封裝,內(nèi)部封裝有發(fā)送編碼器,調(diào)制器,接收器和解調(diào)器,典型發(fā)送功率200mW,有IDLE、POWER DOWN、FULL POWER三種電源管理功能。它提供給用戶數(shù)字接口的信號線為DIN、DOUT、SCLOCK,通過這三根線可完成控制器與RI-R6C-001A芯片之間的數(shù)據(jù)傳輸。當RI-R6C-001A要發(fā)送數(shù)據(jù)時,時鐘由單片機控制,當它要接收數(shù)據(jù)時,時鐘由該芯片控制。 DOUT除了在接收數(shù)據(jù)期間有把接收到的數(shù)據(jù)輸出給單片機的功能外,還用來表征RI-R6C-001A內(nèi)部FIFO的情況。DOUT內(nèi)部下拉,平時為低電平。輸入數(shù)據(jù)過程中,當RI-R6C-001A的16位FIFO寄存器滿時,DOUT線會自動跳變?yōu)楦唠娖?,直到FIFO寄存器空,DOUT線又會跳變?yōu)榈碗娖健T谲浖O計時單片機每發(fā)一位數(shù)據(jù)都要檢測DOUT的狀態(tài)。在DOUT為高電平期間,輸入數(shù)據(jù)無效。
射頻電路由三大部分組成(見圖4):RI-R6C-001A應用電路,與單片機相連的接口電路,天線發(fā)送。接收電路:在RI-R6C-001A應用電路中,L1、L2、C2組成的T型網(wǎng)絡以及L3、C9組成的LC網(wǎng)絡都是起到濾波的效果,使RI-R6C-001A通過天線接收的數(shù)據(jù)不至于流向發(fā)送端TX-OUT,因為此芯片發(fā)送數(shù)據(jù)時頻率是13.56MHz,而接收的信號的載波頻率是13.56MHz/28和13.56MHz/32(FM)或者13.56MHz/32(AM),R-MOD端的電阻R2決定發(fā)送信號的調(diào)制深度;R3、L4、C10、C11組成串聯(lián)諧振電路,匹配阻抗50 ,可調(diào)電容C11用來準確調(diào)整電路諧振點在13.56MHz。這一設計有利于閱讀器正確的收發(fā)信息。
圖4 射頻電路部分(略)
系統(tǒng)工作過程
接收數(shù)據(jù)過程
單片機與RI-R6C-001A之間通信必須遵循Tag-it協(xié)議或ISO/IEC 15693,其中Tag-it是TI公司最新開發(fā)的RFID Transponder(應答器)的注冊商標,是一個產(chǎn)品系列。Tag-it完全和ISO/IEC15693兼容,Tag-it應答器與閱讀器之間是半雙工通信,首先閱讀器主動發(fā)一個請求(包含命令和參數(shù)),應答器被動發(fā)一個應答(包含發(fā)送的數(shù)據(jù)和狀態(tài))。 在軟件設計上必須讓單片機發(fā)送數(shù)據(jù)和接收數(shù)據(jù)滿足RI-R6C-001A的通信要求。由單片機發(fā)給RI-R6C-001A的命令序列必須符合以下格式:
圖(略)
S1表示傳輸開始,長度為1位;CMD表示命令字節(jié),長度為8位或1位,8位用于普通模式,1位用于寄存器模式;ES1表示傳輸停止。命令字節(jié):規(guī)定RI-R6C-001A與應答器通信時的有關參數(shù),例如:支持的射頻協(xié)議,調(diào)制方式,調(diào)制深度,波特率等。普通模式在每次通信時命令序列中都要包含使用的有關參數(shù),而寄存器模式命令序列中并不含這些參數(shù),而是由預先寫入配置寄存器中的數(shù)值所決定;數(shù)據(jù)位是根據(jù)通信時的要求定的,數(shù)據(jù)位的順序由ISO15693-3或者Tag-it協(xié)議所規(guī)定,具體采用哪一種射頻協(xié)議使閱讀器與應答器通信由CMD中指定, 因此數(shù)據(jù)位是任意的,且長短根據(jù)要求通信的信息而定。單片機的SPI口正好能滿足這一要求。由于SPI口沒有開始和停止位,為了滿足RI-R6C-001A開始和停止位的要求,起始位是通過在啟動SPI口之前直接用位操作指令先對DIN置低,然后對SCLOCK置高,再把DIN置高從而表示開始接收數(shù)據(jù)的起始位,然后啟動SPI接口傳輸數(shù)據(jù); 停止位是通過在數(shù)據(jù)傳輸結束后把SPI口引腳變成通用的I/O引腳,用位操作指令先把DIN、SCLOCK置高,再把DIN置低,表示傳輸數(shù)據(jù)結束。數(shù)據(jù)位:RI-R6C-001A接收單片機發(fā)來的數(shù)據(jù)時是在每個時鐘SCLOCK的上升沿鎖存數(shù)據(jù),并且要求數(shù)據(jù)位的值必須被建立且SCLOCK為高電平時數(shù)據(jù)保持不變,也就是說要求單片機在時鐘的下降沿送出數(shù)據(jù),在時鐘的上升沿數(shù)據(jù)是穩(wěn)定的,可供閱讀器對輸入的數(shù)據(jù)進行鎖存,因此對控制器SPI口相關寄存器SSPCON和SSPSTAT進行適當設置就可以滿足此要求。
數(shù)據(jù)傳送
單片機要接收RI-R6C-001A發(fā)過來的數(shù)據(jù),首先在時序上必須滿足RI-R6C-001A發(fā)送數(shù)據(jù)時序的要求,見圖5。發(fā)送數(shù)據(jù)時,是在每個時鐘的上升沿送出數(shù)據(jù),在每個時鐘的下降沿數(shù)據(jù)穩(wěn)定,因此單片機應該在時鐘的下降沿采樣數(shù)據(jù),這同樣可以通過設置SSPCON和SSPSTAT寄存器來實現(xiàn)。
圖 5(略)
時鐘切換
需要注意的是,當單片機由發(fā)送轉(zhuǎn)換為接收過程中,它同時由主動轉(zhuǎn)化為被動,由發(fā)送時鐘轉(zhuǎn)換為接收時鐘,這里有時鐘切換問題,應滿足圖6所示時序圖關系。
圖6 時序圖(略)
由時序圖知當單片機傳輸數(shù)據(jù)ES1結束后(在a時刻)把SPI用到的引腳設置為通用I/O引腳,要進行時鐘的切換,在第一個tran期間,通過位操作指令先把SCLOCK=0,再讓DIN引腳出現(xiàn)一個正脈沖(b時刻到c時刻),單片機就把時鐘控制權交給了RI-R6C-001A,d時刻表明在RI-R6C-001A控制SCLOCK的時間內(nèi)DIN引腳為高電平,注意在閱讀器給單片機送數(shù)據(jù)時,DIN引腳一直保持高電平,一旦它不再送數(shù)據(jù),同時也不再送時鐘, 在編程時可以檢測單片機的時鐘輸入端是否由時鐘輸入,從而決定閱讀器是否還在給單片機發(fā)送數(shù)據(jù)。當閱讀器控制SCLOCK時,它將發(fā)送一個S2對應于應答器發(fā)送過來的SOF,2bit數(shù)據(jù)和一個ES2對應于應答器發(fā)送過來的EOF。在第二個tran期間可再次通過位操作指令讓DIN引腳上產(chǎn)生一個正脈沖,此時單片機就收回了控制權,然后按第一次發(fā)數(shù)據(jù)的方式發(fā)數(shù)據(jù)。 在單片機接收DOUT引腳上數(shù)據(jù)的過程中,通過對單片機中與SPI接口有關的寄存器的設置,可以讓單片機在輸入的每位數(shù)據(jù)的有效時間中間采樣數(shù)據(jù),這一設置正好與RI-R6C-001A輸出數(shù)據(jù)的時序相吻合,注意在每次時鐘切換的過程中,SCLOCK都是為低電平的。
結束語
通過利用PC機,仿真器以及MPLAB ICE集成開發(fā)環(huán)境完成了軟件的調(diào)試,軟件的主要功能包括:從單片機發(fā)送符合RI-R6C-001A所要求的命令,數(shù)據(jù)。RI-R6C-001A收到這些數(shù)據(jù)進行處理,加上SOF和EOF后,以請求的形式發(fā)送給應答器,并接收應答器以應答的形式發(fā)來的數(shù)據(jù),進行處理后再通過輸出引腳DOUT 送給單片機,在編程時采用了模塊式的結構,利用PIC16F87X匯編和C語言進行寫的程序。
該系統(tǒng)經(jīng)過測試,已經(jīng)可以使用,如果硬件和軟件設計合理,進一步提高其可靠性和安全性,再加上成本低廉、讀寫電路簡單,應用必然會更加廣泛。