基于STM32的RFID手持式閱讀器(qì)的研究與設計(jì)

時(shí)間(jiān)2021-09-17


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

随着物聯網射頻識别技(jì)術(shù)的不斷發展,RFID閱讀器(qì)被廣泛應用于制(zhì)造業、物流、港口、碼頭、車(chē)輛(liàng)及人(rén)員管理(lǐ)等領域。

1 硬件設計(jì)

1.1 硬件結構設計(jì)

RFID閱讀器(qì)基于STM32單片機設計(jì),芯片型号選擇為(wèi)STM32F103RBT6。該芯片為(wèi)LQFP64封裝, 內(nèi)部有(yǒu)128 KB Flash和(hé)20 KB RAM,采用32位的ARM CortexTM-M3內(nèi)核, 最高(gāo)支持主頻72 MHz,擁有(yǒu)2個(gè)SPI接口、 2個(gè)USART接口、1個(gè)USB接口、2個(gè)I2C接口和(hé)7個(gè)定時(shí)器(qì)。支持SWD和(hé)JTAG調試模式及IAP和(hé)ISP編程。

STM32單片機支持J-Link在線調試,J-Link調試有(yǒu)兩種模式:JTAG調試和(hé)SWD調試。在線調試的便捷性,可(kě)以極大(dà)縮短(duǎn)程序的開(kāi)發周期,提高(gāo)開(kāi)發效率。本系統采用的調試模式為(wèi)SWD模式,隻需2根SWDIO和(hé)SWCLK信号線,相比JTAG模式更加節約I/O口資源。閱讀器(qì)的硬件結構框圖如圖1所示。

1.2 電(diàn)源模塊設計(jì)

系統可(kě)使用直流電(diàn)源或電(diàn)池供電(diàn),外部直流電(diàn)源電(diàn)壓為(wèi)8.4 V;電(diàn)池電(diàn)壓為(wèi)7.2 V,2 600 mA/h的锂電(diàn)池。電(diàn)源模塊設計(jì)原理(lǐ)圖如圖2所示。

電(diàn)源模塊工作(zuò)原理(lǐ):當插座J1連接外部直流電(diàn)源時(shí),電(diàn)流可(kě)經過D4給電(diàn)池充電(diàn),直流電(diàn)源經開(kāi)關JP1連接IRF7404的G極,使IRF7404的D極與S極斷開(kāi),則系統使用外部直流電(diàn)源供電(diàn);當不使用直流電(diàn)源、按下開(kāi)關時(shí),D4可(kě)将CD_POWER與電(diàn)池斷開(kāi),IRF7404的G極為(wèi)低(dī)電(diàn)平, IRF7404導通(tōng), 則系統使用電(diàn)池供電(diàn)。SYS_

POWER電(diàn)壓經過LM2576S-3.3轉換為(wèi)3.3 V為(wèi)系統的各模塊供電(diàn)。

1.3 MF RC522模塊設計(jì)

MF RC522是閱讀器(qì)的讀卡芯片,工作(zuò)頻率為(wèi)13.56 MHz,工作(zuò)模式支持ISO 14443A标準,芯片內(nèi)部驅動器(qì)可(kě)以直接驅動閱讀器(qì)的天線,無需其他電(diàn)路。MF RC522具有(yǒu)3種接口模式:SPI接口模式、UART模式和(hé)I2C總線模式[3]。其中SPI模式的通(tōng)信速度最快,可(kě)達到10 Mb/s。

MF RC522與主機接口模式有(yǒu)關的兩個(gè)引腳為(wèi)IIC和(hé)EA:當IIC引腳拉高(gāo)時(shí),表示當前模式為(wèi)I2C模式,若IIC引腳為(wèi)低(dī)電(diàn)平時(shí),再通(tōng)過EA引腳電(diàn)平來(lái)區(qū)分。EA為(wèi)高(gāo)電(diàn)平時(shí),表示SPI模式;為(wèi)低(dī)電(diàn)平時(shí),則表示UART模式[4]。本設計(jì)中MF RC522與MCU采用SPI通(tōng)信,與AT45DB161共享一個(gè)MCU的SPI2接口。

在系統中,MF RC522和(hé)天線電(diàn)路一起作(zuò)為(wèi)單獨模塊使用,以便于更換與維修。天線模塊與主闆之間(jiān)通(tōng)過插座連接。

天線是閱讀器(qì)中的一個(gè)重要組成部分。其作(zuò)用是向外發射一組固定頻率的電(diàn)磁波,為(wèi)射頻卡提供能量、傳遞數(shù)據。

本系統中使用的是PCB天線,天線的設計(jì)關系到閱讀器(qì)的讀寫距離,甚至關系到閱讀器(qì)是否能正常與射頻卡通(tōng)信。RC522的天線設計(jì)須注意以下兩點:(1)為(wèi)了讓射頻卡能獲取足夠大(dà)的能量驅動本身的集成電(diàn)路,設計(jì)天線時(shí)應該保證向外輻射足夠大(dà)的電(diàn)磁波; (2)為(wèi)了提高(gāo)讀卡數(shù)據的準确性,需要考慮調諧電(diàn)路的通(tōng)頻帶,确保調制(zhì)信号的準确性。

天線的匹配電(diàn)路可(kě)分為(wèi):天線線圈、LC諧振電(diàn)路和(hé)EMC濾波電(diàn)路。RC522的天線匹配電(diàn)路如圖3所示,其中RQ為(wèi)品質因素Q的匹配電(diàn)阻,Lant為(wèi)天線的電(diàn)感。

1.4 顯示模塊設計(jì)

閱讀器(qì)選用2.8英寸的TFT LCD觸摸屏。在本系統中移植了GUI模塊,使得(de)人(rén)機交流界面操作(zuò)更加便捷、友(yǒu)善。觸摸屏為(wèi)四線電(diàn)阻屏,使用ADS7843作(zuò)為(wèi)A/D轉換芯片。ADS7843是內(nèi)置12位模/數(shù)轉換、低(dī)導通(tōng)電(diàn)阻模拟開(kāi)關的串行(xíng)接口芯片,模/數(shù)轉換輸出範圍0~4 095,工作(zuò)電(diàn)壓2.7 V~5 V,參考電(diàn)壓VREF為(wèi)1 V~VCC,轉換電(diàn)壓的輸入範圍為(wèi)0~VREF,最高(gāo)轉換速率為(wèi)125 kHz[5]。ADS7843與MCU的接口為(wèi)SPI1。

驅動層的程序基于硬件平台,主要是為(wèi)中間(jiān)服務層提供硬件驅動接口函數(shù),完成底層的硬件操作(zuò)。編寫STM32的內(nèi)部資源驅動程序時(shí),調用了ST公司的固件庫函數(shù)。

中間(jiān)服務層主要是為(wèi)上(shàng)層應用程序提供庫支持和(hé)服務接口。中間(jiān)服務層的程序在驅動層程序上(shàng)開(kāi)發,并封裝驅動程序的接口。如FATS文件系統是在AT45DB161的驅動程序上(shàng)移植,為(wèi)上(shàng)層的應用程序提供文件創建、寫入、讀出、删除等服務;GUI模塊是在LCD顯示驅動程序上(shàng)開(kāi)發,将LCD驅動的畫(huà)點畫(huà)線函數(shù)封裝成不同的控件,在控件上(shàng)加載相應的數(shù)據結構,為(wèi)界面應用程序提供控件的創建、銷毀等操作(zuò)。

應用層程序是面向用戶,通(tōng)過調用中間(jiān)服務函數(shù)和(hé)庫函數(shù)來(lái)完成相應的數(shù)據處理(lǐ)和(hé)控制(zhì)功能等。

2.2 Free RTOS實時(shí)操作(zuò)系統

Free RTOS是一個(gè)輕量級的操作(zuò)系統,基本滿足較小(xiǎo)系統的需要。該操作(zuò)系統完全免費且源碼公開(kāi),同時(shí)具有(yǒu)可(kě)移植、可(kě)裁減、調度策略靈活的特點。

在本設計(jì)中Free RTOS的任務之間(jiān)的關系如圖5所示。

2.3 GUI模塊

GUI模塊是一個(gè)中間(jiān)服務層程序,為(wèi)顯示應用程序提供控件顯示服務。如控件的顯示位置、尺寸、顔色以及控件響應的回調函數(shù)入口地址等。在本系統中GUI控件包含有(yǒu)文本框、編輯框、進度條、圖像框、下拉列表、按鈕等。每個(gè)控件都可(kě)以注冊一個(gè)回調函數(shù),這個(gè)函數(shù)對應了該控件的響應功能函數(shù)。

2.4 FAT文件系統

FatFs文件系統是中間(jiān)服務層程序,建立在AT45DB161驅動程序上(shàng),文件系統提供了磁盤I/O接口和(hé)應用程序接口。磁盤I/O接口函數(shù)位于diskio.c文件,常用的接口函數(shù)有(yǒu)讀磁盤disk_read()和(hé)寫磁盤disk_write()。這兩個(gè)函數(shù)分别調用AT45DB161驅動程序的讀扇區(qū)和(hé)寫扇區(qū)函數(shù)。在文件系統中一個(gè)扇區(qū)的大(dà)小(xiǎo)為(wèi)512 B,與AT45DB161的頁大(dà)小(xiǎo)一緻。

為(wèi)了使FatFs文件系統與Windows的文件系統兼容,要使用FAT32格式來(lái)格式化磁盤。f_open()函數(shù)與f_close()函數(shù)必須要成對出現,即打開(kāi)一個(gè)文件操作(zuò)完成後必須要關閉這個(gè)文件。在對文件進行(xíng)操作(zuò)前必須先調用f_mount(0,&Fs)函數(shù)對工作(zuò)區(qū)進行(xíng)注冊,操作(zuò)完成後也需要調用f_mount(0,NULL)函數(shù)對工作(zuò)區(qū)進行(xíng)注銷。

2.5 MF RC522驅動程序流程

本系統中使用的射頻卡為(wèi)Mifare1 S50,也簡稱為(wèi)M1卡,該卡有(yǒu)16個(gè)扇區(qū),每個(gè)扇區(qū)有(yǒu)4個(gè)塊,每個(gè)塊可(kě)存儲16 B的數(shù)據。MF RC522對M1卡進行(xíng)讀寫控制(zhì),分别有(yǒu)尋卡、防碰撞、選卡、認證、讀塊和(hé)寫塊等過程。

MF RC522驅動程序流程如下:

(1)尋卡:尋找感應區(qū)內(nèi)所有(yǒu)符合ISO14443A标準的卡,尋卡成功後,返回卡的類型。

(2)防碰撞:通(tōng)過防碰撞命令查看多(duō)張M1卡之間(jiān)是否發生(shēng)碰撞,若發生(shēng)碰撞,使用防碰撞算(suàn)法進行(xíng)處理(lǐ);若未發生(shēng)碰撞,則MF RC522與M1卡進行(xíng)通(tōng)信,如果通(tōng)信成功,讀出M1卡中的序列号。

(3)選卡:根據M1卡的序列号進行(xíng)選卡。

(4)密碼驗證:密碼驗證模式有(yǒu)驗證A密鑰和(hé)驗證B密鑰,通(tōng)過這兩種模式來(lái)驗證塊地址、密碼和(hé)卡片序列号。

(5)讀數(shù)據塊:根據提供的塊地址讀取塊數(shù)據。

(6)寫數(shù)據塊:根據提供的塊地址寫入塊數(shù)據,操作(zuò)完成後命令M1卡進入休眠狀态。

2.6 AT45DB161D驅動程序

AT45DB161D是一個(gè)外部Flash存儲器(qì),擁有(yǒu)2 MB的容量,分為(wèi)4 096個(gè)頁,可(kě)配置為(wèi)每頁512 B,還(hái)擁有(yǒu)2個(gè)512 B的緩沖區(qū)。在主存儲器(qì)正在編程時(shí),緩沖區(qū)允許接收數(shù)據,且支持數(shù)據流式寫入。AT45DB161的初始化包括STM32的引腳配置和(hé)SPI2接口配置,初始化之後才能進行(xíng)讀寫操作(zuò)。讀寫頁操作(zuò)流程如下:

(1)讀頁操作(zuò)流程

①檢測AT45芯片是否忙。若忙,則繼續讀忙,直到芯片空(kōng)閑;若芯片空(kōng)閑,則執行(xíng)流程②。

②向AT45芯片寫入命令0x53和(hé)頁地址。0x53命令是将Flash中整頁的數(shù)據讀到緩沖區(qū)1中。

③向AT45芯片寫入命令0xD4和(hé)頁偏移地址及數(shù)據長度。0xD4命令是讀緩沖區(qū)1中的數(shù)據。

④讀頁操作(zuò)完成。

(2)寫頁操作(zuò)流程

①檢測AT45芯片是否忙。若忙,則繼續讀忙,直到芯片空(kōng)閑;若芯片空(kōng)閑,則執行(xíng)流程②。

②向AT45芯片寫入命令0x84、頁偏移地址及需要寫入的數(shù)據。0x84命令是将數(shù)據寫到緩沖區(qū)1中。

③向AT45芯片寫入命令0x83和(hé)頁地址。0x83命令是将緩沖區(qū)1中的數(shù)據寫到Flash指定的頁。使用0x83命令,寫入前不需要對頁進行(xíng)擦除操作(zuò)。

④寫頁操作(zuò)完成。

3 性能測試與實驗分析

3.1手持式閱讀器(qì)的功能測試

需要測試的功能有(yǒu)對M1卡讀寫、文件讀寫、與PC機數(shù)據通(tōng)信等功能。為(wèi)了便于測試上(shàng)述功能,将本設計(jì)應用在校(xiào)園消費系統上(shàng)進行(xíng)測試。測試步驟如下:

(1)用串口線将RFID閱讀器(qì)與PC機相連。運行(xíng)PC機的上(shàng)位機程序,設置串口參數(shù)為(wèi):波特率9 600 b/s,數(shù)據位8 bit,停止位1 bit,無校(xiào)驗位,無流控制(zhì)。

(2)對M1卡讀寫功能測試。通(tōng)過上(shàng)位機軟件發送指令和(hé)數(shù)據至閱讀器(qì),閱讀器(qì)将指定數(shù)據寫入M1卡。然後再将M1卡數(shù)據讀出,傳回給上(shàng)位機軟件顯示,并比較寫入數(shù)據和(hé)讀出數(shù)據,如圖6所示。

(3)文件讀寫測試。由于讀M1卡的數(shù)據以文件的形式存放在閱讀器(qì)的外部Flash中,該Flash由文件系統管理(lǐ)。用USB線連接閱讀器(qì)和(hé)PC機,閱讀器(qì)以盤符的形式在PC機上(shàng)顯示,從磁盤中将文件複制(zhì)到PC機上(shàng),用上(shàng)位機軟件打開(kāi)讀出軟件,記錄測試數(shù)據。

(4)與PC機數(shù)據通(tōng)信測試。以上(shàng)兩項測試通(tōng)過則表明(míng)閱讀器(qì)能與PC機進行(xíng)正常通(tōng)信。

3.2 性能測試與分析

系統的性能測試主要是锂電(diàn)池的續航時(shí)間(jiān)及RFID有(yǒu)效讀卡距離等。系統性能測試如表1所示。

(1)锂電(diàn)池的續航時(shí)間(jiān)需要分别測試最長待機時(shí)間(jiān)和(hé)連續工作(zuò)時(shí)間(jiān)。

①最長待機時(shí)間(jiān)測試:将锂電(diàn)池充滿電(diàn),閱讀器(qì)使用電(diàn)池供電(diàn),将閱讀器(qì)開(kāi)機而不使用,記錄待機時(shí)間(jiān)。

②連續工作(zuò)時(shí)間(jiān)測試:将锂電(diàn)池充滿電(diàn),閱讀器(qì)使用電(diàn)池供電(diàn),編寫一個(gè)測試程序,讓閱讀器(qì)定時(shí)每30 s讀取M1卡信息。記錄工作(zuò)時(shí)間(jiān)。

③用萬用表分别測量閱讀器(qì)的待機消耗電(diàn)流和(hé)工作(zuò)消耗電(diàn)流,并記錄電(diàn)流值。

(2)RFID有(yǒu)效讀卡距離。将閱讀器(qì)固定不動,M1卡平行(xíng)放在閱讀器(qì)天線平面的正上(shàng)方200 mm處,将M1卡緩慢向閱讀器(qì)移動,直到閱讀器(qì)能正确讀取M1卡中數(shù)據為(wèi)止。測量卡與閱讀器(qì)天線之間(jiān)的距離并記錄數(shù)據。

通(tōng)過對上(shàng)述的系統功能、性能進行(xíng)驗證,分析實驗測出的相應數(shù)據,系統的功能基本能達到了初期預設的技(jì)術(shù)指标。

本文設計(jì)的閱讀器(qì)有(yǒu)良好的人(rén)機交流界面,可(kě)通(tōng)過觸控操作(zuò),顯示屏可(kě)顯示M1卡中存儲信息。經過實驗證明(míng),在70 mm的範圍內(nèi)能準确讀寫M1卡中的數(shù)據。該閱讀器(qì)具有(yǒu)超長待機和(hé)低(dī)功耗的功能。經過實際功能測試,已成功地将該設計(jì)應用于校(xiào)園消費系統。

溝通(tōng)
logo
二維碼

微信咨詢

400-8508-778

24小(xiǎo)時(shí)免費熱線