單片機與RFID的非接觸式讀卡器軟件設計

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

上海譽澄智能科技有限公司智能系統事業部 All rights reserved 地址:上海金沙江西路1075弄1號寫字樓  
電話: 021-59786133 18621810519(24小時)   郵箱:[email protected]  QQ:529131638 9223677 9603426 滬ICP備10219392號  

滬公網安備 31011402002854號

更多
十二生肖买马开奖结果