基于A(yíng)RM的雙頻RFID讀寫(xiě)設計
1 引言
RFID(Radio Frequency Identification Technology,無(wú)線(xiàn)射頻識別技術(shù))由于具有高速移動(dòng)物體識別、多目標識別和非接觸識別等特點(diǎn),顯示出巨大的發(fā)展潛力和應用空間,被認為是21 世紀最有發(fā)展前途的信息技術(shù)之一。射頻識別技術(shù)雖然有很多優(yōu)點(diǎn),但其技術(shù)本身也有局限性。對RFID 系統而言,低頻系統具有良好的對水、肉體等可導媒介的穿透力,而速度、距離、抗沖突性較差;而高頻系統則正好相反。如能結合各種頻率系統,用其所長(cháng),則可以使RFID 適應多種場(chǎng)合,拓展其應用范圍。本文設計的系統正是基于這一出發(fā)點(diǎn),將低頻和高頻二種頻率的RFID 模塊組合在一起,構成雙頻系統,使系統兼具低頻可穿透性和高頻良好的距離、速度、抗沖突性等方面的優(yōu)勢。鑒于目前國內市場(chǎng)上應用最為廣泛的射頻卡和讀寫(xiě)器實(shí)現方法,本文采用ARM 嵌入式系統作為微控制器,設計了能對低頻125KHz 和高頻13.56MHz 的二種頻率RFID 卡操作的讀寫(xiě)模塊,實(shí)現了的雙頻 RFID 讀寫(xiě)系統。
2 系統設計
由于ARM 微處理器具有運行速度快,接口功能豐富,其應用越來(lái)越廣泛。本文采用三星公司的S3C44B0X,它是ARM7 系列的低功耗的32 位RISC 處理器,具有 ARM7TDMI內核,有豐富的內置部件,包括8K 字節Cache 和內部SRAM,帶自動(dòng)握手聯(lián)絡(luò )的2 通道UART,定時(shí)器,通用 I/O 口,ADC 和I2C-BUS 控制器等。尤其是它的內置液晶顯示器接口,可直接連接LCD 顯示器,無(wú)需專(zhuān)用LCD 顯示器接口芯片,可使成本降低,很適合在本系統中使用。讀寫(xiě)系統的結構如圖1 所示。
圖1 系統結構框圖
整個(gè)系統由ARM 嵌入式系統(包括S3C44B0X,SDRAM 存儲器和FLASH 存儲器),低頻RFID 卡讀寫(xiě)模塊,高頻RFID 卡讀寫(xiě)模塊,USB 接口,LCD 顯示器以及蜂鳴器、狀態(tài)指示燈等組成。RFID 模塊是北京華閏得公司開(kāi)發(fā)的具有串行數據通信接口的模塊,低頻讀寫(xiě)模塊是 CR001,為工作于125kHz 的EM4001 卡;高頻模塊是CR013,為工作于13.56MHz的MF 卡。由于RFID 模塊具有TTL 電平的串行通信接口,這樣ARM 微處理器可直接通過(guò)片上的二個(gè)UART 接口與其連接,不需要電平轉換即可輕松實(shí)現與RFID 模塊的通信。嵌入式系統與 PC 機的連接則通過(guò)USB 接口實(shí)現。
因為低頻 RFID 卡一般都是只讀卡,進(jìn)入讀卡器磁場(chǎng)范圍后,就自動(dòng)發(fā)出信號。ARM微處理器通過(guò)不斷檢測端口捕捉信號,一旦讀到卡,就讀取信息,并在LCD 上顯示。對于高頻卡,可根據需要進(jìn)行讀或寫(xiě)操作。
LCD 顯示器采用320*240 點(diǎn)陣的STN 型彩色液晶模塊,可直接與S3C44B0X 連接,成本也較低。對LCD 的顯示控制直接使用 S3C44B0X 內部的LCD 驅動(dòng)控制器實(shí)現,它能自動(dòng)產(chǎn)生LCD 驅動(dòng)控制所需的信號。在這種接口方式下,LCD 顯示緩沖區映射在系統的存儲器空間上,程序只需將像素點(diǎn)內容寫(xiě)入存儲器對應地址就可以實(shí)現對應LCD 屏上像素點(diǎn)顏色的顯示刷新,控制十分方便。
鍵盤(pán)和狀態(tài)指示燈的操作控制采用 ZLG7290 實(shí)現。ZLG7290 是一款功能較強的按鍵處理和7 段數碼管顯示專(zhuān)業(yè)芯片,提供了I2C 串行接口和鍵盤(pán)中斷信號,可方便地與S3C44B0X連接。
在上位機(PC 機)上,通過(guò)設計專(zhuān)門(mén)的軟件實(shí)現對RFID 卡的讀寫(xiě)操作,并對RFID 卡進(jìn)行管理。由于PC 機功能強大,如再配上數據庫系統,可以對大量用戶(hù)的數據和信息進(jìn)行存儲和查詢(xún)等處理,滿(mǎn)足多種應用的需要。
3 系統的軟件設計
3.1 RFID 模塊操作
CR001 模塊與S3C44B0X 的串口(UART0)相連,在接收數據前首先要對UART0 進(jìn)行初始化。根據CR001 的使用規范,設置波特率為9600Baud,數據位為8 位,1 位停止位,無(wú)校驗位。為使ARM 對低頻RFID 卡及時(shí)作出響應,軟件采用中斷方式接收數據,即當 S3C44B0X 的UART0 接收到數據時(shí),產(chǎn)生中斷,在中斷服務(wù)程序中接收CR001 模塊的數據。
根據 CR001 射頻讀寫(xiě)模塊的使用規范,CR001 模塊輸出的數據包有5 個(gè)字段,即起始符(STX,02H)、數據(10 個(gè)ASCII 字符)、校驗和(2 個(gè) ASCII 字符)、LD 和LF(0DH和0AH)、結束符(ETX,03H)。因此在軟件設計中,當收到UART0 的數據時(shí),首先要判斷一個(gè)數據包的起始符和結束符,以確定一個(gè)數據幀的起止位置,然后再檢驗數據的校驗和是否正確。只有在接收的數據無(wú)誤時(shí),再將其中的數據取出、存儲,并在LCD 上顯示。中斷服務(wù)軟件的流程如圖2 所示。
圖 2 CR001 模塊的中斷服務(wù)程序流程
CR013 射頻讀寫(xiě)模塊是采用Philips 公司的Mifare 技術(shù)設計的微型嵌入式、非接觸式IC卡讀寫(xiě)模塊,內嵌 ISO14443 Type A 協(xié)議解釋器,并可直接驅動(dòng)射頻天線(xiàn)。這是一種以被動(dòng)方式工作的卡,剛進(jìn)入天線(xiàn)有效感應區的卡得電進(jìn)入空閑(IDLE)狀態(tài),它只吸收感應區內的磁場(chǎng)能量,不會(huì )首先發(fā)出信號。當讀卡設備發(fā)出請求信號,符合條件的卡才會(huì )響應。因此處理器與模塊之間以一問(wèn)一答式的半雙工方式進(jìn)行通信。
對 CR013 模塊的讀寫(xiě)過(guò)程相對較復雜,要執行一系列的操作指令,包括詢(xún)卡、請求、防沖突、選卡、裝載密鑰、驗證密碼、讀塊、寫(xiě)塊,這一系列的操作必須按固定的順序。尋卡時(shí),處理器需要執行請求、防沖突、選卡操作,與CR013 模塊建立起通信關(guān)系,在通過(guò)裝載密鑰、驗證密碼操作后,才可進(jìn)行讀卡或寫(xiě)卡操作。
1)、防沖突
防沖突就是從多張卡中選出一張卡來(lái)操作,又叫防碰撞、防重疊。如果知道卡的序列號,則可跳過(guò)此步,直接執行下一步選卡命令。若不知道卡的序列號,則必須調用防碰撞函數,得到感應區內卡的序列號。若同時(shí)有多張卡在感應區內,防碰撞函數能檢測到,并且從中選出一張卡的序列號來(lái)。
2)、選擇卡片
根據上一步收到的卡號,發(fā)出選卡命令。經(jīng)過(guò)這一步后才真正選中了一張要操作的卡,以后的操作都對這張卡進(jìn)行。
整個(gè)尋卡過(guò)程包括請求、防沖突、選卡三個(gè)步驟。當微處理器發(fā)出尋卡命令時(shí),實(shí)際上微處理器執行了以上3 個(gè)步驟。為防止死鎖,本文設置每步操作的最大次數為3 次,若3次不成功則尋卡失敗。程序流程如圖3 所示。
圖3 CR013 模塊尋卡程序流程
3)、密鑰裝載和驗證密碼
微處理器發(fā)出讀、寫(xiě)命令后,在進(jìn)行讀寫(xiě)操作前必須先執行密鑰裝載和驗證密碼。驗證密碼又叫認證、證實(shí)。模塊將裝載到讀卡芯片FM1702SL 中的密碼與卡中指定扇區的密碼進(jìn)行認證,如果密碼相同,則認證成功,卡允許進(jìn)行讀寫(xiě)操作。
3.2 LCD 顯示軟件設計
LCD 用于顯示用戶(hù)操作界面,為此需要在屏幕上繪制圖形,顯示數據和文字。在對LCD 控制器進(jìn)行操作前,首先要對LCD 控制器的專(zhuān)用寄存器進(jìn)行初始化,內容包括定義3個(gè)LCD 控制寄存器,3 個(gè)幀緩沖區地址寄存器和3 個(gè)顏色查找表寄存器。
為了在 LCD 上顯示字符和圖形,需要建立繪圖和字符顯示庫函數。繪圖函數包含一些基本的繪圖功能,如畫(huà)點(diǎn)、畫(huà)線(xiàn)、畫(huà)矩形框和區域填充等。其中畫(huà)點(diǎn)是最基本的函數,其它函數都可以調用畫(huà)點(diǎn)函數實(shí)現。
為了在 LCD 上顯示字符,還要建立ASCII 字符和漢字字符的點(diǎn)陣庫和顯示函數。顯示ASCII 字符的原理是在特定的坐標位置畫(huà)點(diǎn),形成人們可以識別的字符圖形。點(diǎn)的坐標根據建立的ASCII 字符點(diǎn)陣庫來(lái)確定。ASCII 字符的點(diǎn)陣庫可以根據字符的點(diǎn)陣位置生成點(diǎn)陣數組供調用。漢字的顯示原理與ASCII 字符相同,事先也要建立漢字點(diǎn)陣字庫,這一過(guò)程可通過(guò)專(zhuān)用的字庫生成軟件實(shí)現。另外,為了節省存儲器空間,只需建立本系統要用到的漢字小字庫,而不必生成所有常用字的點(diǎn)陣。
3.3 鍵盤(pán)和指示燈的軟件設計
對鍵盤(pán)和指示燈的操作控制是由 ZLG7290 實(shí)現的,由于S3C44B0X 具有I2C 接口,因此可直接與ZLG7290 連接。編程時(shí)首先要對 I2C 總線(xiàn)進(jìn)行初始化,然后打開(kāi)鍵盤(pán)中斷。當鍵盤(pán)有鍵被按下時(shí),ZLG7290 的INT 引腳會(huì )產(chǎn)生一個(gè)低電平的中斷請求信號。在A(yíng)RM 的中斷程序中通過(guò)I2C 總線(xiàn)讀取鍵值,再根據鍵值完成相應功能。
3.4 USB 接口通信
為方便與 PC 機接口,本系統采用應用廣泛的USB 接口與PC 機通信。因S3C44B0X 本身不帶USB 接口,必須要進(jìn)行擴展。但是,USB 接口協(xié)議非常復雜,固件編程和WDM 驅動(dòng)程序的編寫(xiě)都是相當麻煩的工作。為降了設計難度,縮短開(kāi)發(fā)周期,本文采用哈爾濱訊通公司的通用串行總線(xiàn)模塊USB100。該模塊內部封裝了USB 協(xié)議和細節,即插即用,完全滿(mǎn)足USB1.1 標準,對 USB 接口的操作如同對外部存儲器操作一樣方便,無(wú)需任何外接元件。
USB100 模塊有2 根狀態(tài)信號RXF 和TXE,用于與ARM 聯(lián)絡(luò )。RXF 為低表示模塊有數據輸出,ARM 可以讀取數據;TXE 則表示USB100 發(fā)送緩沖區的狀態(tài),TXE 為低表示USB100 發(fā)送緩沖器未滿(mǎn),可以向發(fā)送緩沖區寫(xiě)數據。在編程時(shí),可以采用查詢(xún)方式實(shí)現數據的收發(fā)。
3.5 RTC 實(shí)時(shí)時(shí)鐘顯示功能
為了顯示讀卡和寫(xiě)卡的時(shí)間,需要使用實(shí)時(shí)時(shí)鐘(RTC)。S3C44B0X 具有一個(gè)獨立的RTC 功能模塊,能夠像鐘表和日歷一樣保存并自動(dòng)計算時(shí)間。RTC 的寄存器保存了表示時(shí)間的8 位BCD 碼數據,包括秒、分、時(shí)、日、星期、月和年,編程時(shí)主要是對這些參數進(jìn)行初始化設置。在LCD 上顯示實(shí)時(shí)時(shí)鐘時(shí),需定時(shí)地從上述的寄存器中取出相應的數據。由于LCD 上字符是根據ASCII 碼顯示的,而RTC 的寄存器中存放的時(shí)間參數都以 BCD 碼形式存儲,因此在LCD 顯示日期和時(shí)間之前,必須先對時(shí)間數據進(jìn)行格式轉換,即將BCD碼轉換為ASCII 碼。
3.6 PC 機軟件
PC 機軟件基于windows 操作系統,采用Visual C# 2005 進(jìn)行編程。軟件的功能主要包括在PC 機上顯示操作面板,通過(guò)與 ARM 嵌入式系統通信實(shí)現對RFID 卡的讀寫(xiě)操作,并將卡的相關(guān)信息在PC 機上顯示;此外,軟件還能訪(fǎng)問(wèn)數據庫,將從卡中讀取的數據存入數據庫中,或將數據庫中的取出數據寫(xiě)入RFID 卡,還能根據用戶(hù)的需要查詢(xún)相關(guān)信息。數據庫采用Microsoft office Access 數據庫系統,并采用結構化查詢(xún)語(yǔ)言(SQL)對數據庫訪(fǎng)問(wèn)。
4 結束語(yǔ)
本文以 ARM 微處理器S3C44B0X 為核心,設計實(shí)現了RFID 雙頻讀寫(xiě)器系統。在對高頻RFID 卡的尋卡過(guò)程中,通過(guò)對最大操作次數的限制,有效地防止了死鎖。系統具有LCD 顯示器,通過(guò)鍵盤(pán)操作便可對RFID 卡的進(jìn)行讀寫(xiě)。設計的USB 接口可方便地與PC機連接,在PC 機上實(shí)現對 RFID 卡的操作。系統功能強,使用靈活,可滿(mǎn)足多種應用場(chǎng)合。由于采用了低成本的ARM 微處理器,簡(jiǎn)化了硬件,提高了系統的性?xún)r(jià)比。
評論