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