文獻(xiàn)標(biāo)識碼: B
文章編號: 0258-7998(2013)08-0130-04
繼計(jì)算機(jī)和互聯(lián)網(wǎng)發(fā)展之后,物聯(lián)網(wǎng)的應(yīng)用在各個領(lǐng)域迅速發(fā)展起來。射頻識別技術(shù)(RFID)是物聯(lián)網(wǎng)的核心技術(shù)之一。RFID是一種非接觸式的自動識別技術(shù),其基本原理是利用射頻信號及其空間耦合和傳輸特性,實(shí)現(xiàn)對靜止或移動物體的自動識別[1]。RFID系統(tǒng)主要由閱讀器、射頻卡等部分組成,其中射頻識別閱讀器根據(jù)應(yīng)用場合可分為固定式閱讀器和手持式閱讀器[2]。手持式閱讀器靈活性大、便于操作人員快速完成某一區(qū)域內(nèi)的信息采集。
隨著物聯(lián)網(wǎng)射頻識別技術(shù)的不斷發(fā)展,RFID閱讀器被廣泛應(yīng)用于制造業(yè)、物流、港口、碼頭、車輛及人員管理等領(lǐng)域。
1 硬件設(shè)計(jì)
1.1 硬件結(jié)構(gòu)設(shè)計(jì)
RFID閱讀器基于STM32單片機(jī)設(shè)計(jì),芯片型號選擇為STM32F103RBT6。該芯片為LQFP64封裝, 內(nèi)部有128 KB Flash和20 KB RAM,采用32位的ARM CortexTM-M3內(nèi)核, 最高支持主頻72 MHz,擁有2個SPI接口、 2個USART接口、1個USB接口、2個I2C接口和7個定時器。支持SWD和JTAG調(diào)試模式及IAP和ISP編程。
STM32單片機(jī)支持J-Link在線調(diào)試,J-Link調(diào)試有兩種模式:JTAG調(diào)試和SWD調(diào)試。在線調(diào)試的便捷性,可以極大縮短程序的開發(fā)周期,提高開發(fā)效率。本系統(tǒng)采用的調(diào)試模式為SWD模式,只需2根SWDIO和SWCLK信號線,相比JTAG模式更加節(jié)約I/O口資源。閱讀器的硬件結(jié)構(gòu)框圖如圖1所示。
1.2 電源模塊設(shè)計(jì)
系統(tǒng)可使用直流電源或電池供電,外部直流電源電壓為8.4 V;電池電壓為7.2 V,2 600 mA/h的鋰電池。電源模塊設(shè)計(jì)原理圖如圖2所示。
電源模塊工作原理:當(dāng)插座J1連接外部直流電源時,電流可經(jīng)過D4給電池充電,直流電源經(jīng)開關(guān)JP1連接IRF7404的G極,使IRF7404的D極與S極斷開,則系統(tǒng)使用外部直流電源供電;當(dāng)不使用直流電源、按下開關(guān)時,D4可將CD_POWER與電池?cái)嚅_,IRF7404的G極為低電平, IRF7404導(dǎo)通, 則系統(tǒng)使用電池供電。SYS_
POWER電壓經(jīng)過LM2576S-3.3轉(zhuǎn)換為3.3 V為系統(tǒng)的各模塊供電。
1.3 MF RC522模塊設(shè)計(jì)
MF RC522是閱讀器的讀卡芯片,工作頻率為13.56 MHz,工作模式支持ISO 14443A標(biāo)準(zhǔn),芯片內(nèi)部驅(qū)動器可以直接驅(qū)動閱讀器的天線,無需其他電路。MF RC522具有3種接口模式:SPI接口模式、UART模式和I2C總線模式[3]。其中SPI模式的通信速度最快,可達(dá)到10 Mb/s。
MF RC522與主機(jī)接口模式有關(guān)的兩個引腳為IIC和EA:當(dāng)IIC引腳拉高時,表示當(dāng)前模式為I2C模式,若IIC引腳為低電平時,再通過EA引腳電平來區(qū)分。EA為高電平時,表示SPI模式;為低電平時,則表示UART模式[4]。本設(shè)計(jì)中MF RC522與MCU采用SPI通信,與AT45DB161共享一個MCU的SPI2接口。
在系統(tǒng)中,MF RC522和天線電路一起作為單獨(dú)模塊使用,以便于更換與維修。天線模塊與主板之間通過插座連接。
天線是閱讀器中的一個重要組成部分。其作用是向外發(fā)射一組固定頻率的電磁波,為射頻卡提供能量、傳遞數(shù)據(jù)。
本系統(tǒng)中使用的是PCB天線,天線的設(shè)計(jì)關(guān)系到閱讀器的讀寫距離,甚至關(guān)系到閱讀器是否能正常與射頻卡通信。RC522的天線設(shè)計(jì)須注意以下兩點(diǎn):(1)為了讓射頻卡能獲取足夠大的能量驅(qū)動本身的集成電路,設(shè)計(jì)天線時應(yīng)該保證向外輻射足夠大的電磁波; (2)為了提高讀卡數(shù)據(jù)的準(zhǔn)確性,需要考慮調(diào)諧電路的通頻帶,確保調(diào)制信號的準(zhǔn)確性。
天線的匹配電路可分為:天線線圈、LC諧振電路和EMC濾波電路。RC522的天線匹配電路如圖3所示,其中RQ為品質(zhì)因素Q的匹配電阻,Lant為天線的電感。
1.4 顯示模塊設(shè)計(jì)
閱讀器選用2.8英寸的TFT LCD觸摸屏。在本系統(tǒng)中移植了GUI模塊,使得人機(jī)交流界面操作更加便捷、友善。觸摸屏為四線電阻屏,使用ADS7843作為A/D轉(zhuǎn)換芯片。ADS7843是內(nèi)置12位模/數(shù)轉(zhuǎn)換、低導(dǎo)通電阻模擬開關(guān)的串行接口芯片,模/數(shù)轉(zhuǎn)換輸出范圍0~4 095,工作電壓2.7 V~5 V,參考電壓VREF為1 V~VCC,轉(zhuǎn)換電壓的輸入范圍為0~VREF,最高轉(zhuǎn)換速率為125 kHz[5]。ADS7843與MCU的接口為SPI1。
驅(qū)動層的程序基于硬件平臺,主要是為中間服務(wù)層提供硬件驅(qū)動接口函數(shù),完成底層的硬件操作。編寫STM32的內(nèi)部資源驅(qū)動程序時,調(diào)用了ST公司的固件庫函數(shù)。
中間服務(wù)層主要是為上層應(yīng)用程序提供庫支持和服務(wù)接口。中間服務(wù)層的程序在驅(qū)動層程序上開發(fā),并封裝驅(qū)動程序的接口。如FATS文件系統(tǒng)是在AT45DB161的驅(qū)動程序上移植,為上層的應(yīng)用程序提供文件創(chuàng)建、寫入、讀出、刪除等服務(wù);GUI模塊是在LCD顯示驅(qū)動程序上開發(fā),將LCD驅(qū)動的畫點(diǎn)畫線函數(shù)封裝成不同的控件,在控件上加載相應(yīng)的數(shù)據(jù)結(jié)構(gòu),為界面應(yīng)用程序提供控件的創(chuàng)建、銷毀等操作。
應(yīng)用層程序是面向用戶,通過調(diào)用中間服務(wù)函數(shù)和庫函數(shù)來完成相應(yīng)的數(shù)據(jù)處理和控制功能等。
2.2 Free RTOS實(shí)時操作系統(tǒng)
Free RTOS是一個輕量級的操作系統(tǒng),基本滿足較小系統(tǒng)的需要。該操作系統(tǒng)完全免費(fèi)且源碼公開,同時具有可移植、可裁減、調(diào)度策略靈活的特點(diǎn)。
在本設(shè)計(jì)中Free RTOS的任務(wù)之間的關(guān)系如圖5所示。
2.3 GUI模塊
GUI模塊是一個中間服務(wù)層程序,為顯示應(yīng)用程序提供控件顯示服務(wù)。如控件的顯示位置、尺寸、顏色以及控件響應(yīng)的回調(diào)函數(shù)入口地址等。在本系統(tǒng)中GUI控件包含有文本框、編輯框、進(jìn)度條、圖像框、下拉列表、按鈕等。每個控件都可以注冊一個回調(diào)函數(shù),這個函數(shù)對應(yīng)了該控件的響應(yīng)功能函數(shù)。
2.4 FAT文件系統(tǒng)
FatFs文件系統(tǒng)是中間服務(wù)層程序,建立在AT45DB161驅(qū)動程序上,文件系統(tǒng)提供了磁盤I/O接口和應(yīng)用程序接口。磁盤I/O接口函數(shù)位于diskio.c文件,常用的接口函數(shù)有讀磁盤disk_read()和寫磁盤disk_write()。這兩個函數(shù)分別調(diào)用AT45DB161驅(qū)動程序的讀扇區(qū)和寫扇區(qū)函數(shù)。在文件系統(tǒng)中一個扇區(qū)的大小為512 B,與AT45DB161的頁大小一致。
為了使FatFs文件系統(tǒng)與Windows的文件系統(tǒng)兼容,要使用FAT32格式來格式化磁盤。f_open()函數(shù)與f_close()函數(shù)必須要成對出現(xiàn),即打開一個文件操作完成后必須要關(guān)閉這個文件。在對文件進(jìn)行操作前必須先調(diào)用f_mount(0,&Fs)函數(shù)對工作區(qū)進(jìn)行注冊,操作完成后也需要調(diào)用f_mount(0,NULL)函數(shù)對工作區(qū)進(jìn)行注銷。
2.5 MF RC522驅(qū)動程序流程
本系統(tǒng)中使用的射頻卡為Mifare1 S50,也簡稱為M1卡,該卡有16個扇區(qū),每個扇區(qū)有4個塊,每個塊可存儲16 B的數(shù)據(jù)。MF RC522對M1卡進(jìn)行讀寫控制,分別有尋卡、防碰撞、選卡、認(rèn)證、讀塊和寫塊等過程。
MF RC522驅(qū)動程序流程如下:
(1)尋卡:尋找感應(yīng)區(qū)內(nèi)所有符合ISO14443A標(biāo)準(zhǔn)的卡,尋卡成功后,返回卡的類型。
(2)防碰撞:通過防碰撞命令查看多張M1卡之間是否發(fā)生碰撞,若發(fā)生碰撞,使用防碰撞算法進(jìn)行處理;若未發(fā)生碰撞,則MF RC522與M1卡進(jìn)行通信,如果通信成功,讀出M1卡中的序列號。
(3)選卡:根據(jù)M1卡的序列號進(jìn)行選卡。
(4)密碼驗(yàn)證:密碼驗(yàn)證模式有驗(yàn)證A密鑰和驗(yàn)證B密鑰,通過這兩種模式來驗(yàn)證塊地址、密碼和卡片序列號。
(5)讀數(shù)據(jù)塊:根據(jù)提供的塊地址讀取塊數(shù)據(jù)。
(6)寫數(shù)據(jù)塊:根據(jù)提供的塊地址寫入塊數(shù)據(jù),操作完成后命令M1卡進(jìn)入休眠狀態(tài)。
2.6 AT45DB161D驅(qū)動程序
AT45DB161D是一個外部Flash存儲器,擁有2 MB的容量,分為4 096個頁,可配置為每頁512 B,還擁有2個512 B的緩沖區(qū)。在主存儲器正在編程時,緩沖區(qū)允許接收數(shù)據(jù),且支持?jǐn)?shù)據(jù)流式寫入。AT45DB161的初始化包括STM32的引腳配置和SPI2接口配置,初始化之后才能進(jìn)行讀寫操作。讀寫頁操作流程如下:
(1)讀頁操作流程
①檢測AT45芯片是否忙。若忙,則繼續(xù)讀忙,直到芯片空閑;若芯片空閑,則執(zhí)行流程②。
②向AT45芯片寫入命令0x53和頁地址。0x53命令是將Flash中整頁的數(shù)據(jù)讀到緩沖區(qū)1中。
③向AT45芯片寫入命令0xD4和頁偏移地址及數(shù)據(jù)長度。0xD4命令是讀緩沖區(qū)1中的數(shù)據(jù)。
④讀頁操作完成。
(2)寫頁操作流程
①檢測AT45芯片是否忙。若忙,則繼續(xù)讀忙,直到芯片空閑;若芯片空閑,則執(zhí)行流程②。
②向AT45芯片寫入命令0x84、頁偏移地址及需要寫入的數(shù)據(jù)。0x84命令是將數(shù)據(jù)寫到緩沖區(qū)1中。
③向AT45芯片寫入命令0x83和頁地址。0x83命令是將緩沖區(qū)1中的數(shù)據(jù)寫到Flash指定的頁。使用0x83命令,寫入前不需要對頁進(jìn)行擦除操作。
④寫頁操作完成。
3 性能測試與實(shí)驗(yàn)分析
3.1手持式閱讀器的功能測試
需要測試的功能有對M1卡讀寫、文件讀寫、與PC機(jī)數(shù)據(jù)通信等功能。為了便于測試上述功能,將本設(shè)計(jì)應(yīng)用在校園消費(fèi)系統(tǒng)上進(jìn)行測試。測試步驟如下:
(1)用串口線將RFID閱讀器與PC機(jī)相連。運(yùn)行PC機(jī)的上位機(jī)程序,設(shè)置串口參數(shù)為:波特率9 600 b/s,數(shù)據(jù)位8 bit,停止位1 bit,無校驗(yàn)位,無流控制。
(2)對M1卡讀寫功能測試。通過上位機(jī)軟件發(fā)送指令和數(shù)據(jù)至閱讀器,閱讀器將指定數(shù)據(jù)寫入M1卡。然后再將M1卡數(shù)據(jù)讀出,傳回給上位機(jī)軟件顯示,并比較寫入數(shù)據(jù)和讀出數(shù)據(jù),如圖6所示。
(3)文件讀寫測試。由于讀M1卡的數(shù)據(jù)以文件的形式存放在閱讀器的外部Flash中,該Flash由文件系統(tǒng)管理。用USB線連接閱讀器和PC機(jī),閱讀器以盤符的形式在PC機(jī)上顯示,從磁盤中將文件復(fù)制到PC機(jī)上,用上位機(jī)軟件打開讀出軟件,記錄測試數(shù)據(jù)。
(4)與PC機(jī)數(shù)據(jù)通信測試。以上兩項(xiàng)測試通過則表明閱讀器能與PC機(jī)進(jìn)行正常通信。
3.2 性能測試與分析
系統(tǒng)的性能測試主要是鋰電池的續(xù)航時間及RFID有效讀卡距離等。系統(tǒng)性能測試如表1所示。
(1)鋰電池的續(xù)航時間需要分別測試最長待機(jī)時間和連續(xù)工作時間。
①最長待機(jī)時間測試:將鋰電池充滿電,閱讀器使用電池供電,將閱讀器開機(jī)而不使用,記錄待機(jī)時間。
②連續(xù)工作時間測試:將鋰電池充滿電,閱讀器使用電池供電,編寫一個測試程序,讓閱讀器定時每30 s讀取M1卡信息。記錄工作時間。
③用萬用表分別測量閱讀器的待機(jī)消耗電流和工作消耗電流,并記錄電流值。
(2)RFID有效讀卡距離。將閱讀器固定不動,M1卡平行放在閱讀器天線平面的正上方200 mm處,將M1卡緩慢向閱讀器移動,直到閱讀器能正確讀取M1卡中數(shù)據(jù)為止。測量卡與閱讀器天線之間的距離并記錄數(shù)據(jù)。
通過對上述的系統(tǒng)功能、性能進(jìn)行驗(yàn)證,分析實(shí)驗(yàn)測出的相應(yīng)數(shù)據(jù),系統(tǒng)的功能基本能達(dá)到了初期預(yù)設(shè)的技術(shù)指標(biāo)。
本文設(shè)計(jì)的閱讀器有良好的人機(jī)交流界面,可通過觸控操作,顯示屏可顯示M1卡中存儲信息。經(jīng)過實(shí)驗(yàn)證明,在70 mm的范圍內(nèi)能準(zhǔn)確讀寫M1卡中的數(shù)據(jù)。該閱讀器具有超長待機(jī)和低功耗的功能。經(jīng)過實(shí)際功能測試,已成功地將該設(shè)計(jì)應(yīng)用于校園消費(fèi)系統(tǒng)。
參考文獻(xiàn)
[1] 高天寶,王敬超,張春,等.便攜式RFID讀寫器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2008,34(5):56-58.
[2] 潘盛輝, 郭毅鋒, 黃麗敏. 基于MSP430F149的手持式RFID讀寫器低功耗設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2008,34(11):51-53.
[3] 陳保平,王月波,馬伯元.基于MFRC522的Mifare射頻卡讀寫模塊開發(fā)[J].微計(jì)算機(jī)信息,2007,23(11-2):230-231.
[4] 黃俊祥,陶維青.基于MFRC522的RFID讀卡器模塊設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2010,29(22):16-18.
[5] 翟霄翔,郝久玉,鄭軍.電阻式觸摸屏在嵌入式系統(tǒng)中的應(yīng)用[J].電子測量技術(shù),2006,29(2):36-37,71.