實驗11 NFC通信實驗_第1頁
實驗11 NFC通信實驗_第2頁
實驗11 NFC通信實驗_第3頁
實驗11 NFC通信實驗_第4頁
實驗11 NFC通信實驗_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實驗11NFC通信實驗-V20170317實驗?zāi)康牧私釴FC近場通信原理和過程;學(xué)習(xí)PN532的使用;實驗設(shè)備硬件:RFID實驗箱6號NFC節(jié)點;軟件:STC下載軟件STC_ISP,RFID實驗箱管理軟件;芯片手冊:配套光盤\附件'芯片手冊\PN532用戶手冊實驗原理3.1NFC簡介NFC是NearFieldCommunication縮寫,即近距離無線通訊技術(shù)。是一種短距離的高頻無線通信技術(shù),允許電子設(shè)備之間進(jìn)行非接觸式點對點數(shù)據(jù)傳輸,在十厘米(3.9英口寸)內(nèi),交換數(shù)據(jù)。這個技術(shù)由免接觸式射頻識別(RFID)演變而來,由飛利浦公司和索尼公司共同開發(fā)的NFC是一種非接觸式識別和互聯(lián)技術(shù),可以在移動設(shè)備、消費類電子產(chǎn)品、PC和智能控件工具間進(jìn)行近距離無線通信。3.2工作模式卡模式(Cardemulation):這個模式其實就是相當(dāng)于一張采用RFID技術(shù)的IC卡(個人理解)??梢蕴娲F(xiàn)在大量的IC卡(包括信用卡)場合商場刷卡、公交卡、門禁管制,車票,門票等等。此種方式下,有一個極大的優(yōu)點,那就是卡片通過非接觸讀卡器的RF域來供電,即便是寄主設(shè)備(如手機(jī))沒電也可以工作。點對點模式(P2Pmode):這個模式和紅外線差不多,可用于數(shù)據(jù)交換,只是傳輸距離比較短,傳輸創(chuàng)建速度快很多,傳輸速度也快些,功耗低(藍(lán)牙也類似)。將兩個具備NFC功能的設(shè)備鏈接,能實現(xiàn)數(shù)據(jù)點對點傳輸,如下載音樂,交換圖片或者同步設(shè)備地址薄。因此通過NFC,多個設(shè)備如數(shù)字相機(jī),PDA,計算機(jī),手機(jī)之間,都可以交換資料或者服務(wù)。讀卡器模式(Reader/writermode):作為非接觸讀卡器使用,比如從海報或者展覽信息電子標(biāo)簽上讀取相關(guān)信息。本實驗介紹點對點通信模式的應(yīng)用。3.3指令幀格式Normalinformationframe:正常信息數(shù)據(jù)幀格式Po£tarrbl&PacketDalaSpadRcPN532FrameIden(i1i6rStart由PaitkalCod&Pack&tDataChecksumPacketL&rtgthChstksumiPo£tarrbl&PacketDalaSpadRcPN532FrameIden(i1i6rStart由PaitkalCod&Pack&tDataChecksumPacketL&rtgthChstksumiPacketLengthPreambleFig13.NormalinformationframePREAMBLESTARTCODELENbyte4,bytes(0x00andOxFF),1byteindicatingthenumberofbytesinthedataHeld(TFIandPDOtoPDn),>LCS1PacketLengthChecksumLCSbytethatsatisfiestherelation:Lowerbyteof[LEN+LCS]=Ox。。,>TFI1byteframeidentifier,thevalueofthisbytedependsonthewayofthemessage-D4hincaseofaframefromthehostcontrollertothePN532,-D5hincaseofaframefromthePN532tothehostcontroller.>DATALEN-1bytesofPacketDataInformationThefirstbytePDOistheCommandCode,>DCS1DataChecksumDCSbytethatsatisfiestherelation:Lowerbyteof[TFI+PDO+PD1+…+PDn+DCS]=0x00H>POSTAMBLE1byte2.Theamountofdatathatcanbeexchangedusingthisframestructureislimitedto255bytes(includingTFI).Extendedinformationframe:擴(kuò)展信息數(shù)據(jù)幀格式0000FFExtendedinformationframe:擴(kuò)展信息數(shù)據(jù)幀格式0000FFFFFFLENhLCSTFIPDOPD1 PIDnDCS00Thestructureofthisframeisthefollowing:PostsmtiePacketDataQhecksumPacketD日由Specific:TFIPacketLengthChecksumPacketLangthStadofPscketCodePreambleNormalPscketLengthChecksum:FetedtoFFvalueNormalPscketUEyrlh:NormalPscketUEyrlh:Feted1dFFvalueFig14.ExtendedInformationframeThenormalLENandLCSfieldsarefixedtotheOxFFvalue,whichisnormallyconsideredaserroneousframe,duetothefactthatthechecksumdoesnotfit.ThereallengthisthencodedinthetwofollowingbytesLENm(MSByte)andLENl(LSByte)with:LENGTH-LENmx256+LENlcodingthenumberofbytesinthedatafield(TFIandPDOtoPDn)LCS1PacketLengthChecksumLCSbytethatsatisfiestherelation:Lowerbyteof[LENM+LENl+LCS]=0x00dDATALENGTH-1bytesofPacketDataInformationThefirstbytePDOistheCommandCode.Thehostcontroller,forsendingframewhoselengthislessthan255bytes,canalsousethistypeofframe.But,thePN532alwaysusesthesuitabletypeofframe,dependingonthelength(NormalInformationFrameforframe<=255bytesandExtendedInformationFrameforframe>255bytes).ACKframe:應(yīng)答數(shù)據(jù)幀格式ThespecificACKframeisusedforthesynchronizationofthepacketsandalsofortheabortmechanism.ThisframemaybeusedeitherfromthehostcontrollertothePN532orfromthePN532tothehostcontrollertoindicatethatthepreviousframehasbeensuccessfullyreceived.ACKframe:GOIFF|DO|FF|00 Postamble ACKPacketCode StartofPacketCode PreambleFig15.ACKframeNACKframe:非應(yīng)答數(shù)據(jù)幀格式ThespecificNACKframeisusedforthesynchronizationofthepackets.ThisframeisusedonlyfromthehostcontrollertothePN532toindicatethatthepreviousresponseframehasnotbeensuccessfullyreceived,thenaskingfortheretransmissionofthelastresponseframefromthePN532tothehostcontrollerNACKframe:飛0|00|FF|FFj加00 Postamble NACKPacketCode StartofPacketCode PreambleFig16.NACKframeErrorframe:錯誤數(shù)據(jù)幀格式ThesyntaxerrorframeisusedtoinformthehostcontrollerthatthePN532hasdetectedanerrorattheapplicationlevel.Errorframe:0000FF01FF7F8100 — Postamble PacketDataChecksum SpecificApplicationLevelErrorCode PacketLengtfiChecksum PacketLengtfi StartofPacketCode PreambleFig17.Errorframe更多芯片資料,請查看PN532數(shù)據(jù)手冊:配套光盤\附件'芯片手冊\PN532用戶手冊3.4代碼分析3.4.1主機(jī)代碼分析在NFC通信實驗中,主機(jī)是通信的發(fā)起端(initiator)。nfc.c文件中,是操作PN532的指令和函數(shù):1喚醒指令上電喚醒一次即可,無需多次喚醒。u8xdatanfc_wkup_cmd[26] ={0x55,0x55,0x00f0x00r0x00,0x00f0x00f0x00,0x00r0x00,0x00f0x00,0x00f0x00r0x00z0x00f0x00f0x00,OxFF70x03zOxFDj0xD4r0x14r0x01,0x17,0x00};

IW他說明:詳細(xì)的指令介紹可以參考PH53W手冊****************************************/gidnfc_WakeUp(void] 〃喚醒PM532基―。:UART2SendData(nfcwkupcmdr26);熾MiCms(脫0, — —,,正確返回:0000FF00FF00 0000FF02FED5151600,藐芭E—?2參數(shù)配置指令 8xdatapara_set_cmd[10] ={0x00f0x00r0xFFf0x03,OxFDf0xD4T0x12z0x14,0x06f0x00};理函數(shù)名:voidnfc_CQtifiq-(void)他功能:參數(shù)配置@參數(shù)值:無@返回值:無@說明:***會*****會*我**ww*我張*******會*我***財*我***做*id:rLfc_Co:n.fig(void) //參數(shù)配置u8checkstatus=0;while(1)UART2_SendData(para_set_cmdr10);delay_ms(20);0000FF02FED5131800//正確返囪二0000FF00FF00check_status=dieck_Response0000FF02FED5131800if(check_status==0)break;3打開天線uBxdataopen_RF_cmd[11]{0x00,OxOOjrOxFF,0x04,DxFC,0x04,0x32,0x01,0x01,0xF8f0x00)uBxdataopen_RF_cmd[11]/***************************************他函數(shù)名:voidnfc_openRF(void)他功能:打開天線一他參數(shù)值:無他返回值:無他說明:*.**.***,世世世世世世世世世世世世世世世世世世世世世世世丸丸丸世世世世丸丸世世/voidnfc_ope:nRF(void) 〃打開天線u8check_sta.tus=0;while(1)UART2_SendData.(open_RF_cmdT11);dela.y_ms(20);〃正確返瓦0000FF00FF00 0000FF02FED533F800check_sta.tus=Check_Response();if(check_sta.tus==0)5voidnfcsetRPTtimes(void)〃設(shè)置重篡次數(shù)voidnfcsetRPTtimes(void)〃設(shè)置重篡次數(shù)110n81g120121122123124125126127123129130131132133134135136137138139140141 }4設(shè)置重復(fù)次數(shù)u8xdatarpt_times_cmd[13] ={0x00,0x00,OxFF,0x06,OxFA,0xD4,0x32,0x05,OxFF,OxFF,OxFF,OxF8,0x00):口浦日/***************************************089@函數(shù)名:voidnfc_setRPTtimes(void]090@功能:設(shè)置重復(fù)歡數(shù)091@參數(shù)值:無092@返回值:無093@說明:口94 ########################################y096<u8check_statns=0;while(1){UART2_SendData.(rpt_times_cmdr13};delay_ms(20);〃正確返回:0000FF00FF00 0000FF02FED533F800check_statns=Check_Response(};if(check_statns==O}break;}5檢測從機(jī)檢測從機(jī)信號,若5s內(nèi)主機(jī)未檢測到從機(jī),則提示未接收到數(shù)據(jù),并結(jié)束本次請求;若檢測到從機(jī),則進(jìn)行數(shù)據(jù)交換。u.8xdatajumpforDEP_cmd[17]={0x00r0x00f0xFFf0x0^f0xF6f0xD4j0x56jOxOC70x0170x01rOxOOjrOXFFjrOXFFjr0X00jrOxOFjrOXCVjr0x00);nfc_jnmpforDEP(void) 〃檢測從機(jī)u.8i=10C;UTkRT2_SendData(jumpfQrDEP_cmd717);delay_ms(60);if(rev_fin.ish_flag2==l££RXCouTLter2==6)//0000FF00FF00{一一rev_finish_f =C;EtXCoimter2=C;while(i一) //100*50ms打等待{delay_ms(50);if(rev_finish_flag2==l){一一delay_ms(100); 〃等待數(shù)據(jù)返回rev_fin.ish._flag2=0;E<XCoujiter2=0;returnrevdata_OR; 等待時間內(nèi)*接收到從機(jī)數(shù)據(jù))}}returnrevdata_ERROR; 日等待結(jié)束,未接收到從機(jī)數(shù)據(jù)6取消選定&釋放設(shè)備完成一次數(shù)據(jù)傳輸,需發(fā)送這亮條指令給PN532。118xdatadeselect_cmd[10]={0x00,0x00f0xFFz0x03f0xFDf0x04,0x44f0x00f0xE8f0x00};n8xdatarelease_cmd[10] ={0x00,0x00f0xFFz0x03f0xFDf0xD4f0x52r0x00f0xDAf0x00);id:nfc_deselect(void) //取旨'肖選定UART2_SendData.(deselect_cmdf10);delay_ms(20);〃正確返回:0000FF00FF00 0000FF03FDD54500E600〃釋放設(shè)備idnfc_release(void)〃釋放設(shè)備UART2_SendData(release_cmd710);delay_ms(20);0000FF03FDD55300D900〃正礴返回:00000000FF03FDD55300D9003.4.2從機(jī)代碼分析在NFC通信實驗中,從機(jī)是通信的目標(biāo)端(target)。nfc.c文件中,是操作PN532的指令和函數(shù)。從機(jī)的喚醒,參數(shù)配置,釋放設(shè)備和主機(jī)操作是一致的,以下分析從機(jī)的主要操作:1開啟目標(biāo)端發(fā)送指令給PN532,使主機(jī)可以檢測到從機(jī)。u8xdataget_data_cmd[9] ={0x00r0x00r0xFFf0x02r0xFef0xD4r0x86,0xa6f0x00};IF…………………虺函數(shù)名:voidnfc_target_start(void]一****************************************/voidnfc_target_start(void] ■目標(biāo)端啟動UART2SendData(tarstartcmdf50];}…皿“--2獲取數(shù)據(jù)從機(jī)信號被主機(jī)檢測到后,從機(jī)發(fā)送數(shù)據(jù)給發(fā)起端開始數(shù)據(jù)交換,主機(jī)成功獲取到從機(jī)發(fā)來的數(shù)據(jù)后,主機(jī)發(fā)送數(shù)據(jù)給從機(jī),從而實現(xiàn)數(shù)據(jù)交換。若5s內(nèi)從機(jī)未被主機(jī)檢測到(即沒有應(yīng)答數(shù)據(jù)返回),則結(jié)束本次請求;若5‘內(nèi)被主機(jī)檢測到,則進(jìn)行數(shù)據(jù)交換。u.8xdataget_data_cmd19]{0x00jO'xOC7OxFFj0x02TOxFef0xD4,0x86f0xa670x00}u.8xdataget_data_cmd19]8nfc_getdata(void) 〃獲取數(shù)據(jù)u8j=100;UABLT2_SendData(get_data_cmdf9);delay_ms(40);while(j--) //100*50ms5s等待{delay_ms(50);if(rev_finish_flag2==lt&RXCoimter2>l6){一一returnrevdataOK; 等待時間內(nèi),接收到主機(jī)數(shù)據(jù)})returnrevdata_ERROR; //Ss等待結(jié)束,未接收到主機(jī)數(shù)據(jù)3.5實例分析硬件連接說明:串口1連接DB9,可與上位機(jī)連接,或通過公公交叉線連接wifi節(jié)點;串口2連接PN532的串口,可以對PN532進(jìn)行配置,并接收PN532發(fā)來的數(shù)據(jù)。例如,主從機(jī)需要交換如下數(shù)據(jù):主機(jī)數(shù)據(jù):1234從機(jī)數(shù)據(jù):abcd3.5.1主機(jī)操作步驟第一步:待發(fā)送數(shù)據(jù)整理根據(jù)3.3小節(jié)的幀格式,將“1234”整理成指定的數(shù)據(jù)幀:整理后得到:0000FF07F9D44001313233342100其中,31323334為字符1234的ASCII值的的十六進(jìn)制.第二步:發(fā)送參數(shù)配置指令發(fā)送:0000FF03FDD412140600返回:0000FF00FF000000FF02FED5131800第三步:發(fā)送打開天線指令發(fā)送:0000FF04FCD4320101F800返回:0000FF00FF000000FF02FED533F800第四步:發(fā)送重復(fù)次數(shù)配置指令發(fā)送:0000FF06FAD43205FFFFFFF800返回:0000FF00FF000000FF02FED533F800第五步:發(fā)送檢測從機(jī)信號指令發(fā)送:0000FF0AF6D45600010100FFFF000FC700返回:0000FF00FF000000FF17E90001123456789ABCDEFF00000000000903123456786C00第六步:發(fā)送含“1234”的數(shù)據(jù)幀當(dāng)主機(jī)檢測到從機(jī),并得到正確的應(yīng)答數(shù)據(jù)時,主機(jī)發(fā)送含“1234”的數(shù)據(jù)幀:發(fā)送:0000FF07F9D44001313233342100返回:0000FF06FAD48E616263641400此時,數(shù)據(jù)交換成功。主機(jī)獲得從機(jī)數(shù)據(jù)“abcd”,從機(jī)將獲得主機(jī)數(shù)據(jù)“1234”。第七步:發(fā)送取消選定指令發(fā)送:0000FF03FDD44400E800返回:0000FF00FF000000FF03FDD54500E600第八步:發(fā)送釋放設(shè)備指令發(fā)送:0000FF03FDD45200DA00返回:0000FF00FF000000FF03FDD55300D8003.5.2從機(jī)操作步驟第一步:待發(fā)送數(shù)據(jù)整理根據(jù)3.3小節(jié)的幀格式,將“1234”整理成指定的數(shù)據(jù)幀:整理后得到:0000FF06FAD48E616263641400其中,61626364為字符abcd的ASCII值的的十六進(jìn)制。第二步:發(fā)送參數(shù)配置指令發(fā)送:0000FF03FDD412140600返回:0000FF00FF000000FF02FED5131800第三步:發(fā)送關(guān)閉天線指令發(fā)送:0000FF04FCD4320100F900返回:0000FF00FF000000FF02FED533F800第四步:發(fā)送啟動目標(biāo)端指令發(fā)送:0000FF2BD5D48C0208001234564001FE123456789012C0C1C2C3C4C5C6C70FAB123456789ABCDEFF0000041234567800D000第五步:發(fā)送獲取數(shù)據(jù)指令在第四步完成之后,如果有主機(jī)在等待從機(jī)信號,從機(jī)則發(fā)送獲取數(shù)據(jù)的指令。發(fā)送:0000FF02FED486A600返回:0000FF07F9D44001313233342100第六步:發(fā)送含“abcd”的數(shù)據(jù)幀從機(jī)成功接收到主機(jī)發(fā)來的數(shù)據(jù),則發(fā)送待交換的數(shù)據(jù)給主機(jī),以完成數(shù)據(jù)交換。發(fā)送:0000FF06FAD48E616263641400第七步:發(fā)送釋放設(shè)備指令:發(fā)送:0000FF03FDD45200DA00第八步:發(fā)送休眠指令:發(fā)送:0000FF03FDD416F026004.實驗過程4.1準(zhǔn)備工作本實驗需要先將實驗箱恢復(fù)至出廠狀態(tài)再進(jìn)行,請根據(jù)配套光盤\附件中將物聯(lián)網(wǎng)RFID實驗箱恢復(fù)到出廠狀態(tài)文檔的操作步驟,將實驗箱恢復(fù)到出廠狀態(tài)。第一步:打開安裝好的RFID實驗箱管理軟件,進(jìn)入軟件主界面,如圖4.2.1所示:<飛瑞敖RFID實驗箱管理軟件VLO1天線1(±)null1 天線2(下)null2 高頓多路1921690.160 40013 高額nutl192.16B.0161 40014 低^nuh192.163.D162 4001未誰接!睚詢 未連接!眠踴 未連接!5天線3(上)nuH5天線虹下)null5 NFC訕?biāo)潞痛谕缚綌?shù)據(jù)!7 超高頻nuEtJ92.1&B.0163 4001S 2.4GHZnull192.163.0J64 軸口1控制未連接!未連接!9天線S(上)null9天線甄下)nullID ETC192.1681165 4001單次控制注意:1、 暮選擇點擊開始按鈕,清先按操作說明的A:RFID&控制節(jié)點&WiFi模式連接做肝蒞備"2、 若選擇點擊NFC模塊的控制按鈕,則按說明操作中的B:NFC&WiFi式連搐做好淮備U天線7(上)null11天線8(下)null12 門禁1Q*7TAGA3、聯(lián)動:楚應(yīng)到相同卡號不會聯(lián)劫,感應(yīng)到不同卡號則聯(lián)動,■c_l■ iuw —ruuii單次控制■ 說明 .開始.說明 開始圖4.2.1軟件主界面第二步:點擊右下角的“說明

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論