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