陳建軍
(山西建筑職業(yè)技術(shù)學(xué)院 機(jī)電系,太原 030006)
當(dāng)前,物聯(lián)網(wǎng)已經(jīng)被全社會(huì)和相關(guān)產(chǎn)業(yè)密切關(guān)注,被稱為繼計(jì)算機(jī)和互聯(lián)網(wǎng)之后,世界信息產(chǎn)業(yè)的第三次浪潮。而射頻識(shí)別RFID技術(shù)則是其中非常關(guān)鍵的技術(shù)之一。它利用射頻信號(hào)通過空間耦合(交變磁場或電磁場)實(shí)現(xiàn)非接觸式雙向數(shù)據(jù)傳輸,達(dá)到自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)數(shù)據(jù)的目的。與傳統(tǒng)的接觸式IC卡和條形碼識(shí)別技術(shù)相比,RFID技術(shù)具有無需直接接觸或者光學(xué)掃描,存儲(chǔ)信息量大,閱讀速度快,閱讀距離遠(yuǎn),不易受到污染等特點(diǎn),特別適合對(duì)數(shù)量大、分布區(qū)域廣的信息進(jìn)行智能化管理和高效快捷地運(yùn)作,能夠廣泛應(yīng)用于生產(chǎn)、物流、交通、運(yùn)輸、醫(yī)療、防偽、跟蹤、設(shè)備和資產(chǎn)管理等需要收集和處理數(shù)據(jù)的應(yīng)用領(lǐng)域,并且被認(rèn)為是條形碼標(biāo)簽的未來代替品。
RFID系統(tǒng)主要由標(biāo)簽、閱讀器和上位機(jī)管理系統(tǒng)組成。針對(duì)于RFID系統(tǒng)的中間環(huán)節(jié),筆者研究和設(shè)計(jì)了一種多協(xié)議自適應(yīng)RFID閱讀器,此閱讀器采用工作于13.56 MHz高頻的TRF7960閱讀器芯片搭建射頻電路,以MSP430F5438單片機(jī)為控制核心,可以支持多種RFID協(xié)議的標(biāo)簽的信息采集,涵蓋國際標(biāo)準(zhǔn)協(xié)議中應(yīng)用最多的ISO1444和ISO15693協(xié)議。
筆者所設(shè)計(jì)的RFID系統(tǒng)工作于13.56 MHz頻段。標(biāo)簽是被動(dòng)式,內(nèi)部沒有電源供電。由于標(biāo)簽所需的能量都由閱讀器供應(yīng),所以閱讀器必須通過天線不斷向外發(fā)送出一定頻率的電磁波,在其周圍形成高頻強(qiáng)電磁場。因?yàn)?3.56 MHz的電磁波的波長為22.1 m,比閱讀器天線和標(biāo)簽之間的距離大好多倍,標(biāo)簽到閱讀器天線之間的電磁場可以簡單地當(dāng)作交變磁場來對(duì)待。當(dāng)標(biāo)簽進(jìn)入讀寫器的工作區(qū)域,交變磁場的磁力線穿過標(biāo)簽內(nèi)部的線圈的橫截面和線圈周圍的空間。標(biāo)簽內(nèi)的感應(yīng)線圈和電容組成諧振電路,由于電磁感應(yīng)效應(yīng)產(chǎn)生感應(yīng)電流,從而RFID標(biāo)簽獲取能量被激活[1],如圖1所示。
圖1 RFID系統(tǒng)工作原理
被激活的標(biāo)簽可以通過兩種方式進(jìn)行與閱讀器之間的數(shù)據(jù)傳輸。
1)負(fù)載調(diào)試。標(biāo)簽從交變磁場中獲取能量,所增加的功耗可以通過供應(yīng)閱讀器天線的電流在閱讀器內(nèi)阻上的壓降測(cè)得。標(biāo)簽天線上的負(fù)載電阻的打開和閉合可以影響閱讀器天線上的電壓發(fā)生變化。因此,利用數(shù)據(jù)控制負(fù)載電阻的打開和閉合,就能夠使數(shù)據(jù)從標(biāo)簽傳輸?shù)介喿x器上。
2)載波調(diào)試。如果標(biāo)簽的負(fù)載電阻以很高時(shí)鐘頻率 fH打開或閉合,那么就會(huì)產(chǎn)生閱讀器發(fā)送頻率±fH的邊帶信號(hào)。標(biāo)簽將包含數(shù)據(jù)的邊帶信號(hào)通過振幅鍵控(ASK)、頻移鍵控(FSK)或者相移鍵控(PSK)來調(diào)制,閱讀器再經(jīng)過解調(diào)就能夠獲得標(biāo)簽中的數(shù)據(jù)。
多協(xié)議自適應(yīng)RFID閱讀器硬件框圖如圖2所示,其主要由核心控制模塊、閱讀器模塊、通用外設(shè)接口組成。其中,核心控制模塊采用MSP430F5438單片機(jī)作為控制核心。閱讀器模塊由TRF7960以及外圍的射頻電路和PCB天線組成。TRF7960是高度集成的內(nèi)置模擬前端和數(shù)據(jù)成幀的RFID讀取芯片,支持 ISO14443A/B,ISO15693和 Tag-it協(xié)議[2],并具有防沖突機(jī)制。通用外設(shè)接口主要包括USB和 RS232接口[2]。
圖2 多協(xié)議自適應(yīng) RFID閱讀器硬件框圖
MSP430F5438單片機(jī)作為控制核心,負(fù)責(zé)啟動(dòng)和控制T RF7960,通過 T RF7960檢測(cè)RFID標(biāo)簽的數(shù)據(jù)。單片機(jī)的P1.0接T RF7960的EN端口,使能TRF7690。TRF7960通過并行8線接口與單片機(jī)通信,因此 TRF7960的 I/O_0~I(xiàn)/O_7端口接單片機(jī)P4.0~P4.7端口。TRF7960通過IRQ端口告知單片機(jī)有情況發(fā)生,比如:檢測(cè)到有RFID標(biāo)簽;信號(hào)發(fā)送完畢和接受開始等。T RF7960可以向外部控制器提供所需的時(shí)鐘,所以 T RF7960的SYS_CLK端口與單片機(jī)的XIN端口相連。MSP430F5438單片機(jī)和T RF7960的電路連接圖如圖3所示。多協(xié)議自適應(yīng)RFID閱讀器通過USB接口與上位機(jī)進(jìn)行通訊。USB接口芯片CH375與MSP430F5438單片機(jī)連接圖,如圖4所示。南京沁恒公司的CH375是一種通用的 USB總線接口芯片,支持 USB-HOST方式和 USB-DEVICE/SLAVE方式,具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出[2]。
多協(xié)議自適應(yīng)RFID閱讀器軟件設(shè)計(jì)包括上位機(jī)軟件和單片機(jī)編程兩部分。上位機(jī)軟件提供人機(jī)交互界面,通過USB接口與閱讀器發(fā)送控制命令,接受閱讀器返回的標(biāo)簽信息,并顯示出來。由于實(shí)際應(yīng)用不同,上位機(jī)軟件設(shè)計(jì)各不相同,這里不再詳細(xì)描述。
圖3 MSP430F5438單片機(jī)和T RF7960的連接圖
圖4 MSP430F5438單片機(jī)與CH375連接圖
單片機(jī)編程是針對(duì)單片機(jī)MSP430F5438的C語言程序設(shè)計(jì),主要完成對(duì)TRF7960的并行通訊、初始化并配置各種協(xié)議模式、采集標(biāo)簽信息、實(shí)現(xiàn)反碰撞算法和與上位機(jī)的通訊。
單片機(jī)利用8個(gè)GPIO端口I/O_0~I(xiàn)/O_7和1個(gè) Data_Clk端口與 T RF7960進(jìn)行并行通訊。Data_Clk端口是單片機(jī)上的一個(gè)具有中斷功能的I/O端口,用于提供并行通訊的時(shí)鐘CLK。當(dāng)CLK為高電平時(shí),I/O_7端口上出現(xiàn)上升沿為起始位,出現(xiàn)下降沿為結(jié)束位。在起始位和結(jié)束位之間,當(dāng)CLK為高電平時(shí),I/O_0~I(xiàn)/O_7端口傳輸8 bits命令、地址和數(shù)據(jù)。先傳地址或者命令,再傳數(shù)據(jù)。當(dāng)進(jìn)行地址或者命令傳輸時(shí),I/O_7端口是命令控制位,0表示地址模式,完成對(duì)TRF7960寄存器的配置和FIFO數(shù)據(jù)的讀取,1表示命令模式,完成直接命令的發(fā)送,如。I/O_6端口是讀寫位,0表示寫,1表示讀。I/O_5端口是連續(xù)模式位,當(dāng)對(duì)FIFO連續(xù)讀寫時(shí),置1,對(duì)指定寄存器地址只進(jìn)行一個(gè)字節(jié)的數(shù)據(jù)讀寫時(shí),置0。I/O_0~I(xiàn)/O_4端口在I/O_7端口置1時(shí),表示寄存器的地址,置0時(shí),表示單片機(jī)對(duì)TRF7960的命令。
上電后,單片機(jī)首先要對(duì)T RF7960進(jìn)行初始化設(shè)置。TRF7960內(nèi)部有兩個(gè)主要配置寄存器:芯片狀態(tài)控制寄存器和ISO控制寄存器,00h和01h分別是它們的地址。芯片狀態(tài)控制寄存器主要負(fù)責(zé)電源模式、RF輸出開關(guān)、AM/PM信號(hào)輸入等等。ISO控制寄存器主要負(fù)責(zé)ISO協(xié)議的選擇。通過設(shè)置參數(shù)protocol,選擇不同的協(xié)議工作方式。當(dāng)protocol為0x01時(shí),選擇 ISO15693協(xié)議;當(dāng)protocol為 0x02時(shí),選擇 ISO14443A 協(xié)議;當(dāng) protocol為0x03時(shí),選擇 ISO14443B 協(xié)議;當(dāng) protocol為0x04時(shí),選擇Tag-it協(xié)議;當(dāng)protocol為0x00時(shí),選擇自適應(yīng)工作模式。這里僅以ISO15693協(xié)議為例,進(jìn)行初始化設(shè)置:
If((protocol==0x00)||(protocol==0x01))
{command[0]=0x00;∥芯片狀態(tài)控制寄存器的地址0x00
command[1]=0x21;∥打開RF輸出,激活接收器,工作電壓在5 V
command[2]=0x01;∥ISO控制寄存器的地址0x01
command[3]=0x02;∥選擇ISO15693協(xié)議
WriteSingle(command,4);}∥將地址和數(shù)據(jù)寫入到TRF7960
采集不同協(xié)議的標(biāo)簽信息,發(fā)送的命令和參數(shù)各不相同。但是對(duì)于TRF7960,只需要將不同協(xié)議的命令和參數(shù)放進(jìn)FIFO,就可以完成不同標(biāo)簽信息的采集。FIFO是一個(gè)12字節(jié)的寄存器,地址為1Fh。當(dāng)有數(shù)據(jù)寫入FIFO時(shí),T RF7960會(huì)自動(dòng)加入SOF、EOF和CRC到數(shù)據(jù)包中,并發(fā)送數(shù)據(jù)包。
當(dāng)有標(biāo)簽信息返回時(shí),IRQ狀態(tài)寄存器的B6置位。接收完畢標(biāo)簽信息以后,如果信息的長度小于或等于8個(gè)字節(jié),單片機(jī)將得到中斷響應(yīng),直接從FIFO中就可讀出標(biāo)簽的信息。如果接受的信息大于8個(gè)字節(jié),在接受還沒有完成之前,單片機(jī)會(huì)得到中斷響應(yīng),及時(shí)讀出FIFO的信息,防止FIFO溢出。接受的信息有可能會(huì)發(fā)生錯(cuò)誤,通過查看IRQ狀態(tài)寄存器就可以知道相應(yīng)錯(cuò)誤的類型。
如果在RFID閱讀器的工作范圍中有多個(gè)標(biāo)簽,就很有可能發(fā)生標(biāo)簽沖突的現(xiàn)象,為了防止這類現(xiàn)象,在閱讀器中加入反碰撞算法是非常必要的。由于協(xié)議的不同,采集標(biāo)簽信息的方式各不相同,所以不同協(xié)議的反碰撞算法也各不相同。這里以ISO15693協(xié)議為例[3],設(shè)計(jì)了反碰撞算法。
設(shè)計(jì)了一款基于MSP430單片機(jī)和 TRF7960的多協(xié)議自適應(yīng) RFID閱讀器,并給出了軟硬件設(shè)計(jì)方案。該設(shè)計(jì)的創(chuàng)新點(diǎn)在于利用T RF7960對(duì)多協(xié)議標(biāo)簽支持和MSP430單片機(jī)的低功耗特性,使此款RFID閱讀器同時(shí)具有兩者的優(yōu)點(diǎn)。
[1]Daniel V Hunt,Albert Puglia,Mike Puglia.RFID-A Guide to Radio Frequency Identification[M].New York:Wiley-Interscience,2007.
[2]田徑,儲(chǔ)海兵.RFID讀寫器的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(1):54-57.
[3]朱臣元,俞暉,徐友云.多標(biāo)簽多協(xié)議RFID讀寫器設(shè)計(jì)[J].RFID射頻識(shí)別,2009(3):221-223.