單片機與RFID的非接觸式讀卡器軟件設計
單片機與RFID的非接觸式讀卡器軟件設計
一、背景
隨著中國物聯(lián)網(wǎng)熱的興起,人們對物聯(lián)網(wǎng)的興趣也極大的增加,各種對物聯(lián)網(wǎng)應用的研究也逐步展開。所謂“物聯(lián)網(wǎng)”(Internet of Things),指的是將各種信息傳感設備,如射頻識別(RFID)裝置、紅外感應器、全球定位系統(tǒng)、激光掃描器等種種裝置與互聯(lián)網(wǎng)結合起來而形成的一個巨大網(wǎng)絡。其目的,是讓任何物品都與網(wǎng)絡連接在一起,方便識別和管理。 物聯(lián)網(wǎng)是利用無所不在的網(wǎng)絡技術建立起來的。
其中非常重要且應用得最為廣泛的的是RFID技術。RFlD是射頻識別技術(Radio Frequency denti-fieation)的英文縮寫,又稱電子標簽,是一項利用射頻信號通過空間耦合(交變磁場或電磁場)實現(xiàn)無接觸信息傳遞并通過所傳遞的信息達到識別目的的技術。RFID具備自動識別的能力,而且能夠應用到任何物體上. RFlD又可分為接觸式與非接觸式兩種. 非接觸式刷卡方便,安全性能高.故其應用越來越廣泛。
射頻識別技術具有很多突出的優(yōu)點:第一,安全性高。適合于高安全性的終端。數(shù)據(jù)安全方面除電子標簽的密碼保護外,數(shù)據(jù)部分可用一些算法實現(xiàn)安全管理。讀寫器與標簽之間存在相互認證的過程??蓪崿F(xiàn)安全通信和存儲,讀寫器具有不直接對最終用戶開放的物理接口,可保證其自身的安全性:第二??赏瑫r識別多個電子標簽;第三,無機械磨損。壽命長。并可工作于各種油漬、灰塵污染等惡劣的環(huán)境;第四,非接觸操作,完成識別工作時無需人工干預。應用便利。正是因為具有這些優(yōu)點,使RFID的應用在近年來如火如荼。為了使復雜的RFID系統(tǒng)簡化。筆者設計了基于單片機與MF RC500型讀卡器的低成本無源RFID系統(tǒng)。系統(tǒng)外部接口為串口,使得包括PC在內(nèi)的有串口的設備可以方便地與它相連。對RFID的推廣有重要意義。
二、方案及元器件選擇
本次讀卡器的RFID芯片上我選擇了Philip公司的mifare技術及其芯片MF RC500, 它目前占據(jù)世界非接觸式IC卡市場80%的份額,具有方案成熟,價資料全面的優(yōu)點格低廉。
隨著半導體技術的進步,單片機成為功能越來越強的片上系統(tǒng)SOC,正向小型化,低功耗及模數(shù)混合的方向發(fā)展,使其在通用小型化系統(tǒng)中成為處理器的首選.而51系列單片機更是其中最為典型,應用最為廣泛,最穩(wěn)定的一系列產(chǎn)品.
因此,在本次非接觸式IC讀卡器的設計上我選擇了atmel公司生產(chǎn)的89c51單片機.它是一種帶4k字節(jié)可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。它結構穩(wěn)定,技術成熟,資料全面,價格低廉.89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
89c51系列單片機與MF RC500的組合已有許多成熟的方案,資料眾多,便于實現(xiàn) 。
三、系統(tǒng)硬件設計
1、系統(tǒng)工作概述
非接觸式卡讀IC卡器硬件電路包括以下部分:控制器,mifare讀寫芯片,天線匹配電路,天線,RS232通信電路,分為電路,電源電路,LED狀態(tài)顯示和蜂鳴器驅動電路等。
RFID標簽由耦合元件及電路組成,其發(fā)射電波及內(nèi)部處理器運行所需能量均來自閱讀器產(chǎn)生的電磁波。無源標簽接收到閱讀器發(fā)出的電磁波信號后。將部分電磁能量轉化為供自己工作的能量。每個電子標簽具有全球惟一的識別號(ID),無法修改、無法仿造,保證了安全性。電子標簽中保存有約定格式的電子數(shù)據(jù)。
天線在標簽和閱讀器間傳遞射頻信號。即標簽的數(shù)據(jù)信息。
RFID閱讀器是讀取(或寫入)電子標簽信息的設備。閱讀器可無接觸地讀取并識別電子標簽中所保存的電子數(shù)據(jù)。能自動識別物體。閱讀器通過網(wǎng)口與計算機相連。將讀取的標簽信息傳送到計算機上。進行下一步處理。
2、MF RC500的特點
Philips公司的MF RC500型讀卡器是應用于13。56 MHz非接觸式通信的高集成讀卡IC系列中的一員。該讀卡IC系列利用先進的調(diào)制和解調(diào)概念。完全集成了在13。56 MHz下所有類型的被動非接觸式通信方式和協(xié)議。MF RC500支持IS014443A所有的層。內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅動近操作距離的天線(可達100 mm):接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于IS014443兼容的應答器信號;數(shù)字部分處理IS014443A幀和錯誤檢測(奇偶&CRC)。此外,它還支持快速CRYPTOI加密算法,用于驗證Mifare系列產(chǎn)品。方便地并行接口可直接連接到任何8位微處理器。給閱讀器的設計提供了極大的靈活性。。MF RC500可方便的用于各種基于ISO/IEC 14443A標準并且要求低成本、小尺寸、高性能以及單電源的非接觸式通信的應用場合。
3、MF RCS00的功能
MF RC500內(nèi)部包括并行微控制器接口、雙向。FIFO緩沖區(qū)、中斷、數(shù)據(jù)處理單元、狀態(tài)控制單元、安全和密碼控制單元、模擬電路接口及天線接口。MF RC500的外部接口包括數(shù)據(jù)總線、地址總線、控制總線(包含讀寫信號和中斷等)和電源等。MF RC500的并行微控制器接口自動檢測連接的8位并行接口的類型。它包含一個易用的雙向FIFO緩沖區(qū)和一個可配置的中斷輸出,為連接各種MCU提供了很大的靈活性。即使采用成本非常低的器件也能滿足高速非接觸式通信的要求。數(shù)據(jù)處理部分執(zhí)行數(shù)據(jù)的并行一串行轉換。支持的幀包括CRC和奇偶校驗。MF RC500以完全透明的模式進行操作。因而支持IS014443A的所有層。狀態(tài)和控制部分允許對器件進行配置以適應環(huán)境的影響,并將性能調(diào)節(jié)到最佳狀態(tài)。當與Mifare Standard和Mifare通信時,使用高速CRYPTOI流密碼單元和一個可靠的非易失性密匙存儲器。模擬電路包含一個具有阻抗非常低的橋驅動器輸出的發(fā)送部分。這使得最大操作距離可達100 mm。接收器可以檢測到并解碼非常弱的應答信號。
根據(jù)RFID原理和MF RC500的特性,可設計基于AT89C51和MF RC500的REID閱讀器系統(tǒng)。
系統(tǒng)主要由AT89C51、MF RC500、時鐘電路、看門狗、MAX232和矩陣鍵盤等組成。系統(tǒng)的工作方式是先由。MCU控制MF RC500驅動天線對Mifare卡也就是對應答器(PICC)進行讀寫操作,然后與PC通信,把數(shù)據(jù)傳給上位機。主控電路采用AT89C51,因為AT89C51的開發(fā)簡單、快捷。運行穩(wěn)定。采用ATMEL的AT24C256型。12C總線EEPROM存儲系統(tǒng)的數(shù)據(jù)。為了防止系統(tǒng)“死機”.使用MAX813作為看門狗來實現(xiàn)系統(tǒng)上電復位、按鍵的熱重啟及電壓檢測等。與上位機的通信采用RS一232方式,整個系統(tǒng)由9V電源供電。再由穩(wěn)壓模塊7805穩(wěn)壓成5V的電源。
MF RC500和單片機AT89C51都是采用標準TTL電平,不需電平轉換。單片機AT89C51與PC串口電平不匹配。使用MAX232型電平轉換器進行電平轉換。
4、系統(tǒng)天線設計
MF RC500的非接觸式天線接口使用4個引腳。
為了驅動天線,MF RC500通過TXl和TX2提供13。56 MHz的能量載波。根據(jù)寄存器的設定對發(fā)送數(shù)據(jù)進行調(diào)制來得到發(fā)送的信號。S50卡采用RF場的負載調(diào)制進行響應。天線拾取的信號經(jīng)過天線匹配電路送到RX腳。MF RC500的內(nèi)部接收器對信號進行檢測和解調(diào)并根據(jù)寄存器的設定進行處理。然后數(shù)據(jù)發(fā)送到并行接口。由微控制器進行讀取。MF RC500對驅動部分使用單獨電源供電。
一般的天線設計要達到如下要求:
1)使天線線圈的電流最大,用于產(chǎn)生最大的磁通量;2)功率匹配。以最大程度地利用產(chǎn)生磁通量的可用能量;3)足夠的帶寬。以便無失真地傳送用數(shù)據(jù)調(diào)制的載波信號。天線是有一定負載阻抗的諧振回路。閱讀器又具有一定的源阻抗。為了獲得最佳性能,必須通過無源的匹配回路將線圈阻抗轉換為源阻抗。然后,通過同軸線纜即可無損失且無輻射地將功率從讀寫器末級傳送到匹配電路。
為了節(jié)約成本和減小系統(tǒng)體積。本系統(tǒng)采用PCB板天線設計。品質(zhì)因數(shù)Q是一個很重要的參數(shù)。用于電感耦合式射頻識別系統(tǒng)的天線,其特征值就是它的諧振頻率和品質(zhì)因數(shù)。較高的品質(zhì)因數(shù)值會增加天線線圈中的電流強度,由此改善對RFID卡的功率傳送。與之相反,天線的傳輸帶寬剛好與品質(zhì)因數(shù)值成反比例變化,選擇的品質(zhì)因數(shù)過高會導致帶寬縮小。從而明顯地減弱卡片接收到的調(diào)制邊。品質(zhì)因數(shù)可以通過電感線圈電抗與電阻的比值計算出來,公式:Q=(coaxLm)/RANT
四、系統(tǒng)軟件設計
1、系統(tǒng)的工作方式
硬件掉電階段
以下三種情況導致系統(tǒng)掉電階段有效:(1)DVDD引腳電壓上升導致上電復位。(2)AVDD引腳電壓上升導致上電復位。(3)RSTPD引腳為高電平。
(1)復位和復位響應
復位和復位響應是根據(jù)ISO/IEC 10536-1標準來進行的, 在操作期間的任意時候都可以復位開始地址計數(shù)器隨一個時鐘脈沖而被設置為零。復位階段需要512個時鐘周期,在復位階段,一些寄存器由硬件預設。如果使用內(nèi)部晶振,需要注意他是由AVDD供電,需要一點時間等到晶振穩(wěn)定。當RST 線從高狀態(tài)(H)置到低狀態(tài)(L)時,第一個數(shù)據(jù)位(LSB)的內(nèi)容被送到I/O上,若連續(xù)輸入32個時鐘脈沖,主存儲器中的前四個字節(jié)地址單元中的內(nèi)容被讀出在第33 個始終脈沖的下降沿I/O線被置成高狀態(tài)而關閉。
(2)命令模式
復位響應以后,芯片等待著命令每條命令都以一個啟動狀態(tài)開始整個命令,包括3 個字節(jié)隨后緊跟著一個附加脈沖,并用一個停止狀態(tài)來結束操作。
啟動狀態(tài):在CLK 為高狀態(tài)(H 狀態(tài))期間I/O 顯得下降沿為啟動狀態(tài)。
停止狀態(tài):在CLK 為高狀態(tài)(H 狀態(tài))期間I/O 顯得上升沿為停止狀態(tài)。
在接受一個命令之后有兩種可能的模式輸出數(shù)據(jù)模式(即讀數(shù)據(jù))和處理數(shù)據(jù)模式。注:IFD (INTERFACE DEVICE)指接口設備。
(3)輸出模式
輸出數(shù)據(jù)模式是將IC 卡芯片中的數(shù)據(jù)傳送個外部設備接口(IFD)的一種操作 ,在第一個CLK 脈沖的下降沿之后I/O 線上的第一位數(shù)據(jù)變?yōu)橛行?,隨后每增加一個時鐘脈沖芯片內(nèi)部的一位數(shù)據(jù)被送到I/O 線上,其傳送順序從每個字節(jié)的最低位(LSB)開始。當所需要的最后一個數(shù)據(jù)送出以后,需要在附加一個時鐘脈沖來把I/O 置成高狀態(tài)以便接受新的命令。在輸出數(shù)據(jù)期間任何啟動狀態(tài)和停止狀態(tài)均被屏蔽掉。
(4)讀操作
基站產(chǎn)生固定間隙的射頻振蕩,并通過控制兩個間隙之間的振蕩時間對位數(shù)據(jù)"1"和位數(shù)據(jù)"0"進行編碼,持續(xù)地發(fā)送位數(shù)據(jù)流,完成寫操作。
(5) 時鐘特性
MF RC500包含一個TIMER, TIMER的主要部分是一個自減計數(shù)器值不為0,就會在時鐘控制下做自減操作。如果AutoRestart置1,則TIMER不會自減到0。當TIMER計數(shù)到1時會在下一個時鐘自動加載TimerReolad寄存器的值。
TIMER時鐘由芯片13.56 MHz時鐘分配得到。由TpreScaler寄存器決定分頻數(shù):
TpreScaler寄存器范圍從0到21,對應T從74ns到150ms。從上一個開始時間到目前的時間范圍為74ns到40s。
2、單片機軟件設計
下位機程序主要包括對MF RC500進行初始化、接收上位計算機的指令、控制MF RC500,并且把MF RC500的狀態(tài)信息反饋給計算機。MCU對Mifare1卡操作的命令主要有空操作、裝載密碼、驗證密碼、讀卡、寫卡和關卡等。無論哪種操作都必須先把命令代碼寫入到Command寄存器,比如執(zhí)行驗證密碼則需要執(zhí)行WriteRC(RegCommand,0x0c)命令。
整個系統(tǒng)的工作由對Mifare卡操作和系統(tǒng)后臺處理兩大部分組成。由于篇幅有限,本文只介紹對Mifare卡操作流程。Mifare卡的操作可以分為以下幾項:
?。?)復位請求
當一張Mifare卡處在讀寫器的天線的工作范圍之內(nèi)時,復位請求開始工作,并按以下步驟進行操作:
1)讀寫器向卡片發(fā)出Request all(或Request std)命令。Request all指令是連續(xù)性的讀卡指令。Request all指令是非連續(xù)性的讀卡指令,只讀一次。
2)Request all指令在成功地讀取一張卡片之后,會一直等待使用者拿走這一張卡片,直到有新一張卡片進入MF的天線有效工作范圍之內(nèi)
3)卡片的ATR將啟動,將卡片Block 0中的卡片類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡。
具體代碼如下:
void SerialIRQ() interrupt 4
{ if(RI){RI=0;
if(SBUF=='[')//開始接收
point_in=0;
else if(!Request all)
{ Request std[point_in]=SBUF;} // 放入緩沖
?。?)反碰撞操作
如果有多張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時,讀卡器將:
1)與每一張卡片進行通信,取得每一張卡片的系列號。由于每一張Mifare卡片都具有其唯一的序列號,決不會相同。
2)讀卡器根據(jù)卡片的序列號來保證一次只對一張卡操作。
3)讀卡器得到PICC的返回值為卡的序列號。
?。?)卡選擇操作步驟
1) MCU向MF RC500發(fā)送“SELECT”命令。
2)同時在“AntiCollision”操作中得到Mifare 1卡片的40bit長的序列號的前四個字節(jié)以及前四個字節(jié)的異或結果。
3)同時再重新發(fā)送給Mifare 1卡,只有本身的序列號和接收的序列號相同的卡片才被真正地選中。
4)Select指令成功執(zhí)行后,MCU將得到DATA寄存器傳來的一個字節(jié)長的卡片容量信息(SIZE字節(jié))。SIZE字節(jié)被存儲在Mifare 1卡片上的第00H扇區(qū)中的第00H 塊中。
?。?)認證操作步驟
1)設置密碼控制寄存器KEYSTACON,使AL=1。
2)然后設置KS0和KS1以指定一套密碼集。
3設置密碼地址寄存器KEYADDR。
4)通過寫"Authentication" 認證命令代碼和寫“地址”(Mifare 1卡要認證的扇區(qū)地址是0~15)到DATA寄存器。如果三遍認證的每一個環(huán)都為“真”,且都能正確通過驗證,則整個認證成功。這時讀寫器即可對剛剛認證通過的卡片上的這個扇區(qū)進行下一步READ/WRITE 等操作。
?。?)讀寫操作步驟
1)“Authentication” 認證指令完成。
2)對數(shù)據(jù)扇區(qū)或數(shù)據(jù)塊進行“Write”寫指令操作。
3)完成數(shù)據(jù)塊的初始化。
3、MF RC500編程方法
除了復位以外。對MF RC500的絕大多數(shù)控制是通過讀寫MF RC500的寄存器來實現(xiàn)的。MFRC500共有64個寄存器,分為8個寄存器頁,每頁8個。每個寄存器都是8位。單片機將這些寄存器作為片外RAM進行操作。最常用的是FIFODATA(數(shù)據(jù)堆棧)、COMMAND(命令)、FIFOLENGTH(堆棧長度)和PRIMARYSTATUS(標記)等。要實現(xiàn)某個操作。只需將該操作對應的代碼寫入對應地址即可。例如MF RC500休眠模式對應的控制寄存器名為Contr01,地址為09H的bit4且為1有效,那么讓MFRC500進入休眠模式只需要將Contr01寫入0x10即可。
當對應的RFlD卡S50進入閱讀器的有效范圍時,天線的能量使RFID卡耦合出自身工作的能量,并建立通信。MF RC500對卡的操作主要是通過寫通訊命令、參數(shù)和數(shù)據(jù)到FIFODATA,再通過寫命令到120MMAND,實現(xiàn)與RFID卡的通訊。
工程中用到的函數(shù)主要有:系統(tǒng)初始化、驗證密碼、復位射頻卡、認證狀態(tài)、防重疊認證、讀?。停桑疲粒遥趴?、寫EEprom、蜂鳴器響、命令執(zhí)行標志置1、沖掉FIFO等。其他就不一一列舉了。很多函數(shù)只是在基本的讀寫寄存器操作的基礎上做了一個封裝,使得調(diào)用起來更加方便,這種模塊化的程序設計方法在項目中得到了很好的體現(xiàn)。
五、結束語
物聯(lián)網(wǎng)的研究以及應用涉及到很多方面,本著專而精的原則,再加上時間的限制,我選擇了應用最為廣泛,且最貼近人們?nèi)粘I畹幕趩纹瑱C與非接觸式IC射的頻讀卡器作為本次的課題。本文介紹了基于Philips公司MF RC500型芯片和atmel公司AT89c51型單片機的RFID閱讀器的低成本軟硬件設計。且重點放在這兩塊芯片的I/O接口設計及相互通信方面,對MF RC500與IC卡片之間的射頻通信及單片機與上位機之間的通信則未作過多的介紹。經(jīng)實踐驗證,本系統(tǒng)可成功實現(xiàn)對符合IS014443協(xié)議的MifareS50卡的讀寫,并且能對范圍內(nèi)的多個卡準確無誤地讀寫,讀寫距離達到8 cm。本系統(tǒng)成本低廉,足協(xié)速度快,可靠性高,操作便利,可以方便地和包括PC在內(nèi)的有申口的設備連接。它可以作為簡單模塊與其他系統(tǒng)相連。對RFID的推廣有重要意義。
通過本次課題的設計,我也從對單片機及射頻方面的知識一點也不懂進步到對單片機的工作原理、接口設計、射頻的原理、系統(tǒng)的整合等都有一定了解。由于之前并沒有相關知識,所以平時主要以看書及查資料為主,邊查邊學習,進步較快。同時也認識到要進行一個項目一定要先進行市場調(diào)查,全面把握,對各方面都要考慮到。
- 上一篇:基于VB界面RFID讀寫器的串口通信上位機軟件設計 2020/4/9
- 下一篇:三種基于RFID+WIFI定位的車輛跟蹤方式 2012/4/30