《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于STM32的RFID手持式閱讀器的研究與設(shè)計(jì)
基于STM32的RFID手持式閱讀器的研究與設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第8期
程小輝, 康燕萍
桂林理工大學(xué) 信息科學(xué)與工程學(xué)院, 廣西 桂林 541004
摘要: 根據(jù)系統(tǒng)設(shè)計(jì)對芯片的性能、功耗、信息安全和傳輸速率的要求,選用STM32F103RBT6為閱讀器的微控制器。經(jīng)實(shí)驗(yàn)測試,該閱讀器可觸摸操控,能讀寫S50和S70卡,具有數(shù)據(jù)存儲功能;采用鋰電池供電,充電時電源自動切換,具有待機(jī)時間長等功能。
中圖分類號: TP368
文獻(xiàn)標(biāo)識碼: 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

    繼計(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.

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