<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于MF RC500的射頻識別讀寫器設(shè)計

          基于MF RC500的射頻識別讀寫器設(shè)計

          作者: 時間:2005-04-11 來源:網(wǎng)絡(luò) 收藏

          摘要:主要介紹一種Philips公司的 :首先介紹系統(tǒng)的組成以及 的特性,接著給出天線的規(guī)范,最后給出MCU 89C52與 的接口原理圖、對Mifare卡操作流程以及及讀卡的程序。該系統(tǒng)選用Mifare卡作為系統(tǒng)的應(yīng)答器(PICC),電路穩(wěn)定,系統(tǒng)運行正常。

          關(guān)鍵詞:技術(shù) 應(yīng)答器PICC PCD Mifare卡 MF RC500

          與傳統(tǒng)的接觸式IC卡、磁卡相比較,利用技術(shù)(radio frequncy identification)開發(fā)的非接觸式IC識別器,在系統(tǒng)壽命、防監(jiān)聽、防解密等性能上具有很大的優(yōu)勢。利用MCU 89C52、MF RC500、、Mifare卡等構(gòu)建非接觸式IC,并在該讀寫器基礎(chǔ)上能很容易地開發(fā)出適用于各方面的自動識別系統(tǒng)。

          1 MF RC500介紹

          MF RC500是應(yīng)用于13.56MHz非接觸式通信中高集成讀卡IC系列中的一員。該讀卡IC系列利用先進的調(diào)制和解調(diào)概念,完全集成了在13.56MHz下所有類型的被動非接觸式通信方式和協(xié)議。MF RC500支持ISO14443A所有的層,內(nèi)部的發(fā)送器部分不需要增加有源電路就能夠直接驅(qū)動近操作距離的天線(可達100mm);接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于ISO14443兼容的應(yīng)答器信號;數(shù)字部分處理ISO14443A幀和錯誤檢測(奇偶CRC)。此外,它還支持快速CRYPTO1加密算法,用于驗證Mifare系列產(chǎn)品。方便的并行接口可直接連接到任何8位微處理器,給讀卡器/終端的提供了極大的靈活性。

          2 系統(tǒng)組成

          從圖1可以看出,系統(tǒng)主要由MCU、時鐘芯片、MFRC500、液晶屏、看門狗以及485通信模塊組成。系統(tǒng)的工作方式主要是,先由MCU控制MF RC500驅(qū)動天線對Mifare卡,也就是應(yīng)答器(PICC),進行讀寫操作。然后,根據(jù)所得的數(shù)據(jù)對其它接口器件,如液晶屏、EEPROM、時鐘芯片等,進行響應(yīng)操作。最后,與PC機之間進行通信,把數(shù)據(jù)傳給上位機。

          MCU采用89C52,是因為89C52開發(fā)簡單,運行穩(wěn)定。EEPROM采用24C256,用于存儲系統(tǒng)的數(shù)據(jù)。24C256是串口操作方式,是一種性價比較高的存儲芯片。液晶屏采用帶字庫的ST7920,是因為它是并口操作方式的,操作方便。時鐘芯片采用DS12C887。DS12C887是Dallas公司生產(chǎn)的新型產(chǎn)品,內(nèi)置電池,可連續(xù)使用10年,可以方便記錄事件的發(fā)生時間。為了防止系統(tǒng)“死機”,使用x5045作為看門狗。X5045是串口工作方式,內(nèi)置EEPROM,可用來存儲一些系統(tǒng)參數(shù)。與上位機的通信采用RS-485通信模塊,通信距離可以達到1000m左右。

          整個系統(tǒng)由24V電源供電,再由穩(wěn)壓模塊7805穩(wěn)壓成5V的電源。由于7805的工作熱量很高,故在7805上安置一個散熱片。

          3 系統(tǒng)工作原理

          系統(tǒng)數(shù)據(jù)存儲在無源Mifare卡,也就是PICC中。從圖2可以看出,PCD的主要任務(wù)是傳輸能量給PICC,并建立與之的通信。PICC是由一個電子數(shù)據(jù)作載體,通常由單個微型芯片以及用作天線的大面積線圈等組成;而PCD產(chǎn)生高頻的強電磁場,這種磁場穿過線圈橫截面和線圈周圍的空間。因為MF RC500提供的頻率為13.56MHz,所以其波長比PCD的天線和PICC之間的距離大好多倍,可以把PICC到天線之間的電磁場當(dāng)作簡單的交變磁場來對待。PCD天線線圈發(fā)射磁場的一小部分磁力線穿過PICC的天線線圈,接著PICC的天線線圈和電容器C構(gòu)成振蕩回路,調(diào)頻到PCD的發(fā)射頻率?;芈返闹C振使PICC線圈的電壓達到最大值,將其整流后作為數(shù)據(jù)載體(微型芯片)的電源。PICC啟動之后 ,可與PCD之間進行數(shù)據(jù)通信。

          如上所述可以看出,PCD的性能與天線的參數(shù)有著直接的關(guān)系。在對天線的性能進行優(yōu)化之后,PCD的讀卡距離可以達到10cm。

          4 PCD的天線設(shè)計

          由于MF RC500的頻率是13.56MHz,屬于短波段,因此可以采用小環(huán)天線。小環(huán)天線有方型、圓形、橢圓型、三角型等,本系統(tǒng)采用方型天線。天線的最大幾何尺寸同工作波長之間沒有一個嚴格的界限,一般定義為:

          L/λ≤1/(2π) (1)

          式(1)中,L是天線的最大尺寸,λ是工作波長。對于13.6MHz的系統(tǒng)來說,天線的最大尺寸在50cm左右。

          在天線設(shè)計中,品質(zhì)因數(shù)Q是一個非常重要的參數(shù)。對于電感耦合式射頻識別系統(tǒng)的PCD天線來說,較高品質(zhì)因數(shù)的值會使天線線圈中的電流強度大些,由此改善對PICC的功率傳送。品質(zhì)因數(shù)的計算公式為:

          Q=(2πf0Lcoil)/Rcoil (2)

          式(2)中的f0是工作頻率,Lcoil是天線的尺寸,Rcoil是天線的半徑。通過品質(zhì)因數(shù)可以很容易計算出天線的帶寬:

          B=f0/Q (3)

          從式(3)中可以看出,天線的傳輸帶寬與品質(zhì)因數(shù)成反比關(guān)系。因此,過高的品質(zhì)因數(shù)會導(dǎo)致帶寬縮小。從而減弱PCD的調(diào)制邊帶,會導(dǎo)致PCD無法與卡通信。一般系統(tǒng)的最佳品質(zhì)因數(shù)為10~30,最大值不能超過60。

          5 MF RC500與MCU 89C52的部分接口電路

          圖3為MF RC500與MCU的接口原理。由圖3可以看出,本系統(tǒng)采用中斷(INT1)工作模式,即MCU利用MFRC500提供中斷信息對其進行控制。另外,根據(jù)系統(tǒng)的需要,可以采用查詢方式對MF RC500進行操作。

          6 對Mifarel卡操作流程

          整個系統(tǒng)的工作由對Mifare卡操作和系統(tǒng)后臺處理兩大部分組成。由于篇幅有限,本文只介紹對Mifare卡操作流程。Mifare卡的操作可以分為以下幾項。

          (1)復(fù)位請求

          當(dāng)一張Mifare卡片處在卡處讀寫器的天線的工作范圍之內(nèi)時,程序員控制讀寫器向卡片發(fā)出REQUEST all(或REQUEST std)命令??ㄆ腁TR將啟動,將卡片Block 0中的卡片類型(TagType)號共2個字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。

          如果不進行得位請求操作,讀寫器對卡片的其它操作將不會進行。

          (2)反碰撞操作

          如果有多張Mifare卡片處在卡片讀寫器的天線的工作范圍之內(nèi)時,PCD將首先與每一張卡片進行通信,取得每一張卡片的系列號。由于每一張Mifare卡片都具有其唯一的序列號,決不會相同,因此PCD根據(jù)卡片的序列號來保證一次只對一張卡操作。該操作PCD得到PICC的返回值為卡的序列號。

          (3)卡選擇操作

          完成了上述二個步驟之后,PCD必須對卡片進行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)。

          (4)認證操作

          經(jīng)過上述三個步驟,在確認已經(jīng)選擇了一張卡片時,PCD在對卡進行讀寫操作之前,必須對卡片上已經(jīng)設(shè)置的密碼進行認證。如果匹配,才允許進一步的讀寫操作。

          (5)讀寫操作

          對卡的最后操作是讀、寫、增值、減值、存儲和傳送等操作。

          7 讀卡程序

          根據(jù)上面的流程,采用Keil C的C語言進行編程,程序如下:

          char M500Reset(void)

          { char status;

          RC500RST=0; //RC500在RSTPD腳由高變低的時候復(fù)位

          delay_1ms(25); //注意延時的長度,本系統(tǒng)的晶振頻率是11.0592MHz

          RC500RST=1;

          delay_50us(200);

          RC500RST=0;

          delay_50us(50);

          .

          .

          .

          return status;

          }

          char M500Config(void)//對RC500的寄存器進行初始化

          char M500PiccCommonRequest(unsigned char req_code,unsigned char *atq)

          圖3

          //RC500發(fā)送請求。req_code是請求模式,一共有request all和Request std兩種模式。Request all指令是非連續(xù)性的讀卡指令,只讀一次。但有個例外,當(dāng)某一次Request all指令讀卡片失敗時,例如,卡片沒能通過密碼認證或其它原因而出錯時,Request all指令將連續(xù)地讀卡,直到讀卡成功才進入非連續(xù)性的讀卡模式。Request std指令的使用和Request all指令剛巧相反。Request std指令是連續(xù)性的讀卡指令。當(dāng)某一張卡片在MCM之天線的有效的工作范圍(距離)內(nèi),Request std指令在成功地讀取這一張卡片之后,進入MCM對卡片的其它操作。如果其它操作完成之后 ,程序員又將MCM進入Request std指令操作,則Request std指令將連續(xù)地再次進行讀卡操作,而不管這些片卡是否被拿卡。只要有一張卡片進入MCM之天線的有效的工作范圍(范圍)內(nèi),Request std指令將始終連續(xù)地再次進行讀卡操作。對于Mifare1卡,該函數(shù)反回值為0004H。

          char M500PiccCascAnticoll(unsigned char bcnt,unsigned

          char *snr) //反碰撞函數(shù),得到一張卡的序列號

          //存入snr中

          char M500PiccCascSelect(unsigned char *snr,unsigned char *sak) //選中snr指定的卡,對于Mifarel卡返回值為0008H,值存入sak中

          char M500PiccAuthKey(unsigned char auth_mode,unsigned char *snr,unsigned char *keys,unsigned char block)

          //這是三輪認證函數(shù),整個過程包括:先將所要訪問的區(qū)密碼加密(如區(qū)0的初始密碼為6個FFH),再將加密后的密碼通過Loadkey存入MF RC500的Key緩存中,接著進行認證。

          Char M500PiccRead(unsigned char addr,unsigned char *_data) //最后讀卡,讀到的數(shù)據(jù)存入_data中

          結(jié)語

          本文主要介紹一種MF RC500的射頻識別讀寫器的設(shè)計方法。試驗證明系統(tǒng)運行穩(wěn)定,在此讀寫器的基礎(chǔ)上,只要稍加屐就能開發(fā)成不同的射頻識別應(yīng)用系統(tǒng),如考勤系統(tǒng)、門禁 系統(tǒng)、公交車收費系統(tǒng)等。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();