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