基于ARM的RFID閱讀器設計
文章出處:http://5052h112.com 作者:蘆東昕 李強 柳長安 人氣: 發表時間:2011年10月21日
RFID是Radio Frequency Identification的縮寫,即射頻識別。一種非接觸式的自動識別技術,它通過射頻信號自動識別目標對象并獲取相關數據,識別的距離可達幾十厘米至幾米,且根據讀寫的方式,可以輸入數千字節的信息,同時,還具有極高的保密性,識別工作無須人工干預,可工作于各種惡劣環境。
RFID技術可識別高速運動物體并可同時識別多個標簽,操作快捷方便。其應用范圍十分廣泛,主要有商品零售、商品防偽、交通運輸、物流倉儲、安全管理、醫療衛生、圖書檔案和國防軍事等。
RFID系統由三部分組成:1. 標簽(Tag,即射頻卡),由耦合元件及芯片組成,標簽含有內置天線,用于和射頻天線間進行通信;2. 閱讀器,讀取(在讀寫卡中還可以寫入)標簽信息的設備;3. 天線,在標簽和讀取器間傳遞射頻信號。本文主要介紹基于ARM,工作頻率在13.56MHz的RFID閱讀器設計方案。
1系統硬件設計
1.1 系統主要芯片介紹
本設計方案的兩個主要芯片是LPC2212和MF RC500。LPC2212功耗低,性能高,接口資源豐富,可以在RFID閱讀器的基礎上進行其它功能的擴展,實現一個多功能應用系統。
MF RC500是PHILIPS公司生產的應用于13.56MHz非接觸式通信中高集成讀卡IC系列中的一員。MF RC500支持ISO14443A所有的層,內部的發送器部分不需要增加有源電路就能夠直接驅動近操作距離的天線(可達100mm);接收器部分提供一個堅固而有效的解調和解碼電路用于ISO14443A兼容的應答器信號;數字部分處理ISO14443A幀和錯誤檢測奇偶CRC,此外它還支持快速CRYPTO1加密算法用于驗證MIFARE系列產品。
1.2 系統總體設計
系統從功能上主要分為4大模塊:控制模塊、發送接收數據模塊、串行通信模塊和顯示模塊。各模塊組成的系統總框圖如圖1所示。
控制模塊主要由微控制器LPC2212和晶振組成,負責整個系統的控制工作。
發送接收數據模塊主要由MF RC500、晶振和天線組成。MF RC500分為模擬部分和數字部分。模擬部分負責對射頻卡的發送接收操作,發送主要完成驅動天線,提供13.56MHz的能量載波并根據寄存器的設置對發送數據進行調制;接收主要完成對射頻卡發送的信號進行檢測和解調并根據寄存器的設定進行處理。數字部分則通過并口和中斷與微控制器LPC2212通信。MF RC500的能量載波由13.56MHz晶振提供,天線則主要由LC低通濾波器和LC諧振電路組成。
串行通信模塊主要由RS-232-C標準采用的9芯接口和電平轉換電路MAX232A組成。本模塊負責閱讀器與PC機通訊,可進行程序下載,射頻卡信息修改等。
顯示模塊主要由低復用率的通用液晶(LCD)驅動器PCF8562和LCD屏組成。PCF8562與微控制器LPC2212可以通過兩線雙向的I2C總線通信,當這兩條線連接到器件的輸出級時必須通過上拉電阻連接到正電源。顯示模塊負責卡片信息顯示。
2 系統軟件設計
軟件設計包括三個模塊:系統初始化模塊、射頻卡與讀寫器通信模塊和LCD顯示模塊。下面詳細介紹以上模塊。
2.1 系統初始化模塊
為了使系統能夠正常運行,必須在系統復位時對系統進行初始化工作。其中包括中斷向量表的建立和REMAP(重映射)操作、各種模式堆棧初始化操作、時鐘初始化操作、串口初始化操作和中斷選擇初始化操作。
ARM7處理器有7種異常模式,其中斷向量位置是固定的(地址0x00000000-0x0000001C),LPC2212采用64字節存儲中斷向量表。為了實現LPC2212在不同操作模式下對中斷的使用,必須對LPC2212中Flash的Boot Block塊和SRAM空間的一小部分REMAP。另外,需要對各種模式的堆棧進行初始化。
LPC2212振蕩器工作在振蕩模式,外部晶體振蕩頻率為20-25MHz,通過內部PLL電路調整時鐘,使系統運行速度更快。程序首先使能PLL但不連接PLL,然后設置外設時鐘與系統時鐘的分頻比,接著設置PLL的乘因子和除因子。設置完成后,把數據正確寫入硬件,并等待PLL跟蹤完成。最后,使能PLL并使PLL連上系統。
串口是讀卡器與PC機通信端口,在使用前須設置串口波特率、接收和發送數據字符格式和初始化FIFO(先進先出隊列)。
串口和RC500都是基于IRQ中斷,使用前,須對LPC2212中斷選擇寄存器進行配置,把串口和RC500的中斷請求分配為IRQ模式。
2.2 射頻卡與讀寫器通信模塊
本系統采用M1(MIFARE 1)智能卡,本卡自帶天線,內含加密控制邏輯和通訊邏輯電路,M1分為16個扇區,每個扇區為4塊,每塊16個字節,以塊為存取單位,每個扇區有獨立的一組密碼及訪問控制,可一卡多用。M1射頻卡與讀寫器的通信流程圖如圖2所示。
復位應答(Answer to request):M1射頻卡的通訊協議和通訊波特率是定義好的,當有卡片進入讀寫器的操作范圍時,讀寫器以特定的協議與它通訊,從而確定該卡是否為M1射頻卡,即驗證卡片的卡型。
防沖突機制 (Anti-collision Loop):當有多張卡進入讀寫器操作范圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。
選擇卡片(Select Tag):選擇被選中的卡的序列號,并同時返回卡的容量代碼。
三次互相驗證(Three Authentication):選定要處理的卡片之后,讀寫器就確定要訪問的扇區號,并對該扇區密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。(在選擇另一扇區時,則必須進行另一扇區密碼校驗。)
對數據塊的操作: 讀 (Read):讀一個塊;寫 (Write):寫 一個塊;加(Increment):對數值塊進行加值;減(Decrement):對數值塊進行減值;存儲(Restore):將塊中的內容存到數據寄存器中;傳輸(Transfer):將數據寄存器中的內容寫入塊中;中止(Halt):將卡置于暫停工作狀態。
2.3 LCD顯示模塊
顯示模塊完成射頻卡信息在LCD上的顯示功能。用戶可以顯示專用符號、數字、漢字和圖形。顯示模塊主要分為兩部分:第一部分是根據閱讀器從射頻卡讀入的信息確定要顯示的內容,顯示圖形時,則要計算顯示坐標;第二部分是根據系統所采用的LCD建立專用符號庫、漢字庫,顯示圖形時,則要把第一部分得到的坐標轉化為LCD上的顯示坐標。
3 改進的防沖突算法
根據ISO14443協議,M1型卡傳統的防沖突算法是動態二進制檢索樹算法。它首先利用MANCH ESTER編碼“沒有變化”的狀態來檢測碰撞位,然后把碰撞位設為二進制“1”,用SELECT命令發送碰撞前接收的部分卡片序列號和碰撞位,如果卡片開頭部分序列號與其相同,則做出應答,不相同則沒有響應。以此來縮小卡片范圍,最終達到無碰撞。圖3顯示了兩個卡片(PICC #1和PICC #2)的防碰撞流程。
但是,傳統的防碰撞方法要求所有應答器準確同步,應答器必須準確地在同一時刻開始傳輸他們的序列號。然而,在實際使用中,應答器由用戶控制,可能產生異步發送數據,如果仍然采用傳統防沖突算法,有可能導致死循環,如圖4所示。
圖4 尋卡死循環
為了解決死循環問題,在傳統算法的基礎上設置了一個記錄碰撞位數的變量,如果第二次碰撞位數和第一次相等,則把SELECT發送的部分卡號增加一位,設為二進制數“1”發送出去。如果在規定時間內沒有收到應答,則把增加位設為“0”發送出去。可以有效預防由于應答器異步導致的死循環問題。針對圖4的改進流程如圖5。
圖5 改進的防沖突流程
4 結束語
本文給出了一個基于ARM的RFID閱讀器軟硬件框架,實現了對射頻卡的基本讀寫等功能。閱讀器采用的ARM微處理器,接口資源豐富,還有很多空閑接口,可在閱讀器的基礎上進行擴展,例如,可利用ARM的其它接口驅動電機,利用射頻卡對電機實現控制,只有卡內信息正確,系統才能向電機發出控制命令,從而在硬件上增加了安全性。另外,改進的防沖突算法也使讀卡器在應答器異步發送數據的情況下有效的避免死鎖。本文對實現帶有RFID功能的多功能系統有一定的參考價值和實用價值。
參考文獻:
[1]游戰清,李蘇劍等.無限射頻識別技術(RFID)理論與應用[M].電子工業出版社,2004.
[2]李駒光,聶雪媛等.ARM應用系統開發詳解—基于S3C14510B系統設計[M].清華大學出版社,2003.
[3]周立功等.ARM微控制器基礎與實戰[M].北京航空航天大學出版社,2003.
[4]Bhuptani Manish,Moradpour Shahram.RFID Field Guide Deploying Radio Frequency Identification Systems[M].Prentice Hall PTR,2005.
[5]Klaus Finkenzeller.RFID Handbook:Fundamentals and Applications in Contactless Smart Cards and Identification[M].John Wiley & Sons,2003.