《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于STM32的RFID手持式閱讀器的研究與設計
基于STM32的RFID手持式閱讀器的研究與設計
來源:電子技術應用2013年第8期
程小輝,, 康燕萍
桂林理工大學 信息科學與工程學院,, 廣西 桂林 541004
摘要: 根據(jù)系統(tǒng)設計對芯片的性能、功耗,、信息安全和傳輸速率的要求,,選用STM32F103RBT6為閱讀器的微控制器。經(jīng)實驗測試,,該閱讀器可觸摸操控,,能讀寫S50和S70卡,具有數(shù)據(jù)存儲功能,;采用鋰電池供電,,充電時電源自動切換,,具有待機時間長等功能。
中圖分類號: TP368
文獻標識碼: B
文章編號: 0258-7998(2013)08-0130-04
Study and design of the RFID hand-held reader based on the STM32
Cheng Xiaohui, Kang Yanping
College of Information Science and Engineering, Guilin University of Technology, Guilin 541004, China
Abstract: The system was designed from some aspects, which were chip selections, power consumption, information security, transmission rate, etc. The STM32F103RBT6 was the reader micro-controller. This reader, which hads been tested, could touch control, read and write S50 and S70 card, and has data store function. It could use lithium battery to supply power, and the power could automatically switch when the lithium battery charged, the reader had a long standby time.
Key words : RFID; reader; STM32; MF RC522

    繼計算機和互聯(lián)網(wǎng)發(fā)展之后,,物聯(lián)網(wǎng)的應用在各個領域迅速發(fā)展起來,。射頻識別技術(RFID)是物聯(lián)網(wǎng)的核心技術之一。RFID是一種非接觸式的自動識別技術,,其基本原理是利用射頻信號及其空間耦合和傳輸特性,,實現(xiàn)對靜止或移動物體的自動識別[1]。RFID系統(tǒng)主要由閱讀器,、射頻卡等部分組成,其中射頻識別閱讀器根據(jù)應用場合可分為固定式閱讀器和手持式閱讀器[2],。手持式閱讀器靈活性大、便于操作人員快速完成某一區(qū)域內(nèi)的信息采集,。

    隨著物聯(lián)網(wǎng)射頻識別技術的不斷發(fā)展,RFID閱讀器被廣泛應用于制造業(yè),、物流,、港口、碼頭,、車輛及人員管理等領域,。
1 硬件設計
1.1 硬件結構設計

    RFID閱讀器基于STM32單片機設計,芯片型號選擇為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-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口資源,。閱讀器的硬件結構框圖如圖1所示。

1.2 電源模塊設計
    系統(tǒng)可使用直流電源或電池供電,,外部直流電源電壓為8.4 V,;電池電壓為7.2 V,2 600 mA/h的鋰電池,。電源模塊設計原理圖如圖2所示,。

    電源模塊工作原理:當插座J1連接外部直流電源時,,電流可經(jīng)過D4給電池充電,直流電源經(jīng)開關JP1連接IRF7404的G極,,使IRF7404的D極與S極斷開,則系統(tǒng)使用外部直流電源供電,;當不使用直流電源、按下開關時,,D4可將CD_POWER與電池斷開,,IRF7404的G極為低電平, IRF7404導通, 則系統(tǒng)使用電池供電。SYS_
POWER電壓經(jīng)過LM2576S-3.3轉換為3.3 V為系統(tǒng)的各模塊供電,。
1.3 MF RC522模塊設計
    MF RC522是閱讀器的讀卡芯片,工作頻率為13.56 MHz,,工作模式支持ISO 14443A標準,芯片內(nèi)部驅動器可以直接驅動閱讀器的天線,無需其他電路,。MF RC522具有3種接口模式:SPI接口模式,、UART模式和I2C總線模式[3]。其中SPI模式的通信速度最快,,可達到10 Mb/s,。
    MF RC522與主機接口模式有關的兩個引腳為IIC和EA:當IIC引腳拉高時,表示當前模式為I2C模式,,若IIC引腳為低電平時,再通過EA引腳電平來區(qū)分,。EA為高電平時,表示SPI模式,;為低電平時,,則表示UART模式[4]。本設計中MF RC522與MCU采用SPI通信,,與AT45DB161共享一個MCU的SPI2接口,。
    在系統(tǒng)中,MF RC522和天線電路一起作為單獨模塊使用,,以便于更換與維修,。天線模塊與主板之間通過插座連接。
    天線是閱讀器中的一個重要組成部分,。其作用是向外發(fā)射一組固定頻率的電磁波,為射頻卡提供能量,、傳遞數(shù)據(jù)。
    本系統(tǒng)中使用的是PCB天線,,天線的設計關系到閱讀器的讀寫距離,,甚至關系到閱讀器是否能正常與射頻卡通信。RC522的天線設計須注意以下兩點:(1)為了讓射頻卡能獲取足夠大的能量驅動本身的集成電路,,設計天線時應該保證向外輻射足夠大的電磁波,; (2)為了提高讀卡數(shù)據(jù)的準確性,需要考慮調(diào)諧電路的通頻帶,,確保調(diào)制信號的準確性,。
    天線的匹配電路可分為:天線線圈,、LC諧振電路和EMC濾波電路。RC522的天線匹配電路如圖3所示,,其中RQ為品質因素Q的匹配電阻,,Lant為天線的電感。
1.4 顯示模塊設計
      閱讀器選用2.8英寸的TFT LCD觸摸屏,。在本系統(tǒng)中移植了GUI模塊,,使得人機交流界面操作更加便捷、友善,。觸摸屏為四線電阻屏,使用ADS7843作為A/D轉換芯片,。ADS7843是內(nèi)置12位模/數(shù)轉換、低導通電阻模擬開關的串行接口芯片,,模/數(shù)轉換輸出范圍0~4 095,,工作電壓2.7 V~5 V,參考電壓VREF為1 V~VCC,,轉換電壓的輸入范圍為0~VREF,,最高轉換速率為125 kHz[5]。ADS7843與MCU的接口為SPI1,。

    驅動層的程序基于硬件平臺,主要是為中間服務層提供硬件驅動接口函數(shù),,完成底層的硬件操作,。編寫STM32的內(nèi)部資源驅動程序時,調(diào)用了ST公司的固件庫函數(shù)。
    中間服務層主要是為上層應用程序提供庫支持和服務接口,。中間服務層的程序在驅動層程序上開發(fā),,并封裝驅動程序的接口。如FATS文件系統(tǒng)是在AT45DB161的驅動程序上移植,,為上層的應用程序提供文件創(chuàng)建,、寫入、讀出,、刪除等服務,;GUI模塊是在LCD顯示驅動程序上開發(fā),將LCD驅動的畫點畫線函數(shù)封裝成不同的控件,,在控件上加載相應的數(shù)據(jù)結構,,為界面應用程序提供控件的創(chuàng)建、銷毀等操作,。
    應用層程序是面向用戶,,通過調(diào)用中間服務函數(shù)和庫函數(shù)來完成相應的數(shù)據(jù)處理和控制功能等。
2.2 Free RTOS實時操作系統(tǒng)
    Free RTOS是一個輕量級的操作系統(tǒng),基本滿足較小系統(tǒng)的需要,。該操作系統(tǒng)完全免費且源碼公開,,同時具有可移植,、可裁減、調(diào)度策略靈活的特點,。
    在本設計中Free RTOS的任務之間的關系如圖5所示,。

 

 

2.3 GUI模塊
    GUI模塊是一個中間服務層程序,為顯示應用程序提供控件顯示服務,。如控件的顯示位置,、尺寸、顏色以及控件響應的回調(diào)函數(shù)入口地址等,。在本系統(tǒng)中GUI控件包含有文本框,、編輯框、進度條,、圖像框,、下拉列表、按鈕等,。每個控件都可以注冊一個回調(diào)函數(shù),,這個函數(shù)對應了該控件的響應功能函數(shù)。
2.4 FAT文件系統(tǒng)
    FatFs文件系統(tǒng)是中間服務層程序,建立在AT45DB161驅動程序上,,文件系統(tǒng)提供了磁盤I/O接口和應用程序接口,。磁盤I/O接口函數(shù)位于diskio.c文件,常用的接口函數(shù)有讀磁盤disk_read()和寫磁盤disk_write(),。這兩個函數(shù)分別調(diào)用AT45DB161驅動程序的讀扇區(qū)和寫扇區(qū)函數(shù),。在文件系統(tǒng)中一個扇區(qū)的大小為512 B,與AT45DB161的頁大小一致,。
    為了使FatFs文件系統(tǒng)與Windows的文件系統(tǒng)兼容,,要使用FAT32格式來格式化磁盤。f_open()函數(shù)與f_close()函數(shù)必須要成對出現(xiàn),,即打開一個文件操作完成后必須要關閉這個文件,。在對文件進行操作前必須先調(diào)用f_mount(0,&Fs)函數(shù)對工作區(qū)進行注冊,,操作完成后也需要調(diào)用f_mount(0,NULL)函數(shù)對工作區(qū)進行注銷,。
2.5 MF RC522驅動程序流程
    本系統(tǒng)中使用的射頻卡為Mifare1 S50,也簡稱為M1卡,該卡有16個扇區(qū),,每個扇區(qū)有4個塊,,每個塊可存儲16 B的數(shù)據(jù)。MF RC522對M1卡進行讀寫控制,,分別有尋卡,、防碰撞、選卡、認證,、讀塊和寫塊等過程,。
    MF RC522驅動程序流程如下:
    (1)尋卡:尋找感應區(qū)內(nèi)所有符合ISO14443A標準的卡,尋卡成功后,,返回卡的類型,。
    (2)防碰撞:通過防碰撞命令查看多張M1卡之間是否發(fā)生碰撞,若發(fā)生碰撞,,使用防碰撞算法進行處理,;若未發(fā)生碰撞,則MF RC522與M1卡進行通信,如果通信成功,,讀出M1卡中的序列號,。
    (3)選卡:根據(jù)M1卡的序列號進行選卡。
    (4)密碼驗證:密碼驗證模式有驗證A密鑰和驗證B密鑰,,通過這兩種模式來驗證塊地址,、密碼和卡片序列號。
    (5)讀數(shù)據(jù)塊:根據(jù)提供的塊地址讀取塊數(shù)據(jù),。
    (6)寫數(shù)據(jù)塊:根據(jù)提供的塊地址寫入塊數(shù)據(jù),,操作完成后命令M1卡進入休眠狀態(tài)。
2.6 AT45DB161D驅動程序
    AT45DB161D是一個外部Flash存儲器,,擁有2 MB的容量,,分為4 096個頁,可配置為每頁512 B,,還擁有2個512 B的緩沖區(qū),。在主存儲器正在編程時,緩沖區(qū)允許接收數(shù)據(jù),,且支持數(shù)據(jù)流式寫入。AT45DB161的初始化包括STM32的引腳配置和SPI2接口配置,,初始化之后才能進行讀寫操作,。讀寫頁操作流程如下:
    (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命令,寫入前不需要對頁進行擦除操作,。
    ④寫頁操作完成,。
3 性能測試與實驗分析
3.1手持式閱讀器的功能測試

    需要測試的功能有對M1卡讀寫、文件讀寫,、與PC機數(shù)據(jù)通信等功能,。為了便于測試上述功能,將本設計應用在校園消費系統(tǒng)上進行測試,。測試步驟如下:
    (1)用串口線將RFID閱讀器與PC機相連,。運行PC機的上位機程序,設置串口參數(shù)為:波特率9 600 b/s,,數(shù)據(jù)位8 bit,,停止位1 bit,無校驗位,,無流控制,。
    (2)對M1卡讀寫功能測試。通過上位機軟件發(fā)送指令和數(shù)據(jù)至閱讀器,,閱讀器將指定數(shù)據(jù)寫入M1卡,。然后再將M1卡數(shù)據(jù)讀出,傳回給上位機軟件顯示,,并比較寫入數(shù)據(jù)和讀出數(shù)據(jù),,如圖6所示。

    (3)文件讀寫測試,。由于讀M1卡的數(shù)據(jù)以文件的形式存放在閱讀器的外部Flash中,,該Flash由文件系統(tǒng)管理。用USB線連接閱讀器和PC機,,閱讀器以盤符的形式在PC機上顯示,,從磁盤中將文件復制到PC機上,用上位機軟件打開讀出軟件,,記錄測試數(shù)據(jù),。
    (4)與PC機數(shù)據(jù)通信測試。以上兩項測試通過則表明閱讀器能與PC機進行正常通信。
3.2 性能測試與分析
    系統(tǒng)的性能測試主要是鋰電池的續(xù)航時間及RFID有效讀卡距離等,。系統(tǒng)性能測試如表1所示,。

    (1)鋰電池的續(xù)航時間需要分別測試最長待機時間和連續(xù)工作時間。
    ①最長待機時間測試:將鋰電池充滿電,,閱讀器使用電池供電,,將閱讀器開機而不使用,記錄待機時間,。
    ②連續(xù)工作時間測試:將鋰電池充滿電,,閱讀器使用電池供電,編寫一個測試程序,讓閱讀器定時每30 s讀取M1卡信息。記錄工作時間,。
     ③用萬用表分別測量閱讀器的待機消耗電流和工作消耗電流,,并記錄電流值。
    (2)RFID有效讀卡距離,。將閱讀器固定不動,,M1卡平行放在閱讀器天線平面的正上方200 mm處,將M1卡緩慢向閱讀器移動,,直到閱讀器能正確讀取M1卡中數(shù)據(jù)為止,。測量卡與閱讀器天線之間的距離并記錄數(shù)據(jù)。
    通過對上述的系統(tǒng)功能,、性能進行驗證,,分析實驗測出的相應數(shù)據(jù),系統(tǒng)的功能基本能達到了初期預設的技術指標,。
    本文設計的閱讀器有良好的人機交流界面,,可通過觸控操作,顯示屏可顯示M1卡中存儲信息,。經(jīng)過實驗證明,,在70 mm的范圍內(nèi)能準確讀寫M1卡中的數(shù)據(jù)。該閱讀器具有超長待機和低功耗的功能,。經(jīng)過實際功能測試,,已成功地將該設計應用于校園消費系統(tǒng)。
參考文獻
[1] 高天寶,,王敬超,,張春,,等.便攜式RFID讀寫器的設計與實現(xiàn)[J].電子技術應用,,2008,34(5):56-58.
[2] 潘盛輝,, 郭毅鋒,, 黃麗敏. 基于MSP430F149的手持式RFID讀寫器低功耗設計[J]. 電子技術應用, 2008,34(11):51-53.
[3] 陳保平,,王月波,,馬伯元.基于MFRC522的Mifare射頻卡讀寫模塊開發(fā)[J].微計算機信息,2007,,23(11-2):230-231.
[4] 黃俊祥,,陶維青.基于MFRC522的RFID讀卡器模塊設計[J].微型機與應用,2010,,29(22):16-18.
[5] 翟霄翔,,郝久玉,鄭軍.電阻式觸摸屏在嵌入式系統(tǒng)中的應用[J].電子測量技術,,2006,,29(2):36-37,71.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。