基于ARM的雙頻RFID讀寫(xiě)系統(tǒng)設(shè)計(jì)
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 CR013 模塊尋卡程序流程
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à)比。
評(píng)論