基于ARM的雙頻RFID讀寫系統(tǒng)設(shè)計(jì)
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 射頻讀寫模塊的使用規(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 所示。
圖 2 CR001 模塊的中斷服務(wù)程序流程
CR013 射頻讀寫模塊是采用Philips 公司的Mifare 技術(shù)設(shè)計(jì)的微型嵌入式、非接觸式IC卡讀寫模塊,內(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)。因此處理器與模塊之間以一問一答式的半雙工方式進(jìn)行通信。
對(duì) CR013 模塊的讀寫過程相對(duì)較復(fù)雜,要執(zhí)行一系列的操作指令,包括詢卡、請(qǐng)求、防沖突、選卡、裝載密鑰、驗(yàn)證密碼、讀塊、寫塊,這一系列的操作必須按固定的順序。尋卡時(shí),處理器需要執(zhí)行請(qǐng)求、防沖突、選卡操作,與CR013 模塊建立起通信關(guān)系,在通過裝載密鑰、驗(yàn)證密碼操作后,才可進(jìn)行讀卡或?qū)懣ú僮鳌?p> 1、防沖突
防沖突就是從多張卡中選出一張卡來操作,又叫防碰撞、防重疊。如果知道卡的序列號(hào),則可跳過此步,直接執(zhí)行下一步選卡命令。若不知道卡的序列號(hào),則必須調(diào)用防碰撞函數(shù),得到感應(yīng)區(qū)內(nèi)卡的序列號(hào)。若同時(shí)有多張卡在感應(yīng)區(qū)內(nèi),防碰撞函數(shù)能檢測(cè)到,并且從中選出一張卡的序列號(hào)來。
評(píng)論