基于RC522的讀卡器系統(tǒng)設(shè)計(jì)
NVM初始值為20,表示該命令只含有2個(gè)字節(jié),即“93+20”,不含UID數(shù)據(jù),MIFARE卡須返回全部UID字節(jié)作為響應(yīng)。若返回的UID數(shù)據(jù)有位沖突的情況發(fā)生,則根據(jù)沖突位置更新NVM值??芍谒阉餮h(huán)中,隨著UID已知比特?cái)?shù)的加入,NVM不斷增加,直到70為止。它表示除了“93+70”兩個(gè)命令字節(jié)外,還有UID0~UID3和BCC 5個(gè)UID數(shù)據(jù)字節(jié)。此時(shí)命令字節(jié)共有7個(gè),防沖突命令轉(zhuǎn)變?yōu)榭ㄆx擇命令。
防沖突流程中若遇到須發(fā)送和接收面向比特的幀的情況,則必須預(yù)先設(shè)置通信控制寄存器BitFramingReg。該寄存器可指明發(fā)送幀中最后一個(gè)字節(jié)和接收幀第一個(gè)字節(jié)中不完整的比特的位數(shù)。
2.2.2 讀卡和寫卡指令
14443A協(xié)議中并沒有具體規(guī)定對(duì)射頻卡的讀寫操作方式,故對(duì)每種卡的讀寫操作都必須考慮該卡的存儲(chǔ)區(qū)域組織形式和應(yīng)答形式。MIFARE卡內(nèi)部存儲(chǔ)器是由E2PROM組成的,共劃分為16個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊,每塊16字節(jié)。對(duì)E2PROM的讀寫都以塊為單位進(jìn)行,即每次讀/寫16字節(jié)。
以寫卡指令為例,MIFARE卡要求有兩步握手,指令格式分別如下所述。
Setp A:查詢塊狀態(tài)。
若塊準(zhǔn)備好,則MIFARE卡返回4比特應(yīng)答。若值為1010,則可進(jìn)行下一步操作;若值非1010,則表示塊未準(zhǔn)備好,必須等待直至塊準(zhǔn)備好為止。
Step B:寫數(shù)據(jù)。
若寫入成功,則MIFARE卡返回4比特應(yīng)答,值仍為1010;若非lOl0,則表示寫入失敗。
讀卡指令格式如下:
若執(zhí)行成功,則MIFARE卡返回18字節(jié)應(yīng)答比特。需要注意的是,其中只有16字節(jié)是讀取的塊數(shù)據(jù),另外2個(gè)字節(jié)為填充字節(jié)。若字節(jié)數(shù)不為18,則可判斷讀卡操作錯(cuò)誤。
MIFARE卡數(shù)據(jù)加密時(shí)以扇區(qū)為單位,一次加密認(rèn)證僅能操作一個(gè)扇區(qū)的數(shù)據(jù)。這為用戶實(shí)現(xiàn)“一卡通”功能提供了便利,用戶可在不同的扇區(qū)內(nèi)采用不同加密方式互不干擾地存放各種目的應(yīng)用數(shù)據(jù)。實(shí)際生活中常見的一種應(yīng)用是電子錢包,對(duì)卡的寫操作須按照一定的格式進(jìn)行。一個(gè)塊的數(shù)據(jù)組成如下:
注意:address值無意義,但value值寫入時(shí)必須在4~7字節(jié)中存入取反值。
2.3 讀卡器總體軟件設(shè)計(jì)
讀卡器的軟件設(shè)計(jì)思路是利用RC522的Tranceive命令作為標(biāo)準(zhǔn)函數(shù),通過調(diào)用此函數(shù)實(shí)現(xiàn)MIFARE卡操作指令。MIFARE卡的操作流程如圖6所示,其要點(diǎn)是將操作完成的卡轉(zhuǎn)入休眠態(tài),遞減可能發(fā)生沖突的卡片數(shù)目直至所有卡片操作完畢,此時(shí)防沖突函數(shù)無卡片應(yīng)答。
RC522芯片在每次使用前都必須復(fù)位,除了在復(fù)位引腳NRSTPD輸入從低電平至高電平的跳變沿外,還必須向RC522的命令寄存器CommandReg寫人軟復(fù)位命令代碼0x0I?進(jìn)行軟復(fù)位。在利用Rc522操作MIF’RAE卡之前,用戶必須正確設(shè)置芯片模擬部分的工作狀態(tài)。依筆者經(jīng)驗(yàn),一般情況下RC522調(diào)制、解調(diào)方式采用默認(rèn)設(shè)置即可;在106 kbps通信速率下可正常使用,但必須保證天線驅(qū)動(dòng)接口打開,可以通過設(shè)置Tx—controlReg寄存器實(shí)現(xiàn)。另外,由于14443A協(xié)議采用調(diào)制深度為100}《的ASK調(diào)制,這一點(diǎn)與默認(rèn)設(shè)置不同,因此必須相應(yīng)設(shè)置TxASKRc毽來實(shí)現(xiàn)該種調(diào)制方式。
RC522的通信參數(shù)設(shè)置很復(fù)雜,可以調(diào)控調(diào)制相位、調(diào)制位寬、射頻信號(hào)檢測強(qiáng)度、發(fā)送/接收速度等設(shè)置。在硬件調(diào)試過程中,用戶可根據(jù)實(shí)際情況選用適合自身使用的設(shè)置形式。
結(jié)語
本文設(shè)計(jì)的讀卡器在106 kbps通信速率下讀卡距離達(dá)50 mm,可以實(shí)現(xiàn)考勤、電子錢包功能;整個(gè)讀卡器采用低功耗元件,可以作為一個(gè)網(wǎng)絡(luò)終端、以電池作后備電源可靠地工作。對(duì)于Rc522的應(yīng)用,防沖突和通信接口的設(shè)置是重點(diǎn)。不同的射頻卡協(xié)議,防沖突流程各不相同,通信接口也會(huì)有差異,但修改Rc522的相關(guān)設(shè)置即可使物理接口滿足協(xié)議要求。對(duì)于防沖突處理,Rc522{支持基于比特沖突檢測的處理方式,不可處理類似144。13B的ALOHA時(shí)隙方式。
評(píng)論