摘要: 介紹基于 MF RC500 讀寫卡芯片和 STC89C52RC 型單片機實現(xiàn)的 Mifare1 射頻卡
讀寫器的設計方法。對其系統(tǒng)硬件設計進行分析, 并給出對 Mifare1 卡操作流程。
關鍵詞: RFID ; 讀寫器; Mifare1 卡; MF RC500
0 引 言
射頻識別 (Radio Frequency Identification , 以下簡稱 RFID) 技術 [1] 是利用無線射頻方式進行非接觸雙向通信并交換數(shù)據(jù), 以達到識別目的。與傳統(tǒng)的條碼或磁條識別技術相比, RFID 技術具有非接觸、精度高、作用距離遠、可動態(tài)識別多個數(shù)據(jù)及應用環(huán)境適應性較好等優(yōu)點, 在工業(yè)自動化、倉儲管理、門禁控制等眾多領域得到廣泛的應用與發(fā)展。本文基于 MF RC500設計了 RFID 技術的 Mifare1 卡讀寫器。該讀寫器能完成對 Mifare1 卡的讀、寫及控制操作, 具有響應速度快、讀卡距離遠、通信穩(wěn)定等優(yōu)點。
1 Mifare1 卡特點及原理
射頻卡屬于非接觸 IC 卡, 它避免了普通 IC 卡與讀卡器之間的物理接觸, 減少了卡的磨損, 識別工作無須人工干預, 可工作于各種惡劣環(huán)境。當前世界上
非接觸式 IC 智能射頻卡的核心是 Philips 公司的 Mi-fare1 IC S50(- 0l , - 02 , - 03 , - 04) 系列微模塊。已被定制為國際標準: ISO/IEC 14443 TYPE A 標準。目前, 許多較大的 IC 卡制造商的非接觸式卡制造均以 Mifare 技術為標準。 Mifare1 卡上有 8Kb EEPROM 存儲容量, 并劃分為 16 個扇區(qū), 每個扇區(qū)劃分為 4 個數(shù)據(jù)存儲塊。各扇區(qū)的密碼和存取控制都是獨立的, 可以根據(jù)實際需要設定各自的密碼及存取控制。因此一張卡能同時運用在 16 個不同的系統(tǒng)中, 并可以根據(jù)每個系統(tǒng)的實際情況決定各區(qū)的密碼及數(shù)據(jù)形式。Mifare1 卡上具有先進的數(shù)據(jù)通信加密并雙向驗證密碼系統(tǒng), 具有防重疊功能, 能在同一時間內(nèi)處理重疊在讀寫器天線的有效工作距離內(nèi)的多張重疊的卡片。卡片上還內(nèi)建有增值、減值的專項數(shù)學運算電路, 非常適合公交、地鐵等行業(yè)的檢票、收票系統(tǒng)?ㄆ系臄(shù)據(jù)讀寫可超過 10 萬次以上, 數(shù)據(jù)保存期可達 10 年以上, 且卡片抗靜電保護能力可達 2kV 以上。Mifare1 卡中包含一塊 ASIC 微晶片和一個高頻天線, 卡片上無源 ( 無電池 ) 。其基本工作原理是: 讀寫器 中 的 Mifare 基 站 向 Mifare1 卡 發(fā) 一 組 固 定 頻 率(13.56MHz) 的電磁波, 卡片內(nèi)有一個 LC 串聯(lián)諧振電路, 其頻率與基站發(fā)射的頻率相同。在電磁波的激勵下, LC 諧振電路產(chǎn)生共振, 使卡片內(nèi)具有電荷, 當所積累的電荷達到 2V 時, 卡片中芯片將卡內(nèi)數(shù)據(jù)發(fā)射出去或接收基站對卡片的操作。射頻卡的標準操作距離為 100mm , 與卡片讀寫器的通信速率高達 106Kb/s 。
2 讀寫器芯片特性和功能簡介
MF RC500 是應用于 13.56MHz 非接觸式通信中高集成射頻識別系統(tǒng)中的一員。該系統(tǒng)利用先進的調制和解調概念, 完全集成了在 13.56MHz 下所有類型的被動非接觸式通信方式和協(xié)議。 MF RC500 支持ISO14443A 所有的層, 內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅動近操作距離的天線( 距離可達 100mm ); 接收器部分提供一個堅固有效的解調和解碼電路, 用于 ISO14443 兼容的應答器信號; 數(shù)字部分處理 ISO14443A 幀和錯誤檢測 (奇偶與 CRC )。此外, 它還支持快速 CRYPTO1 加密算法, 用于驗證 Mi-fare 卡系列產(chǎn)品。方便的并行接口可直接連接到任何8 位微處理器, 為讀卡器或終端的設計提供了極大的靈活性 。
3 RFID 讀寫器的設計
3.1 系統(tǒng)硬件設計
3.1.1 讀卡器硬件系統(tǒng)框圖
基于 MF RC500 的 RFID 技術 Mifare 卡讀寫器系統(tǒng), 其系統(tǒng)結構框圖如圖 1 所示。硬件主要由 STC89C52RC 單片機、 MF RC500 、以及 232 通信等接口模塊組成。讀卡器用 STC89C52RC單片機作主控制器, 單片機控制 MF RC500 驅動天線對 Mifare 卡進行讀寫操作。 74HC595 作顯示驅動器驅動 LED 數(shù)碼顯示器, PS/2 總線作為通用編碼鍵盤接口, 鍵盤與 LED 顯示器作為人機交互接口, MAX232作串口信號轉換。由于主控芯片 STC89C52RC 有 8K
的 FLASH , 并且內(nèi)含 2K 的 EEPROM , 可方便反復擦寫、修改程序。同時, 由于外部不用擴展程序存儲器,可以簡化電路設計, 減小讀卡器的尺寸, 同時有較多的 I/O 口提供給系統(tǒng)使用。
3.1.2 讀寫器的原理圖設計
讀寫器電路是由 STC89C52RC 型單片機控制專用讀寫芯片 (MF RC500) 組成。系統(tǒng)的工作方式是先由MCU 控制 MF RC500 驅動天線對 Mifare 卡進行讀寫操作 , 然后與 PC 通信 , 把數(shù)據(jù)傳給上位機。讀寫模塊 MF RC500 是整個讀寫器的核心 , 它完成讀寫 Mifare 卡的所有必需功能 , 包括 RF 信號的產(chǎn)
生、調制、解調、安全認證和防重疊等。作為單片機與射頻卡通訊的中介, MF RC500 與 Mifare1 卡由射頻場來建立無線鏈接并完成數(shù)據(jù)交換。
MCU 是通過對讀寫模塊 MF RC500 內(nèi)核特殊的內(nèi)存寄存器的讀寫來控制 MF RC500 。 MF RC500 射頻模塊的 D0 - D7( 數(shù)據(jù)端口 ) 和單片機數(shù)據(jù)端口 P0 口直接連接進行數(shù)據(jù)傳送 , 中斷請求口 IRQ 和單片機的中斷 0( INT0) 連接 , 即單片機利用 MF RC500 提供中斷信息對其進行控制。天線拾取的信號經(jīng)過天線匹配電路送到 RX 腳, MF RC500 的內(nèi)部接收器對信號進行檢測和解調并根據(jù)寄存器的設定進行處理 , 然后數(shù)據(jù)發(fā)送到并行接口 , 由 MCU 進行讀取。MF RC500 通過 TX1 和 TX2 提供 13.56 MHz 的能量載波驅動天線。根據(jù)寄存器的設定對發(fā)送數(shù)據(jù)進行調制來得到發(fā)送的信號。 Mifare1 卡采用 RF 場的負載調制進行響應。讀寫器與上位機的通信采用 RS- 232 方式, 單片機 STC89C52RC 與 PC 串 口 電 平 不 匹 配 , 使 用
MAX232 型電平轉換器進行電平轉換。
3.2 程序設計
設計思想: 當有 Mifare1 射頻卡進入距離射頻天線 100mm 內(nèi), 讀卡器就可以讀到卡中的數(shù)據(jù)。系統(tǒng)單片機要將所讀數(shù)據(jù)進行分析處理, 如果符合條件, 則讀卡成功指示燈閃一下, 蜂鳴器鳴叫一聲。并將卡片數(shù)據(jù)與當前時間一起存入單片機內(nèi)的 EEPROM , 并在LED 顯示器上顯示卡數(shù)據(jù)。沒有卡進入讀卡器工作范圍時, 在顯示器上顯示當前時間。若讀卡出錯, 顯示出錯標志。在與上位機通訊時, 將單片機內(nèi)部 EEPROM存入的信息發(fā)往上位機。
單片機程序包括以下幾個部分: 讀寫器按鍵處理程序、讀寫卡程序、數(shù)據(jù)存儲程序、與上位機的通訊程序、顯示驅動程序、時基生成程序。以下重點介紹讀寫卡程序的設計。讀寫卡過程包括裝載密碼、詢卡、防沖突、選卡、驗證密碼、讀寫卡和停卡。這一系列操作必須按固定的順序進行。在沒有射頻卡進入射頻天線有效范圍時, 在低 5 位顯示當前時鐘; 當有射頻卡進入到射頻天線的有效范圍, 讀卡程序驗證卡及密碼成功后, 將卡號和讀卡時間及相關數(shù)據(jù)作為一條記錄存入 EEP-ROM 存儲器中, 并在 LED 顯示器高 5 位上顯示卡號。( 1 ) 詢卡過程: 當一張 Mifare 卡處在卡讀寫器的天線工作范圍之內(nèi)時, MCU 將通過 MF RC500 發(fā)送一個詢卡請求, 詢卡請求有兩種, 一種是 request all, 這指令是非連續(xù)性的讀卡指令, 只讀一次; 另一種是 re-quest std, 這是連續(xù)性的讀卡指令。當卡片收到該指令后, 卡片內(nèi)的 ATR 將啟動, 并將卡片的 Block 0 中的卡片類型 (TagType) 號共 2 個字節(jié)傳送給讀卡器 , 從而
建立卡片與讀卡器的第一步通信聯(lián)絡, 完成詢卡過程。
( 2 ) 防沖突: 如果有多張 Mifare 卡片處在卡片讀寫器的天線工作范圍之內(nèi), MF RC500 能檢測出來并通知到 MCU 。此時 MCU 通過防沖突算法來與每一張
卡進行通訊。由于每一張 Mifare 卡片都具有其唯一的序列號而決不會相同, 因此, MCU 根據(jù)卡片的序列號來保證一次只對一張卡進行操作。(根據(jù) ISO14443 協(xié)議, M1 型卡傳統(tǒng)的防沖突算法是動態(tài)二進制檢索樹算法。它首先利用 MANCHESTER 編碼“沒有變化”的狀態(tài)來檢測碰撞位, 然后把碰撞位設為二進制“ 1 ”, 用SELECT 命令發(fā)送碰撞前接收的部分卡片序列號和碰撞位, 如果卡片開頭部分序列號與其相同, 則做出應答, 不相同則沒有響應。以此來縮小卡片范圍, 最終達到無碰撞)。
( 3 ) 選卡: 通過以上兩步以后, MCU 選取一張卡的序列號進行通訊, 即選卡。
( 4 ) 驗證密碼: 選定要處理的卡片之后, MCU 確定要訪問的扇區(qū)號, 并對該扇區(qū)密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。
(在選擇另一扇區(qū)時, 必須進行另一扇區(qū)密碼校驗。)
( 5 ) 讀寫卡: 讀寫操作是對卡的最后操作, 包括讀( Read )、寫 ( Write )、增 值 ( Increment )、減 值 ( Decre-ment )、存儲( Restore )和傳送( Transfer )等操作。
( 6 ) ?: 當一系列的操作完成后, MCU 發(fā)送一個?罱o卡片, 使其退出工作。
在非接觸通訊中, 為了保證讀寫器和卡片之間數(shù)據(jù)傳遞完整、可靠, 采取以下措施: 一是防沖突算法 ,二是通過 16 位 CRC 糾錯, 三是檢查每字節(jié)的奇偶校
驗位, 四是檢查位數(shù), 五是用編碼方式來區(qū)分“ 1 ”、“ 0 ”或無信息 。為提高處理和響應速度, 程序設計采用單片機匯編語言和 C 語言混合編程。中斷服務程序采用匯編語言編寫, 其它程序采用 C 語言編寫。
4 結束語
本文設計了基于 MF RC500 的 Mifare1 射頻卡嵌入式讀寫器。經(jīng)實踐驗證 , 本系統(tǒng)能對范圍內(nèi)的多個卡準確無誤地讀寫。在此讀寫器的基礎上, 稍加修改就能開發(fā)成不同的射頻識別應用系統(tǒng), 對 RFID 的推廣具有一定的實用價值。
|