天天看點

基于STM32的RFID監控系統設計

部落客福利:100G+電子設計學習資源包!

​​http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect​​ --------------------------------------------------------------------------------------------------------------------------

Radio Frequency Identification技術,即RFID技術又稱為射頻識别技術和無線射頻識别技術,是一項應用非常廣泛的、發展中的技術,發展至今,其曆史已臨近百年。随着其發展,人們對與系統的安全性,以及标簽體積樣式和存儲容量等方面都有了更高的要求。本文以STM32F103RCT6微處理器為核心,配合CR95HF射頻晶片構成符合ISO/IEC 14443标準的便攜讀卡器。

基于STM32的RFID監控系統設計

系統終端硬體包含兩部分:基于STM32103RCT6處理器的控制單元和基于RC522的射頻單元。控制單元是整個終端的控制樞紐;控制闆內建了USB了接口、RS232接口LCD觸摸屏接口,友善了系統調試和二次開發。射頻單元以RC522為核心,配置了低通濾波器電路和功率放大器電路,能夠滿足ISO/IEC14443A協定的标簽。

01

 RFID系統的構成 

RFID系統是由讀寫器、電子标簽兩大部分組成的。在本論文中,讀寫器是很重要的一部分。系統中電子标簽的作用是儲存設備的資訊等,是整個RFID系統的資訊載體組成,電子标簽内的資料由使用者用讀寫器自行寫入。讀寫器是RFID系統的核心,能夠由它來完成對電子标簽資訊的讀寫,讀寫器與電子标簽的通信必須要按照統一的協定标準,否則無法實作對标簽資訊的讀寫。

閱讀器由于使用的不一樣的結構和技術能夠分成讀或者讀/寫裝置,它是操控和處理RFID系統消息的重要部分。閱讀器一般是由耦合子產品、收發子產品、控制子產品和接口單元組合而來。閱讀器和應答器之間通常使用半雙工通信模式進行消息的互換,在這基礎上閱讀器利用耦合給無源應答器提供能量和時序。在正常使用過程中,能夠更有效的利用Ethernet或WLAN等完成對物體識别資訊的采集、處理及遠端傳送等管理功能。應答器承載着RFID系統的内部消息,應答器一般都是由耦合原件(線圈、微帶天線等)和微晶片組成無源單元。

而電子标簽分為兩部分即電子晶片部分和天線部分,電子晶片主要用于存儲資料,而天線主要作用為收發在标簽和讀取器之間的射頻信号。RFID系統組成結構圖如下圖所示。

基于STM32的RFID監控系統設計

02

 RFID讀寫器工作原理

RFID讀寫器的指令收發鍊路由發射機和接收機兩部分組成,發射機部分主要功能是産生射頻信号,讓系統的前端天線發射出去。此部分主要由調制器、振蕩器、上變頻、帶通濾波器和高頻功率放大等組成。其結構圖如圖所示。

基于STM32的RFID監控系統設計

接收機部分的功能與發射機恰好相反。接收機主要是接收射頻信号。天線接收标簽向空間的反向散射信号,經過帶通濾波器濾除高頻信号後,然後低噪聲放大器将接收到的信号進行放大,接着數據機對放大的信号進行解調,最後将射頻信号變為數字基帶信号。接收機的方框圖如下圖所示。

基于STM32的RFID監控系統設計

本設計采用ARM處理器和RFID射頻處理單元相結合的方案。這種方案開發難度相對較低,開發周期較短,釆用ARM處理器能獲得較高的性能和豐富的接口,很好滿足功能需求。設計中将控制單元和射頻單元分開,做成兩個電路闆。巡檢終端結構如下圖所示。

基于STM32的RFID監控系統設計

03

 控制單元總體結構 

控制單元電路包括STM32F103RCT6處理器及其外部接口設計。重點包括GPRS接口電路設計,GPS電路接口設計,RFID接口電路設計。

STM32F103RCT6外部配置電路主要包括FLASH存儲電路、SDRAM電路、RS232接口電路、觸摸屏接口電路、USB接口電路,電源子產品電路和JTAG調試接口電路等。控制單元硬體電路圖如下圖所示。

基于STM32的RFID監控系統設計

主處理器STM32F103RCT6:整個電路的控制中心,實作與RFID子產品指令交和資訊處理;序列槽、JTAG接口主要實作軟體調試,為未來功能拓展預留調試接口;USB接口提供多種方式的資訊傳輸;電源管理子產品、FLASH存儲子產品是STM32F103RCT6正常工作的必要電路;LCD觸摸屏和按鍵接口為整個終端提供了良好的人機接口,友善操作使用。

04

 程式設計的總體思路 

本RFID系統的目的是通過終端掃描裝置标簽的RFID編号,将裝置的編号、記錄時間及裝置的狀态資訊傳送到處理器中,總體的變成思路如圖所示,是以本系統的程式設計需要兩個部分,一個是閱讀器判斷标簽是否注冊的介紹,另一個是Key0判斷卡片是否上鎖的介紹。使用的是MDK5.10對STM32103RCT6進行程式設計,上位機用的是C#進行程式設計。

基于STM32的RFID監控系統設計

Stm32與M1卡通信的流程圖如圖所示:

基于STM32的RFID監控系統設計

(1)尋卡

M1射頻卡的通訊協定和通訊波特率是定義好的,當有卡片進入讀寫器的操作範圍時,讀寫器以特定的協定與它通訊,進而确定該卡是否為M1射頻卡,即驗證卡片的卡型。調用的函數及參數解釋如下所示:

參數說明: req_code[IN]:尋卡方式

0x52 = 尋感應區内所有符合14443A标準的卡

0x26 = 尋未進入休眠狀态的卡

pTagType[OUT]:卡片類型代碼

0x4400 = Mifare_UltraLight

0x0400 = Mifare_One(S50)

0x0200 = Mifare_One(S70)

0x0800 = Mifare_Pro(X)

0x4403 = Mifare_DESFire

傳回: 成功傳回MI_OK

char PcdRequest(u8 req_code,u8 *pTagType)

向 FIFO 中寫入 PICC_REQIDL 指令,通過 PCD_TRANSCEIVE 指令将 FIFO 中資料通過天線發送出去,此時若有卡在天線作用範圍内,将識别指令,并傳回卡類型;由于本次采用的是M1卡,是以傳回的值是0x0400,具體程式請參考附錄。

(2)防沖突機制

當有多張卡進入讀寫器操作範圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會傳回被選卡的序列号。調用的函數及參數解釋如下所示:

參數說明: pSnr[OUT]:卡片序列号,4位元組

傳回: 成功傳回MI_OK

char PcdAnticoll(u8 *pSnr)

向 FIFO 中寫入 PICC_ANTICOLL + 0x20 ,通過 PCD_TRANSCEIVE 指令将 FIFO 中資料通過天線發送出去,卡傳回卡序列号由于是非接觸式的,同一時間天線作用範圍内可能不隻一張卡時,即有多于一張的MIFARE 1 卡發回了卡序列号應答,則發生了沖突。此時,由于每張卡的卡序列号各不相同, MCM 接收到的資訊 ( 即卡序列号 ) 至少有 1 位既是 0 又是 1( 即該位的前、後半部都有副載波調制 ) , MCM 找到第 1 個沖突位将其置 1( 排除該位為 0 的卡 ) ,然後查第 2 個,依次排除,最後不再有沖突的 SN 即為被選中的卡,具體程式請參考附錄。

(3)選擇卡片

選擇被選中的卡的序列号,并同時傳回卡的容量代碼。調用的函數及參數解釋如下所示:

參數說明: pSnr[IN]:卡片序列号,4位元組

傳回: 成功傳回MI_OK

char PcdSelect(u8 *pSnr)

向 FIFO 中寫入 PICC_SElECTTAG+0x70+卡序列号,通過 PCD_TRANSCEIVE 指令将 FIFO中資料通過天線發送出去,卡傳回卡容量(對于 MIFARE 1 卡來說,可能為 88H 或08H ),具體程式請參考附錄。

(4)三次互相确認(驗證卡片密碼)

標明要處理的卡片之後,讀寫器就确定要通路的扇區号,并對該扇區密碼進行密碼校驗,在三次互相認證之後就可以通過加密流進行通訊。(在選擇另一扇區時,則必須進行另一扇區密碼校驗),具體程式請參考附錄。調用的函數及參數解釋如下所示:

功能:驗證卡片密碼

參數說明: auth_mode[IN]: 密碼驗證模式

0x60 = 驗證A密鑰

0x61 = 驗證B密鑰

addr[IN]:塊位址

pKey[IN]:密碼

pSnr[IN]:卡片序列号,4位元組

傳回: 成功傳回MI_OK

char PcdAuthState(u8 auth_mode,

u8 addr,u8 *pKey,u8 *pSnr)

(5)對資料塊的操作

由于本程式隻涉及到對M1卡的讀資料應用,是以隻介紹有關讀資料函數的操作。調用的函數及參數解釋如下所示:

功能:讀取M1卡一塊資料

參數說明: addr[IN]:塊位址

p [OUT]:讀出的資料,16位元組