RFID是RadioFrequencyIdentification的縮寫,即射頻識別。一種非接觸式的自動識別技術,它通過射頻信號自動識別目標對象并獲取相關數(shù)據(jù),識別的距離可達幾十厘米至幾米,且根據(jù)讀寫的方式,可以輸入數(shù)千字節(jié)的信息,同時,還具有極高的保密性,識別工作無須人工干預,可工作于各種惡劣環(huán)境。RFID技術可識別高速運動物體并可同時識別多個標簽,操作快捷方便。其應用范圍十分廣泛,主要有商品零售、商品防偽、交通運輸、物流倉儲、安全管理、醫(yī)療衛(wèi)生、圖書檔案和國防軍事等。
RFID系統(tǒng)由三部分組成:1。標簽(Tag,即射頻卡),由耦合元件及芯片組成,標簽含有內置天線,用于和射頻天線間進行通信;2。閱讀器,讀?。ㄔ谧x寫卡中還可以寫入)標簽信息的設備;3。天線,在標簽和讀取器間傳遞射頻信號。本文主要介紹基于ARM,工作頻率在13。56MHz的RFID閱讀器設計方案。
1系統(tǒng)硬件設計
1。1系統(tǒng)主要芯片介紹
本設計方案的兩個主要芯片是LPC2212和MFRC500。LPC2212功耗低,性能高,接口資源豐富,可以在RFID閱讀器的基礎上進行其它功能的擴展,實現(xiàn)一個多功能應用系統(tǒng)。MFRC500是PHILIPS公司生產的應用于13。56MHz非接觸式通信中高集成讀卡IC系列中的一員。MFRC500支持ISO14443A所有的層,內部的發(fā)送器部分不需要增加有源電路就能夠直接驅動近操作距離的天線(可達100mm);接收器部分提供一個堅固而有效的解調和解碼電路用于ISO14443A兼容的應答器信號;數(shù)字部分處理ISO14443A幀和錯誤檢測奇偶CRC,此外它還支持快速CRYPTO1加密算法用于驗證MIFARE系列產品。
1。2系統(tǒng)總體設計
系統(tǒng)從功能上主要分為4大模塊:控制模塊、發(fā)送接收數(shù)據(jù)模塊、串行通信模塊和顯示模塊。各模塊組成的系統(tǒng)總框圖如圖1所示。
控制模塊主要由微控制器LPC2212和晶振組成,負責整個系統(tǒng)的控制工作。
發(fā)送接收數(shù)據(jù)模塊主要由MFRC500、晶振和天線組成。MFRC500分為模擬部分和數(shù)字部分。模擬部分負責對射頻卡的發(fā)送接收操作,發(fā)送主要完成驅動天線,提供13。56MHz的能量載波并根據(jù)寄存器的設置對發(fā)送數(shù)據(jù)進行調制;接收主要完成對射頻卡發(fā)送的信號進行檢測和解調并根據(jù)寄存器的設定進行處理。數(shù)字部分則通過并口和中斷與微控制器LPC2212通信。MFRC500的能量載波由13。56MHz晶振提供,天線則主要由LC低通濾波器和LC諧振電路組成。
串行通信模塊主要由RS-232-C標準采用的9芯接口和電平轉換電路MAX232A組成。本模塊負責閱讀器與PC機通訊,可進行程序下載,射頻卡信息修改等。
顯示模塊主要由低復用率的通用液晶(LCD)驅動器PCF8562和LCD屏組成。PCF8562與微控制器LPC2212可以通過兩線雙向的I2C總線通信,當這兩條線連接到器件的輸出級時必須通過上拉電阻連接到正電源。顯示模塊負責卡片信息顯示。
2系統(tǒng)軟件設計
軟件設計包括三個模塊:系統(tǒng)初始化模塊、射頻卡與讀寫器通信模塊和LCD顯示模塊。下面詳細介紹以上模塊。
2。1系統(tǒng)初始化模塊
為了使系統(tǒng)能夠正常運行,必須在系統(tǒng)復位時對系統(tǒng)進行初始化工作。其中包括中斷向量表的建立和REMAP(重映射)操作、各種模式堆棧初始化操作、時鐘初始化操作、串口初始化操作和中斷選擇初始化操作。
ARM7處理器有7種異常模式,其中斷向量位置是固定的(地址0x00000000-0x0000001C),LPC2212采用64字節(jié)存儲中斷向量表。為了實現(xiàn)LPC2212在不同操作模式下對中斷的使用,必須對LPC2212中Flash的BootBlock塊和SRAM空間的一小部分REMAP。另外,需要對各種模式的堆棧進行初始化。
LPC2212振蕩器工作在振蕩模式,外部晶體振蕩頻率為20-25MHz,通過內部PLL電路調整時鐘,使系統(tǒng)運行速度更快。程序首先使能PLL但不連接PLL,然后設置外設時鐘與系統(tǒng)時鐘的分頻比,接著設置PLL的乘因子和除因子。設置完成后,把數(shù)據(jù)正確寫入硬件,并等待PLL跟蹤完成。最后,使能PLL并使PLL連上系統(tǒng)。
串口是讀卡器與PC機通信端口,在使用前須設置串口波特率、接收和發(fā)送數(shù)據(jù)字符格式和初始化FIFO(先進先出隊列)。
串口和RC500都是基于IRQ中斷,使用前,須對LPC2212中斷選擇寄存器進行配置,把串口和RC500的中斷請求分配為IRQ模式。
2。2射頻卡與讀寫器通信模塊
本系統(tǒng)采用M1(MIFARE1)智能卡,本卡自帶天線,內含加密控制邏輯和通訊邏輯電路,M1分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位,每個扇區(qū)有獨立的一組密碼及訪問控制,可一卡多用。M1射頻卡與讀寫器的通信流程圖如圖2所示。
復位應答(Answertorequest):M1射頻卡的通訊協(xié)議和通訊波特率是定義好的,當有卡片進入讀寫器的操作范圍時,讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗證卡片的卡型。
防沖突機制(Anti-collisionLoop):當有多張卡進入讀寫器操作范圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。
選擇卡片(SelectTag):選擇被選中的卡的序列號,并同時返回卡的容量代碼。
三次互相驗證(ThreeAuthentication):選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。(在選擇另一扇區(qū)時,則必須進行另一扇區(qū)密碼校驗。)
對數(shù)據(jù)塊的操作:讀(Read):讀一個塊;寫(Write):寫一個塊;加(Increment):對數(shù)值塊進行加值;減(Decrement):對數(shù)值塊進行減值;存儲(Restore):將塊中的內容存到數(shù)據(jù)寄存器中;傳輸(Transfer):將數(shù)據(jù)寄存器中的內容寫入塊中;中止(Halt):將卡置于暫停工作狀態(tài)。
2。3LCD顯示模塊
顯示模塊完成射頻卡信息在LCD上的顯示功能。用戶可以顯示專用符號、數(shù)字、漢字和圖形。顯示模塊主要分為兩部分:第一部分是根據(jù)閱讀器從射頻卡讀入的信息確定要顯示的內容,顯示圖形時,則要計算顯示坐標;第二部分是根據(jù)系統(tǒng)所采用的LCD建立專用符號庫、漢字庫,顯示圖形時,則要把第一部分得到的坐標轉化為LCD上的顯示坐標。[!--empirenews.page--]
3改進的防沖突算法
根據(jù)ISO14443協(xié)議,M1型卡傳統(tǒng)的防沖突算法是動態(tài)二進制檢索樹算法。它首先利用MANCHESTER編碼“沒有變化”的狀態(tài)來檢測碰撞位,然后把碰撞位設為二進制“1”,用SELECT命令發(fā)送碰撞前接收的部分卡片序列號和碰撞位,如果卡片開頭部分序列號與其相同,則做出應答,不相同則沒有響應。以此來縮小卡片范圍,最終達到無碰撞。圖3顯示了兩個卡片(PICC#1和PICC#2)的防碰撞流程。
但是,傳統(tǒng)的防碰撞方法要求所有應答器準確同步,應答器必須準確地在同一時刻開始傳輸他們的序列號。然而,在實際使用中,應答器由用戶控制,可能產生異步發(fā)送數(shù)據(jù),如果仍然采用傳統(tǒng)防沖突算法,有可能導致死循環(huán),如圖4所示。
為了解決死循環(huán)問題,在傳統(tǒng)算法的基礎上設置了一個記錄碰撞位數(shù)的變量,如果第二次碰撞位數(shù)和第一次相等,則把SELECT發(fā)送的部分卡號增加一位,設為二進制數(shù)“1”發(fā)送出去。如果在規(guī)定時間內沒有收到應答,則把增加位設為“0”發(fā)送出去??梢杂行ьA防由于應答器異步導致的死循環(huán)問題。針對圖4的改進流程如圖5。
4結束語
本文給出了一個基于ARM的RFID閱讀器軟硬件框架,實現(xiàn)了對射頻卡的基本讀寫等功能。閱讀器采用的ARM微處理器,接口資源豐富,還有很多空閑接口,可在閱讀器的基礎上進行擴展,例如,可利用ARM的其它接口驅動電機,利用射頻卡對電機實現(xiàn)控制,只有卡內信息正確,系統(tǒng)才能向電機發(fā)出控制命令,從而在硬件上增加了安全性。另外,改進的防沖突算法也使讀卡器在應答器異步發(fā)送數(shù)據(jù)的情況下有效的避免死鎖。本文對實現(xiàn)帶有RFID功能的多功能系統(tǒng)有一定的參考價值和實用價值。