《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于RC522的讀卡器設計
基于RC522的讀卡器設計
摘要: 本文設計的讀卡器系統(tǒng)以PICl6F7x單片機作為主控芯片,,選用MIFARE S50卡片,讀卡器與卡片間以106kbps速率通信,,同時實現(xiàn)讀卡過程中的防沖突處理和對卡E2PROM塊內容的讀/寫等功能,。讀卡器內部設置了FLASH存儲器以存放卡數(shù)據(jù),,在FLASH容量滿的情況下可通過讀卡器的以太網(wǎng)口讀出全部數(shù)據(jù)到管理中心上位機,便于建立對卡數(shù)據(jù)的綜合管理系統(tǒng),。
Abstract:
Key words :

本文設計的讀卡器系統(tǒng)以PICl6F7x單片機作為主控芯片,選用MIFARE S50卡片,,讀卡器與卡片間以106kbps速率通信,,同時實現(xiàn)讀卡過程中的防沖突處理和對卡E2PROM塊內容的讀/寫等功能。讀卡器內部設置了FLASH存儲器以存放卡數(shù)據(jù),,在FLASH容量滿的情況下可通過讀卡器的以太網(wǎng)口讀出全部數(shù)據(jù)到管理中心上位機,,便于建立對卡數(shù)據(jù)的綜合管理系統(tǒng)。

1 硬件系統(tǒng)設計

讀卡器硬件框圖如圖1所示,。

單片機PICl6F7x通過SPI總線與RC522和FLASH芯片AT45D011相連,,同時用簡化的ISA總線連接以太網(wǎng)接口芯片C58900,以提供連接到局域網(wǎng)的能力,。AT45D0ll存儲容量為lMb,,可同時存儲7400多組MIFARE的E2PROM塊和UID號,提供了足夠讀卡器一天內讀取的信息量的存放容量,。對于RC522天線部分的設計,,PHILIPS公司有專門的手冊詳細介紹,,本文不再贅述。RC522的SPI總線接口有其自身的時序要求,。它只能工作于從模式,,最高傳輸速率為 10 Mbps,數(shù)據(jù)與時鐘相位關系滿足“空閑態(tài)時鐘為低電平,,在時鐘上升沿同步接收和發(fā)送數(shù)據(jù),,在下降沿數(shù)據(jù)轉換”的約束關系。PICl6F7x系列單片機的片上外設包括1個SSP模塊,。該模塊可配置為SPI接口使用,,通過相應的寄存器可控制SPI接口的數(shù)據(jù)傳輸率、數(shù)據(jù)一時鐘相位天系等通信參數(shù),。本文中配置 SSP模塊工作于SPI主模式下,,時鐘為1/4單片機主頻,接收和發(fā)送數(shù)據(jù)都在時鐘上升沿發(fā)生,。

需要注意的是,,由于RC522支持的數(shù)字接口形式多種多樣,因此芯片在每次復位時都會檢測外部引腳連接關系,。對于SPI接口,,RC522的相關引腳必須按照圖2所示的連接關系配置。

除了通用的4條SPI信號線(時鐘線SCK,、輸入數(shù)據(jù)線MOSI,、輸出數(shù)據(jù)線MOSO和選通線NSS)以外,RC522要求額外的2個引腳I2C和 EA分別固定接低電平和高電平,。這2個引腳不參與SPI總線傳輸,,只起設定RC522數(shù)字界面采用SPI接口的作用。另外,,片選信號必須保證在寫入數(shù)據(jù)流期問為低電平,,而在無數(shù)據(jù)流寫入時則為高電平;用戶不得為節(jié)省PIC單片機引腳資源而一直將NSS置為低電平。

2 軟件系統(tǒng)設計

相對于PHILIPS公司生產(chǎn)的其他14443基站芯片(如RC500,、RC530等),,RC522簡化了內部系統(tǒng)結構,去掉了片內E2PROM,。從而大大縮減了芯片命令集,。另外,對載波調制電路,,發(fā)送電路和解調,、解碼電路的控制也相應簡化,去掉了校準接收電路I時鐘、Q時鐘,、校準發(fā)送與接收時鐘相位等繁瑣的操作,。一般而言,單片機與RC522的通信流程如圖3所示,。

根據(jù)RC522和MIFARE卡問傳送的控制流數(shù)據(jù)的不同,,通信過程中可能會出現(xiàn)不同的狀態(tài)。對各種狀態(tài)須作不同處理,,這正是軟件系統(tǒng)開發(fā)的難度所在,。下面給出RC522命令集中2個最基本命令(Tranceive和MFAuthe-nt)執(zhí)行過程中可能遇到的通信狀態(tài)及處理。這兩個命令分別實現(xiàn)向 MIFARE卡發(fā)送/接收數(shù)據(jù)和加密認證功能,。實際上,,通過它們即可完成對MIFARE卡的所有操作,包括Request,、Anticollision,、 Select、READ,、WRITE等,。

2.1 RC522命令集的實現(xiàn)

RC522主要的狀態(tài)指示寄存器包括ComIrqReg、Er-rorReg,、Status2Reg和FIFOLevelReg等,。軟件處理的思路:通過ComIrgReg得到RC522內部中斷狀態(tài);由中斷判斷RC522與MIFARE卡的通信流程信息,從而決定是否進行下一流程處理;若中斷指示有錯誤發(fā)生,,則需進一步讀取ErrorReg的內容,,據(jù)此返回錯誤字。

2.1.1 Tranceive命令

Tranceive命令的具體執(zhí)行過程;讀取RC522 FIFO中的所有數(shù)據(jù),,經(jīng)基帶編碼和數(shù)字載波調制后通過通信接口以射頻形式發(fā)送到MIFARE卡;發(fā)送完畢后通過通信接口檢測有無MIFARE卡發(fā)送的射頻信號回應,,并將收到的信號解調、解碼后放入FIFO中,。分析以上Ttanceive命令執(zhí)行過程,,可以得到處理該命令的算法流程圖,如圖4所示,。

為了處理MIIFARE卡在讀卡器產(chǎn)生的電磁場中激勵后,未完成處理義從激勵場中拿開的情況,,軟件中啟用了RC522芯片內部的定時器,。若超過設定的時間未得到卡片應答,則中止與卡的通信,,返回“卡無反應”的錯誤信息,。

從圖4中可以看出Tranceive命令的核心處理方法:根據(jù)相關通信狀態(tài)指示寄存器的內容返回各種錯誤狀態(tài)字,若有位沖突錯誤,則進一步返回位沖突位置,。Tranceive命令不處理面向比特的幀,,這種幀只可能在MIFARE卡防沖突循環(huán)中出現(xiàn)。為了保持Tranceive命令對各種MI- FARE卡命令的普適性,,該命令只完成幀的發(fā)送和接收,,不對幀信息作處理,所有位沖突處理留在函數(shù)外進行,。

需要注意的是,,Tranceive命令不能自動中止,在任何情況下從該命令返回時必須先執(zhí)行IDLE指令使RC522轉入空閑態(tài),。

2.1.2 MFAuthent命令

RC522簡化了與MIFARE卡的加密認證操作,,用一個MFAuthent命令代替了原來RC500需要的Authentl和Authent2兩條命令。MFAuthent命令執(zhí)行的最終目的在于開啟RC522的加密認證單元,。該指令執(zhí)行成功后,,RC522芯片與MIFARE卡間的通信信息將首先加密,然后再通過射頻接口發(fā)送,。從本質上講,,MFAuthent是一條變相的Tranceive命令,其算法流程圖與圖4一致,。但RC522芯片內部已經(jīng)對通信過程中的各種通信狀態(tài)作了相應處理,,且該命令執(zhí)行完后自動中止,因此用戶只須檢測定時器狀態(tài)和錯誤寄存器狀態(tài)來判斷執(zhí)行情況,。實際上,,MFAuthent只可能有一種錯誤狀態(tài)(RC522與MI-FARE卡通信幀格式錯誤),此時該命令不能打開加密認證單元,,用戶必須重新執(zhí)行認證操作,。

MFAuthent執(zhí)行過程中RC522將依次從FIFO中讀取1字節(jié)認證模式、l字節(jié)要認證的E2PROM塊號,、6字節(jié)密鑰和4字節(jié)射頻卡UID 號等信息,,在命令執(zhí)行前必須保證這12字節(jié)數(shù)據(jù)完整地保存在FIFO中。認證模式有A密鑰認證和B密鑰認證兩種,,一般選用A密鑰認證,。

一次MFAutllent認證只能保證對MIFARE卡的一個扇區(qū)中的4個數(shù)據(jù)塊解密,若要操作其他扇區(qū)的數(shù)據(jù)用戶還須另外啟動對該扇區(qū)的認證操作,。

2.2 MIFARE卡操作指令

對MIFARE卡常用的操作指令包括查詢,、防沖突、選卡,、讀/寫E2PROM塊等,。其中,防沖突指令是14443A協(xié)議的精華部分,實現(xiàn)難度較大,。下面將重點介紹防沖突算法的軟件實現(xiàn)方法,。

2.2.1 防沖突指令

14443A標準定義的防沖突算法本質上是一種基于信道時分復用的信道復用方法。在某一時刻若多個射頻卡占用射頻信道與讀卡器通信,,則讀卡器將會檢測到比特流的沖突位置;然后重新啟動另一次與射頻卡的通信過程,,在過程中將沖突位置上的比特值置為確定值(一般為1)后展開二進制搜索,直到投有沖突錯誤被檢測到為止,。MIFARE卡內有4字節(jié)的全球惟一序列號UID,,而RC522防沖突處理的目的就在于最終確定MIFARE卡的UID。14443A標準的防沖突指令格式如下:

其中:命令代碼“93”代表要處理的射頻卡UID只有4字節(jié);NVM表示此次防沖突命令的UID域中正確的比特數(shù);BCC字節(jié)只有在NVM為70(即UID的4字節(jié)都正確)時才存在,,它表示此時整個UID都被識別,,防沖突流程結束。

防沖突算法流程圖如圖5所示,。

NVM初始值為20,,表示該命令只含有2個字節(jié),即“93+20”,,不含UID數(shù)據(jù),,MIFARE卡須返回全部UID字節(jié)作為響應。若返回的UID 數(shù)據(jù)有位沖突的情況發(fā)生,,則根據(jù)沖突位置更新NVM值,。可知在搜索循環(huán)中,,隨著UID已知比特數(shù)的加入,,NVM不斷增加,直到70為止,。它表示除了 “93+70”兩個命令字節(jié)外,,還有UID0~UID3和BCC 5個UID數(shù)據(jù)字節(jié)。此時命令字節(jié)共有7個,,防沖突命令轉變?yōu)榭ㄆx擇命令,。

防沖突流程中若遇到須發(fā)送和接收面向比特的幀的情況,則必須預先設置通信控制寄存器BitFramingReg,。該寄存器可指明發(fā)送幀中最后一個字節(jié)和接收幀第一個字節(jié)中不完整的比特的位數(shù),。

2.2.2 讀卡和寫卡指令

14443A協(xié)議中并沒有具體規(guī)定對射頻卡的讀寫操作方式,故對每種卡的讀寫操作都必須考慮該卡的存儲區(qū)域組織形式和應答形式,。MIFARE卡內部存儲器是由E2PROM組成的,,共劃分為16個扇區(qū),每個扇區(qū)4個塊,,每塊16字節(jié),。對E2PROM的讀寫都以塊為單位進行,即每次讀/寫16字節(jié),。

以寫卡指令為例,,MIFARE卡要求有兩步握手,指令格式分別如下所述,。

Setp A:查詢塊狀態(tài),。

若塊準備好,則MIFARE卡返回4比特應答,。若值為1010,,則可進行下一步操作;若值非1010,則表示塊未準備好,,必須等待直至塊準備好為止,。

Step B:寫數(shù)據(jù)。

若寫入成功,,則MIFARE卡返回4比特應答,,值仍為1010;若非lOl0,則表示寫入失敗,。

讀卡指令格式如下:

若執(zhí)行成功,,則MIFARE卡返回18字節(jié)應答比特。需要注意的是,,其中只有16字節(jié)是讀取的塊數(shù)據(jù),,另外2個字節(jié)為填充字節(jié)。若字節(jié)數(shù)不為18,,則可判斷讀卡操作錯誤,。

MIFARE卡數(shù)據(jù)加密時以扇區(qū)為單位,一次加密認證僅能操作一個扇區(qū)的數(shù)據(jù),。這為用戶實現(xiàn)“一卡通”功能提供了便利,,用戶可在不同的扇區(qū)內采用不同加密方式互不干擾地存放各種目的應用數(shù)據(jù)。實際生活中常見的一種應用是電子錢包,,對卡的寫操作須按照一定的格式進行,。一個塊的數(shù)據(jù)組成如下:

注意:address值無意義,但value值寫入時必須在4~7字節(jié)中存入取反值,。

2.3 讀卡器總體軟件設計

讀卡器的軟件設計思路是利用RC522的Tranceive命令作為標準函數(shù),,通過調用此函數(shù)實現(xiàn)MIFARE卡操作指令。MIFARE卡的操作流程如圖6所示,,其要點是將操作完成的卡轉入休眠態(tài),,遞減可能發(fā)生沖突的卡片數(shù)目直至所有卡片操作完畢,此時防沖突函數(shù)無卡片應答,。

RC522芯片在每次使用前都必須復位,,除了在復位引腳NRSTPD輸入從低電平至高電平的跳變沿外,,還必須向RC522的命令寄存器 CommandReg寫人軟復位命令代碼0x0I?進行軟復位。在利用RC522操作MIF’RAE卡之前,,用戶必須正確設置芯片模擬部分的工作狀態(tài),。依筆者經(jīng)驗,一般情況下RC522調制,、解調方式采用默認設置即可;在106 kbps通信速率下可正常使用,,但必須保證天線驅動接口打開,可以通過設置Tx—controlReg寄存器實現(xiàn),。另外,,由于14443A協(xié)議采用調制深度為100}《的ASK調制,這一點與默認設置不同,,因此必須相應設置TxASKRc毽來實現(xiàn)該種調制方式,。

RC522的通信參數(shù)設置很復雜,可以調控調制相位,、調制位寬,、射頻信號檢測強度、發(fā)送/接收速度等設置,。在硬件調試過程中,,用戶可根據(jù)實際情況選用適合自身使用的設置形式。

結語

本文設計的讀卡器在106 kbps通信速率下讀卡距離達50 mm,,可以實現(xiàn)考勤,、電子錢包功能;整個讀卡器采用低功耗元件,可以作為一個網(wǎng)絡終端,、以電池作后備電源可靠地工作,。對于RC522的應用,防沖突和通信接口的設置是重點,。不同的射頻卡協(xié)議,,防沖突流程各不相同,通信接口也會有差異,,但修改 RC522的相關設置即可使物理接口滿足協(xié)議要求,。對于防沖突處理,RC522{支持基于比特沖突檢測的處理方式,,不可處理類似144,。13B的 ALOHA時隙方式。

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。