实验11 NFC通信实验_第1页
实验11 NFC通信实验_第2页
实验11 NFC通信实验_第3页
实验11 NFC通信实验_第4页
实验11 NFC通信实验_第5页
已阅读5页,还剩8页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验11NFC通信实验-V20170317实验目的了解NFC近场通信原理和过程;学习PN532的使用;实验设备硬件:RFID实验箱6号NFC节点;软件:STC下载软件STC_ISP,RFID实验箱管理软件;芯片手册:配套光盘\附件'芯片手册\PN532用户手册实验原理3.1NFC简介NFC是NearFieldCommunication缩写,即近距离无线通讯技术。是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输,在十厘米(3.9英口寸)内,交换数据。这个技术由免接触式射频识别(RFID)演变而来,由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。3.2工作模式卡模式(Cardemulation):这个模式其实就是相当于一张采用RFID技术的IC卡(个人理解)。可以替代现在大量的IC卡(包括信用卡)场合商场刷卡、公交卡、门禁管制,车票,门票等等。此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的RF域来供电,即便是寄主设备(如手机)没电也可以工作。点对点模式(P2Pmode):这个模式和红外线差不多,可用于数据交换,只是传输距离比较短,传输创建速度快很多,传输速度也快些,功耗低(蓝牙也类似)。将两个具备NFC功能的设备链接,能实现数据点对点传输,如下载音乐,交换图片或者同步设备地址薄。因此通过NFC,多个设备如数字相机,PDA,计算机,手机之间,都可以交换资料或者服务。读卡器模式(Reader/writermode):作为非接触读卡器使用,比如从海报或者展览信息电子标签上读取相关信息。本实验介绍点对点通信模式的应用。3.3指令帧格式Normalinformationframe:正常信息数据帧格式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:扩展信息数据帧格式0000FFExtendedinformationframe:扩展信息数据帧格式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:应答数据帧格式ThespecificACKframeisusedforthesynchronizationofthepacketsandalsofortheabortmechanism.ThisframemaybeusedeitherfromthehostcontrollertothePN532orfromthePN532tothehostcontrollertoindicatethatthepreviousframehasbeensuccessfullyreceived.ACKframe:GOIFF|DO|FF|00 Postamble ACKPacketCode StartofPacketCode PreambleFig15.ACKframeNACKframe:非应答数据帧格式ThespecificNACKframeisusedforthesynchronizationofthepackets.ThisframeisusedonlyfromthehostcontrollertothePN532toindicatethatthepreviousresponseframehasnotbeensuccessfullyreceived,thenaskingfortheretransmissionofthelastresponseframefromthePN532tothehostcontrollerNACKframe:飞0|00|FF|FFj加00 Postamble NACKPacketCode StartofPacketCode PreambleFig16.NACKframeErrorframe:错误数据帧格式ThesyntaxerrorframeisusedtoinformthehostcontrollerthatthePN532hasdetectedanerrorattheapplicationlevel.Errorframe:0000FF01FF7F8100 — Postamble PacketDataChecksum SpecificApplicationLevelErrorCode PacketLengtfiChecksum PacketLengtfi StartofPacketCode PreambleFig17.Errorframe更多芯片资料,请查看PN532数据手册:配套光盘\附件'芯片手册\PN532用户手册3.4代码分析3.4.1主机代码分析在NFC通信实验中,主机是通信的发起端(initiator)。nfc.c文件中,是操作PN532的指令和函数:1唤醒指令上电唤醒一次即可,无需多次唤醒。u8xdatanfc_wkup_cmd[26] ={0x55,0x55,0x00f0x00r0x00,0x00f0x00f0x00,0x00r0x00,0x00f0x00,0x00f0x00r0x00z0x00f0x00f0x00,OxFF70x03zOxFDj0xD4r0x14r0x01,0x17,0x00};

IW他说明:详细的指令介绍可以参考PH53W手册****************************************/gidnfc_WakeUp(void] 〃唤醒PM532基―。:UART2SendData(nfcwkupcmdr26);炽MiCms(脱0, — —,,正确返回:0000FF00FF00 0000FF02FED5151600,藐芭E—•2参数配置指令 8xdatapara_set_cmd[10] ={0x00f0x00r0xFFf0x03,OxFDf0xD4T0x12z0x14,0x06f0x00};理函数名:voidnfc_CQtifiq-(void)他功能:参数配置@参数值:无@返回值:无@说明:***会*****会*我**ww*我张*******会*我***财*我***做*id:rLfc_Co:n.fig(void) //参数配置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]/***************************************他函数名:voidnfc_openRF(void)他功能:打开天线一他参数值:无他返回值:无他说明:*.**.***,世世世世世世世世世世世世世世世世世世世世世世世丸丸丸世世世世丸丸世世/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)〃设置重篡次数voidnfcsetRPTtimes(void)〃设置重篡次数110n81g120121122123124125126127123129130131132133134135136137138139140141 }4设置重复次数u8xdatarpt_times_cmd[13] ={0x00,0x00,OxFF,0x06,OxFA,0xD4,0x32,0x05,OxFF,OxFF,OxFF,OxF8,0x00):口浦日/***************************************089@函数名:voidnfc_setRPTtimes(void]090@功能:设置重复欢数091@参数值:无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检测从机检测从机信号,若5s内主机未检测到从机,则提示未接收到数据,并结束本次请求;若检测到从机,则进行数据交换。u.8xdatajumpforDEP_cmd[17]={0x00r0x00f0xFFf0x0^f0xF6f0xD4j0x56jOxOC70x0170x01rOxOOjrOXFFjrOXFFjr0X00jrOxOFjrOXCVjr0x00);nfc_jnmpforDEP(void) 〃检测从机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); 〃等待数据返回rev_fin.ish._flag2=0;E<XCoujiter2=0;returnrevdata_OR; 等待时间内*接收到从机数据)}}returnrevdata_ERROR; 日等待结束,未接收到从机数据6取消选定&释放设备完成一次数据传输,需发送这亮条指令给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〃释放设备idnfc_release(void)〃释放设备UART2_SendData(release_cmd710);delay_ms(20);0000FF03FDD55300D900〃正礴返回:00000000FF03FDD55300D9003.4.2从机代码分析在NFC通信实验中,从机是通信的目标端(target)。nfc.c文件中,是操作PN532的指令和函数。从机的唤醒,参数配置,释放设备和主机操作是一致的,以下分析从机的主要操作:1开启目标端发送指令给PN532,使主机可以检测到从机。u8xdataget_data_cmd[9] ={0x00r0x00r0xFFf0x02r0xFef0xD4r0x86,0xa6f0x00};IF…………………虺函数名:voidnfc_target_start(void]一****************************************/voidnfc_target_start(void] ■目标端启动UART2SendData(tarstartcmdf50];}…皿“--2获取数据从机信号被主机检测到后,从机发送数据给发起端开始数据交换,主机成功获取到从机发来的数据后,主机发送数据给从机,从而实现数据交换。若5s内从机未被主机检测到(即没有应答数据返回),则结束本次请求;若5‘内被主机检测到,则进行数据交换。u.8xdataget_data_cmd19]{0x00jO'xOC7OxFFj0x02TOxFef0xD4,0x86f0xa670x00}u.8xdataget_data_cmd19]8nfc_getdata(void) 〃获取数据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; 等待时间内,接收到主机数据})returnrevdata_ERROR; //Ss等待结束,未接收到主机数据3.5实例分析硬件连接说明:串口1连接DB9,可与上位机连接,或通过公公交叉线连接wifi节点;串口2连接PN532的串口,可以对PN532进行配置,并接收PN532发来的数据。例如,主从机需要交换如下数据:主机数据:1234从机数据:abcd3.5.1主机操作步骤第一步:待发送数据整理根据3.3小节的帧格式,将“1234”整理成指定的数据帧:整理后得到:0000FF07F9D44001313233342100其中,31323334为字符1234的ASCII值的的十六进制.第二步:发送参数配置指令发送:0000FF03FDD412140600返回:0000FF00FF000000FF02FED5131800第三步:发送打开天线指令发送:0000FF04FCD4320101F800返回:0000FF00FF000000FF02FED533F800第四步:发送重复次数配置指令发送:0000FF06FAD43205FFFFFFF800返回:0000FF00FF000000FF02FED533F800第五步:发送检测从机信号指令发送:0000FF0AF6D45600010100FFFF000FC700返回:0000FF00FF000000FF17E90001123456789ABCDEFF00000000000903123456786C00第六步:发送含“1234”的数据帧当主机检测到从机,并得到正确的应答数据时,主机发送含“1234”的数据帧:发送:0000FF07F9D44001313233342100返回:0000FF06FAD48E616263641400此时,数据交换成功。主机获得从机数据“abcd”,从机将获得主机数据“1234”。第七步:发送取消选定指令发送:0000FF03FDD44400E800返回:0000FF00FF000000FF03FDD54500E600第八步:发送释放设备指令发送:0000FF03FDD45200DA00返回:0000FF00FF000000FF03FDD55300D8003.5.2从机操作步骤第一步:待发送数据整理根据3.3小节的帧格式,将“1234”整理成指定的数据帧:整理后得到:0000FF06FAD48E616263641400其中,61626364为字符abcd的ASCII值的的十六进制。第二步:发送参数配置指令发送:0000FF03FDD412140600返回:0000FF00FF000000FF02FED5131800第三步:发送关闭天线指令发送:0000FF04FCD4320100F900返回:0000FF00FF000000FF02FED533F800第四步:发送启动目标端指令发送:0000FF2BD5D48C0208001234564001FE123456789012C0C1C2C3C4C5C6C70FAB123456789ABCDEFF0000041234567800D000第五步:发送获取数据指令在第四步完成之后,如果有主机在等待从机信号,从机则发送获取数据的指令。发送:0000FF02FED486A600返回:0000FF07F9D44001313233342100第六步:发送含“abcd”的数据帧从机成功接收到主机发来的数据,则发送待交换的数据给主机,以完成数据交换。发送:0000FF06FAD48E616263641400第七步:发送释放设备指令:发送:0000FF03FDD45200DA00第八步:发送休眠指令:发送:0000FF03FDD416F026004.实验过程4.1准备工作本实验需要先将实验箱恢复至出厂状态再进行,请根据配套光盘\附件中将物联网RFID实验箱恢复到出厂状态文档的操作步骤,将实验箱恢复到出厂状态。第一步:打开安装好的RFID实验箱管理软件,进入软件主界面,如图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讪寺和串口透拷数据!7 超高频nuEtJ92.1&B.0163 4001S 2.4GHZnull192.163.0J64 轴口1控制未连接!未连接!9天线S(上)null9天线甄下)nullID ETC192.1681165 4001单次控制注意:1、 暮选择点击开始按钮,清先按操作说明的A:RFID&控制节点&WiFi模式连接做肝莅备"2、 若选择点击NFC模块的控制按钮,则按说明操作中的B:NFC&WiFi式连搐做好淮备U天线7(上)null11天线8(下)null12 门禁1Q*7TAGA3、联动:楚应到相同卡号不会联劫,感应到不同卡号则联动,■c_l■ iuw —ruuii单次控制■ 说明 .开始.说明 开始图4.2.1软件主界面第二步:点击右下角的“说明

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论