新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于RC522的讀卡器系統設計

        基于RC522的讀卡器系統設計

        作者: 時間:2010-09-29 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/173194.htm

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

          2.1 命令集的實現

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

          2.1.1 Tranceive命令

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

          

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

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

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

          2.1.2 MFAuthent命令

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

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

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

          2.2 MIFARE卡操作指令

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

          2.2.1 防沖突指令

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

          

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

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

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荆州市| 潢川县| 牙克石市| 吐鲁番市| 东阳市| 凤山县| 旺苍县| 炎陵县| 西昌市| 方城县| 蛟河市| 五寨县| 秀山| 柘城县| 额敏县| 鄢陵县| 富川| 璧山县| 孟连| 揭西县| 宜兰市| 安福县| 孟州市| 拉萨市| 延长县| 娱乐| 鄂温| 霍林郭勒市| 二手房| 手机| 武乡县| 温泉县| 普洱| 德江县| 大渡口区| 墨脱县| 博湖县| 边坝县| 金乡县| 广饶县| 洱源县|