基于ARM的雙頻RFID讀寫系統(tǒng)設(shè)計
3 系統(tǒng)的軟件設(shè)計
3.1 RFID 模塊操作
CR001 模塊與S3C44B0X 的串口(UART0)相連,在接收數(shù)據(jù)前首先要對UART0 進(jìn)行初始化。根據(jù)CR001 的使用規(guī)范,設(shè)置波特率為9600Baud,數(shù)據(jù)位為8 位,1 位停止位,無校驗位。為使ARM 對低頻RFID 卡及時作出響應(yīng),軟件采用中斷方式接收數(shù)據(jù),即當(dāng)S3C44B0X 的UART0 接收到數(shù)據(jù)時,產(chǎn)生中斷,在中斷服務(wù)程序中接收CR001 模塊的數(shù)據(jù)。
根據(jù) CR001 射頻讀寫模塊的使用規(guī)范,CR001 模塊輸出的數(shù)據(jù)包有5 個字段,即起始符(STX,02H)、數(shù)據(jù)(10 個ASCII 字符)、校驗和(2 個ASCII 字符)、LD 和LF(0DH和0AH)、結(jié)束符(ETX,03H)。因此在軟件設(shè)計中,當(dāng)收到UART0 的數(shù)據(jù)時,首先要判斷一個數(shù)據(jù)包的起始符和結(jié)束符,以確定一個數(shù)據(jù)幀的起止位置,然后再檢驗數(shù)據(jù)的校驗和是否正確。只有在接收的數(shù)據(jù)無誤時,再將其中的數(shù)據(jù)取出、存儲,并在LCD 上顯示。中斷服務(wù)軟件的流程如圖2 所示。
圖 2 CR001 模塊的中斷服務(wù)程序流程
CR013 射頻讀寫模塊是采用Philips 公司的Mifare 技術(shù)設(shè)計的微型嵌入式、非接觸式IC卡讀寫模塊,內(nèi)嵌ISO14443 Type A 協(xié)議解釋器,并可直接驅(qū)動射頻天線。這是一種以被動方式工作的卡,剛進(jìn)入天線有效感應(yīng)區(qū)的卡得電進(jìn)入空閑(IDLE)狀態(tài),它只吸收感應(yīng)區(qū)內(nèi)的磁場能量,不會首先發(fā)出信號。當(dāng)讀卡設(shè)備發(fā)出請求信號,符合條件的卡才會響應(yīng)。因此處理器與模塊之間以一問一答式的半雙工方式進(jìn)行通信。
對 CR013 模塊的讀寫過程相對較復(fù)雜,要執(zhí)行一系列的操作指令,包括詢卡、請求、防沖突、選卡、裝載密鑰、驗證密碼、讀塊、寫塊,這一系列的操作必須按固定的順序。尋卡時,處理器需要執(zhí)行請求、防沖突、選卡操作,與CR013 模塊建立起通信關(guān)系,在通過裝載密鑰、驗證密碼操作后,才可進(jìn)行讀卡或?qū)懣ú僮鳌?p> 1、防沖突
防沖突就是從多張卡中選出一張卡來操作,又叫防碰撞、防重疊。如果知道卡的序列號,則可跳過此步,直接執(zhí)行下一步選卡命令。若不知道卡的序列號,則必須調(diào)用防碰撞函數(shù),得到感應(yīng)區(qū)內(nèi)卡的序列號。若同時有多張卡在感應(yīng)區(qū)內(nèi),防碰撞函數(shù)能檢測到,并且從中選出一張卡的序列號來。
評論