基于RC522的讀卡器系統設計

NVM初始值為20,表示該命令只含有2個(gè)字節,即“93+20”,不含UID數據,MIFARE卡須返回全部UID字節作為響應。若返回的UID數據有位沖突的情況發(fā)生,則根據沖突位置更新NVM值??芍谒阉餮h(huán)中,隨著(zhù)UID已知比特數的加入,NVM不斷增加,直到70為止。它表示除了“93+70”兩個(gè)命令字節外,還有UID0~UID3和BCC 5個(gè)UID數據字節。此時(shí)命令字節共有7個(gè),防沖突命令轉變?yōu)榭ㄆx擇命令。
防沖突流程中若遇到須發(fā)送和接收面向比特的幀的情況,則必須預先設置通信控制寄存器BitFramingReg。該寄存器可指明發(fā)送幀中最后一個(gè)字節和接收幀第一個(gè)字節中不完整的比特的位數。
2.2.2 讀卡和寫(xiě)卡指令
14443A協(xié)議中并沒(méi)有具體規定對射頻卡的讀寫(xiě)操作方式,故對每種卡的讀寫(xiě)操作都必須考慮該卡的存儲區域組織形式和應答形式。MIFARE卡內部存儲器是由E2PROM組成的,共劃分為16個(gè)扇區,每個(gè)扇區4個(gè)塊,每塊16字節。對E2PROM的讀寫(xiě)都以塊為單位進(jìn)行,即每次讀/寫(xiě)16字節。
以寫(xiě)卡指令為例,MIFARE卡要求有兩步握手,指令格式分別如下所述。
Setp A:查詢(xún)塊狀態(tài)。

若塊準備好,則MIFARE卡返回4比特應答。若值為1010,則可進(jìn)行下一步操作;若值非1010,則表示塊未準備好,必須等待直至塊準備好為止。
Step B:寫(xiě)數據。

若寫(xiě)入成功,則MIFARE卡返回4比特應答,值仍為1010;若非lOl0,則表示寫(xiě)入失敗。
讀卡指令格式如下:

若執行成功,則MIFARE卡返回18字節應答比特。需要注意的是,其中只有16字節是讀取的塊數據,另外2個(gè)字節為填充字節。若字節數不為18,則可判斷讀卡操作錯誤。
MIFARE卡數據加密時(shí)以扇區為單位,一次加密認證僅能操作一個(gè)扇區的數據。這為用戶(hù)實(shí)現“一卡通”功能提供了便利,用戶(hù)可在不同的扇區內采用不同加密方式互不干擾地存放各種目的應用數據。實(shí)際生活中常見(jiàn)的一種應用是電子錢(qián)包,對卡的寫(xiě)操作須按照一定的格式進(jìn)行。一個(gè)塊的數據組成如下:

注意:address值無(wú)意義,但value值寫(xiě)入時(shí)必須在4~7字節中存入取反值。
讀卡器的軟件設計思路是利用RC522的Tranceive命令作為標準函數,通過(guò)調用此函數實(shí)現MIFARE卡操作指令。MIFARE卡的操作流程如圖6所示,其要點(diǎn)是將操作完成的卡轉入休眠態(tài),遞減可能發(fā)生沖突的卡片數目直至所有卡片操作完畢,此時(shí)防沖突函數無(wú)卡片應答。

RC522芯片在每次使用前都必須復位,除了在復位引腳NRSTPD輸入從低電平至高電平的跳變沿外,還必須向RC522的命令寄存器CommandReg寫(xiě)人軟復位命令代碼0x0I?進(jìn)行軟復位。在利用Rc522操作MIF’RAE卡之前,用戶(hù)必須正確設置芯片模擬部分的工作狀態(tài)。依筆者經(jīng)驗,一般情況下RC522調制、解調方式采用默認設置即可;在106 kbps通信速率下可正常使用,但必須保證天線(xiàn)驅動(dòng)接口打開(kāi),可以通過(guò)設置Tx—controlReg寄存器實(shí)現。另外,由于14443A協(xié)議采用調制深度為100}《的ASK調制,這一點(diǎn)與默認設置不同,因此必須相應設置TxASKRc毽來(lái)實(shí)現該種調制方式。
RC522的通信參數設置很復雜,可以調控調制相位、調制位寬、射頻信號檢測強度、發(fā)送/接收速度等設置。在硬件調試過(guò)程中,用戶(hù)可根據實(shí)際情況選用適合自身使用的設置形式。
結語(yǔ)
本文設計的讀卡器在106 kbps通信速率下讀卡距離達50 mm,可以實(shí)現考勤、電子錢(qián)包功能;整個(gè)讀卡器采用低功耗元件,可以作為一個(gè)網(wǎng)絡(luò )終端、以電池作后備電源可靠地工作。對于Rc522的應用,防沖突和通信接口的設置是重點(diǎn)。不同的射頻卡協(xié)議,防沖突流程各不相同,通信接口也會(huì )有差異,但修改Rc522的相關(guān)設置即可使物理接口滿(mǎn)足協(xié)議要求。對于防沖突處理,Rc522{支持基于比特沖突檢測的處理方式,不可處理類(lèi)似144。13B的ALOHA時(shí)隙方式。
評論