版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
#5MFRC522的功能實現(xiàn)為了通過編程實現(xiàn)MFRC522的讀寫卡功能,我們的第一步就是把要用的命令字和地址進行定義。我們通過查找芯片手冊,得到詳盡的MFRC522命令字、MifareOne卡片命令字以及MFRC522各寄存器的功能與定義。接下來,打開KeiluVision4并在工程中添加rc522.h文件,用這個文件定義所有射頻識別過程中可能用到的命令字與地址:IProiErt.?需IINCLUDt.H1^].jnain.cLSfllO&H角ZIJMO.h?JRCJJJ.HH-aTarget1白令SourreGroup1IProiErt.?需IINCLUDt.H1^].jnain.cLSfllO&H角ZIJMO.h?JRCJJJ.HH-aTarget1白令SourreGroup1?生STASTUP.A51£■國byt由“1]main.t±-固^532.:<indud^.hJksKK.h:Tc522.b:■JZlWOh?』main.h://///////////////////////Eifai=_Cn-卡F命令字D[H[.tifndEf_r-=£22_h_DQ2idelire_rc522_h_D03—一J/EFS22的令字toeiiz:=ECD_ID^EGsDD"取消當imtoefire凱fdJTHEH:OxDE"基證童鋁iderireECDjrc;ErTSCXDE*defirePC3_TFA5Sin7tderiL^PC”THAN5CEI吒OKOC“宣蚩井按收數(shù)拒*defir:E凱2)[EE:託理眩5EOxOFtdellilEPCDCALCCECOKD3//CRC計篡ideiir=PIC2_KE-3IDL0x26"尋超區(qū)由親進人茹眠眞tdeiizePICC~EE^aiI3x52人尋瑤玉內全凱卡ideriLEEiccj^moLLL0X93MelirePICC^TTICOLI2氷95卄新沖撞idem?pi(x_auTHEFnia0K6d"墾證n密窯Meii-ePICE3UTHER71B0x51"呈證£密罰ideluzePIOZREAECK3DMelireFICC^KITEQxADX寫塊idefirBPICt:"DE2BEkZ?n-OkCO"堿Idefiz=PltE^EHCREEZnOxCLA■充洼idelirePICC~R£SrCRZ.?.訐戢揺蘭瓷豐瓷iriFfirrPTrrTRSiWHEW通過上圖大家可以看到,整個522.h文件中基本全都是#define我們只需要將芯片手冊中的信息仔細錄入,并寫好注釋。而且,為了便于管理,rc522.h里的語句被我分成了四類,分別是:①MFRC522命令字②MifareOne卡片命令字③MFRC522寄存器④MF522通訊錯誤的處理代碼接下來,我們就要開始編程實現(xiàn)MFRC522的一些具體功能了。在工程中新建rc522.c文件,在該文件中編寫MFRC5222讀寫卡過程中需要的指令。RC522完整的讀寫卡流程框圖:
RC522完整的讀寫卡流程框圖:N是否有卡YNYN扇區(qū)改變?Y能否通過密碼驗證防沖撞,選卡讀卡或寫卡尋卡N是否有卡YNYN扇區(qū)改變?Y能否通過密碼驗證防沖撞,選卡讀卡或寫卡尋卡根據上面的讀寫卡流程框圖,我們按照每個框的內容編寫與之相對應的程序。?尋卡請求讀寫卡模塊向外發(fā)射激勵信號,一旦有Mifare卡進入讀寫器天線工作范圍,讀寫模塊發(fā)送命令°Mifare卡收到命令后會將卡上的儲存單元中的卡片類型號(TagType)信息即2個字節(jié)數(shù)據發(fā)給讀寫器。從而建立Mifare卡與RC522通信的第一步。尋卡請求函數(shù):charPcdRequest(unsignedcharreq_code,unsignedchar*pTagType)說明:req_code[IN]:尋卡方式0x52=尋感應區(qū)內所有符合14443A標準的卡0x26=尋未進入休眠狀態(tài)的卡pTagType[OUT]:卡片類型代碼0x4400=Mifare_UltraLight0x0400=Mifare_One(S50)0x0200=Mifare_One(S70)0x0800=Mifare_Pro(X)0x4403=Mifare_DESFire操作成功返回值為0即完成整個的尋卡請求。?防沖撞+選定Mifare卡由于RC522在同一時間內只能與一個Mifare卡進行通信,因此在完成尋卡請求之后,為了防止有多個Mifare卡同時處于讀寫卡模塊天線工作范圍而造成沖撞,需進行防沖撞操作,即讀寫卡模塊與一張Mifare卡建立聯(lián)絡,取得其全球唯一的序列號。防沖撞函數(shù):charPcdAnticoll(unsignedchar*pSnr)說明:pSnr[OUT]:用于卡片序列號,4字節(jié)操作成功時函數(shù)返回值為0.在獲得Mifare卡的序列號之后,我們需要做的就是對指定的序列號的Mifare卡進行選定,只有被選中的卡才能與RC522建立進一步的通信,其它的Mifare卡將全部回到初始狀態(tài)。選定Mifar卡函數(shù):charPcdSelect(unsignedchar*pSnr)說明:pSnr[IN]:之前防沖撞操作中獲得的Mifare卡序列號,4字節(jié)操作成功時函數(shù)返回值為0.?驗證Mifare密碼為了訪問Mifare卡中的某個扇區(qū)里存放的數(shù)據,必須進行密碼的驗證。用戶首先要通過編程將已經設定好的密鑰存入RC522內部的密鑰存儲區(qū)中,然后再比對Mifare卡中存放的密鑰與RC522密鑰存儲區(qū)中的密鑰是否相同,只有確認二者相同之后才可以對當前Mifare卡的這個扇區(qū)進行下一步操作。密碼驗證函數(shù):charPcdAuthState(unsignedcharauth_mode,unsignedcharaddr,unsignedchar*pKey,unsignedchar*pSnr)說明:auth_mode[IN]:密碼驗證模式0x60=驗證A密鑰0x61=驗證B密鑰addr[IN]:塊地址pKey[IN]:密碼pSnr[IN]:卡片序列號,4字節(jié)操作正確時返回0.?讀操作完成了密碼認證,我們就可以從Mifare卡中的扇區(qū)中讀出數(shù)據,每次讀出數(shù)據的大小為16字節(jié)。讀操作函數(shù):charPcdRead(unsignedcharaddr,unsignedchar*pData)說明:addr[IN]:塊地址,取值范圍0—63pData[OUT]:從Mifare卡中讀出的數(shù)據,16字節(jié)操作成功返回0.?本次設計中使用的程序:voidctrlprocess(void){unsignedcharii;charstatus;status二PcdRequest(PICC_REQIDL,&RevBuffer[O]);//尋天線區(qū)內未進入休眠狀態(tài)的卡,返回卡片類型2字節(jié)if(status!=MI_OK){return;}status二PcdAnticoll(&RevBuffer[2]);//防沖撞,返回卡的序列號,4字節(jié)的序列號被存放在RevBuffer[2]中if(status!=MI_OK){return;}memcpy(MLastSelectedSnr,&RevBuffer[2],4);//將RevBuffer[2]中存放的4字節(jié)的序列號復制到MLastSelectedSnr變量中存儲for(ii=0;ii<4;ii++){Show816(0,5+2*ii,(MLastSelectedSnr[ii]>>4)&0x0f);Show816(0,6+2*ii,MLastSelectedSnr[ii]&0x0f);}//將4個字節(jié)序列號分別存放到MLastSelectedSnr[O]到MLastSelectedSnr[3],方便后續(xù)的顯示與發(fā)送2MifareOne卡①Mifare卡的激勵首先,通信系統(tǒng)中的讀卡器始終都在通過天線向周圍發(fā)射一組頻率固定的電磁波,這組電磁波即激勵信號。接下來,一旦非接觸式Mifare卡進入讀寫器工作范圍內,即會被讀寫器的激勵限號信號所激勵。受到激勵信號的影響,Mifare卡內部的諧振電路就會產生共振,從而使卡的內部電容中內產生了電荷。而在這個電容的另一端,我們通過一個單向導通的電子泵,就可以將電容內儲存的電荷轉移到另一個電容內儲存。然后,整個共振和電荷轉移的過程周而復始,當電容中存儲的電壓達到2V時,此電容就成為Mifare卡的電源,并開始為卡內的其他電路提供工作電壓,從而幫助Mifare卡完成應答、存儲、通信等一系列功能。ATR模塊的啟動:AnswerToRequest(“應答讀寫器發(fā)出的請求”)當非接觸式Mifare卡進入讀寫器的工作范圍內時,我們就可以控制讀寫器向Mifare卡發(fā)出Requestall(或Requeststd)指令,收到指令后的Mifare卡將啟動ATR模塊。這時,Mifare卡的內部芯片就會將卡的類型號(TagType傳送給讀寫器,從而建立Mifare卡與讀寫器的聯(lián)絡。注意,如果不進行ATR的啟動,讀寫器對卡的進一步操作(讀/寫操作等)將不會進行。所以,我們可以將ATR啟動理解為Mifare卡與讀寫器之間通信的第一步。AntiCollision模塊:Mifare卡防沖突當有多張Mifare卡處在讀寫器的天線工作范圍內時,AntiCollision模塊,即防沖突功能將被啟動。這時,讀寫器首先將逐一地與每一張Mifare卡進行通信,從而讀取每一張Mifare卡序列號(SerialNumber)。由于每一張Mifare卡都的序列號都是獨一無二的,因此我們就可以借助讀寫器中的AntiCollision防重疊模塊以及Mifare卡上的防重疊模塊,通過Mifare卡唯一的序列號來選定多張Mifare卡中的一張。被選中的卡就可以暢通無阻地與讀寫器進行數(shù)據交換,而那些未被選中的卡則處于待命狀態(tài),準備隨時與讀寫器進行通信聯(lián)絡。④SelectApplication模塊:選中并鎖定Mifare卡片當Mifare卡與讀寫器完成了上面的兩個步驟之后,若讀寫器要想對卡進行讀/寫操作,還須對已經完成了ATR啟動的Mifare卡進行“Select”操作,從而使卡真正地被選中。被選中并鎖定的Mifare卡會將卡片上存儲的“Size"字節(jié)傳送給讀寫器。只有當讀寫器收到這一字節(jié)之后,才可對卡進行下一步的操作。Authentication&AccessControl模塊:認證及存取控制模塊以上的三個步驟完成后,我們還必須要對卡上已經設置了的密碼進行認證,只有密碼匹配,我們才能被允許進一步的讀/寫操作。Mifare卡上有16個扇區(qū),每個扇區(qū)都能夠獨立設置各自的密碼,各個扇區(qū)之間互不干涉,因此我們必須逐一地分別加以認證,才能對密碼匹配的扇區(qū)進行下一步的操作。這種設計的優(yōu)點是每個扇區(qū)都可以獨立開來,應用于一個特定的場合,從而讓一張Mifare卡實現(xiàn)多種功能,我們校內的“一^通”就是一個典型的例子。Mifare卡的密碼的認證采用了三次相互的認證的方法,安全性極佳。試圖靠猜測密碼打開卡某個扇區(qū)幾乎不可能。Control&ArithmeticUnit:控制及算術運算單元該單元主要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年天府新區(qū)航空旅游職業(yè)學院單招綜合素質筆試備考試題含詳細答案解析
- 2026年河南推拿職業(yè)學院單招綜合素質考試參考題庫含詳細答案解析
- 2026福建莆田市市直學校招聘新任教師2人(三)考試重點題庫及答案解析
- 2026年保山中醫(yī)藥高等??茖W校單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年長白山職業(yè)技術學院單招綜合素質筆試備考試題含詳細答案解析
- 2026年新疆建設職業(yè)技術學院單招綜合素質考試備考題庫含詳細答案解析
- 2026年河北司法警官職業(yè)學院高職單招職業(yè)適應性測試模擬試題及答案詳細解析
- 2026年廣東水利電力職業(yè)技術學院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年上海立信會計金融學院單招職業(yè)技能考試模擬試題含詳細答案解析
- 2026年山東現(xiàn)代學院單招職業(yè)技能考試模擬試題含詳細答案解析
- 五年級上冊道德與法治第10課-傳統(tǒng)美德-源遠流長-教學反思
- 《看圖找關系》(教學設計)-2024-2025學年六年級上冊數(shù)學北師大版
- 中建技術總工(技術負責人)競聘報告
- DZ∕T 0374-2021 綠色地質勘查工作規(guī)范(正式版)
- 《浙江省安裝工程預算定額》(2010版)
- 心理與教育測量課件
- 化工企業(yè)工藝報警培訓課件
- 《西游記》電子版閱讀-小學版
- 2024年全年日歷表帶農歷(A4可編輯可直接打?。╊A留備注位置 精心整理
- 長沙市財政評審中心 2023年第一期材料價格手冊簽章版
- YS/T 3014-2013載金炭
評論
0/150
提交評論