近场通信(NFC)

此示例演示如何对两个近场通信(NFC)设备之间的通信建模。该示例要求:

  • 用于NFC协议的通信工具箱™库

介绍

近场通信(NFC)是一种基于标准的短距离无线连接技术,设计用于两个电子设备之间直观和简单的通信。NFC工作在13.56 MHz中心频率(Fc),速率从106 kbps到424 kbps,其典型工作范围是10厘米或更小。NFC总是包含一个启动器和一个目标器——启动器主动地产生一个电磁场来驱动一个被动的目标器。

ISO®/IEC 18092(系统间电信和信息交换-近场通信-接口和协议),也被称为NFCIP-1(近场通信-接口和协议规范),是NFC的管理国际标准。它基于ISO/IEC 14443。ISO/IEC 18092包括两种通信模式:

  • 被动:启动器设备生成一个载波字段,目标器设备通过调制已有的载波字段进行应答。在此模式下,目标设备从启动器提供的电磁场中获取运行功率。

  • Active:启动器和目标器设备通过交替生成各自的字段进行通信。设备在等待数据时使射频场失效。在这种模式下,两个设备通常都有电源供应。

在两种通信模式中,ISO/IEC 18092定义了三种操作模式:

  • 读写:在该模式下,NFC设备可以以标准的NFC数据格式从任何支持的NFC标签(非接触卡)读取或写入数据。万博1manbetx这些应用包括读取存储在标签或智能海报中的廉价NFC标签中的信息。

  • 卡模拟:NFC设备还可以作为其他读卡器的NFC标签。这使得智能手机等支持NFC的设备能够像智能卡一样执行支付或票务等交易。

  • 点对点:两个NFC设备可以交换数据。这些应用程序包括共享WiFi或蓝牙®链路,或以虚拟名片和照片的形式交换数据。

系统设置

此示例说明了从启动器向目标传输数据所需的NFC协议和命令。这里使用的是被动通信模式,其中发起者提供电磁场,目标通过调制该电磁场发回信息。启动器作为写入程序运行,目标作为卡仿真器或标记运行。启动器和目标使用ISO/IEC 14443-2(识别卡-非接触式集成电路卡-接近卡-第2部分:射频电源和信号接口)中定义的A类空中接口,并以106 kbps的速度运行。启动器使用100%ASK的修改Miller编码,如下面的时间范围所示。目标通过负载调制,使用启动器的场生成频率为847.5 kHz(Fs)的子载波,然后使用该子载波将数据调制到启动器的载波频率上。频谱分析仪说明了下面的负载调制。要突出显示847.5 kHz的子载波,请在频谱分析仪窗口中选择工具->测量->峰值查找器。目标使用曼彻斯特编码和10%ASK,如下面的时间范围所示。注意,两个时间范围中显示的时域信号是基带信号,即13.56 MHz载波信号被剥离。

nfcInitiator对象表示启动器。UserData属性保存要传输到Target的数据。nfcTarget对象表示目标,ReceivedUserData保存从启动器接收到的数据。由于近场通信器件距离短,系统信噪比高。

启动器=NFC启动器目标=nfcTarget%信噪比,单位为dBsnrdB = 50;%重新设置RNG以获得可重复的结果s = rng (0);
initiator = Fc: 13560000 SamplesPerSymbol: 64 t1: 32 AppLayer: [] UserData: 'Hello, from MathWorks.'EnableVisualization: 1 target = Fc: 13560000 Fs: 847500 SamplesPerSymbol: 64 UID: '11aa22bb' AppLayer: [] ReceivedUserData: " EnableVisualization: 1 .

初始化和防冲突

启动器和目标按照初始化和防冲突序列建立通信链路。ISO/IEC 14443-3(识别卡-非接触式集成电路卡-接近卡,第3部分:初始化和防撞)中的图9(PCD的初始化和防撞流程图)和图10(PCD的防撞回路流程图)说明了相应的流程图。ISO/IEC 14443-3第6节(A类-初始化和防冲突)详细描述了命令和协议。函数nfcinInitialization()和nfcAnticollisionLoop()实现相应的命令和协议序列。该示例打印启动器和目标设备的状态和操作,以及交换的重要信息,以指示命令流。

传输协议

如ISO/IEC 18092所述,传输协议由三部分组成-

  • 协议的激活:各种协议参数,如比特率,在此阶段协商和选择。ISO/IEC 18092第12.5节(协议的激活)详细描述了这个阶段。函数nfcProtocolActivation()实现此阶段所需的命令序列。

  • 数据交换协议:在此阶段使用半双工协议进行信息交换,该协议支持带有错误处理的面向块的数据传输。万博1manbetx详情请参阅ISO/IEC 18092第12.6节(数据交换协议)。函数nfcDataExchangeProtocol()展示了如何实现ISO/IEC 18092规定的数据交换。

  • 协议去激活:在完成数据交换后,启动器去激活与目标器的协议和连接。函数nfcProtocolDeactivation()实现了ISO/IEC 18092第12.7节(协议去激活)中描述的顺序。

探索

探索nfcInitiator和nfcTarget对象的各种方法,以理解NFC标准描述的各种命令和协议。实验各种系统参数,如SNR, UID类型(单或双),UID值,SamplesPerSymbol,看看它们如何影响系统。

nfcPrint.Message('要从启动器传输到目标的消息:');nfcPrint.Message (initiator.UserData);nfcPrint.Start ();nfcInitialization(引发剂、目标、snrdB);nfcAnticollisionLoop(引发剂、目标、snrdB);nfcProtocolActivation(引发剂、目标、snrdB);nfcDataExchangePorotcol(引发剂、目标、snrdB);nfcProtocolDeactivation(initiator, target, snrdB);nfcPrint.Message(目标从启动器接收到的消息:);nfcPrint.Message (target.ReceivedUserData);nfcPrint.NewLine;%恢复RNG状态rng(年代);功能NFC初始化(启动器、目标、snrdB)%初始化和防撞%参考:ISO/IEC 14443-3,第6节txREQA = transmitREQA(引发剂);rxREQA = awgn(txREQA, snrdB,“测量”);txATQA = receiveREQA(target, rxREQA);rxATQA = awgn(txATQA, snrdB,“测量”);[isATQAValid, isCollisionDetected, isTargetCompliant] =...rxATQA receiveATQA(引发剂);coder.internal.errorIf (~ isATQAValid,'通信演示:NFC:QA');coder.internal.errorIf (isCollisionDetected“comm_demos: NFC: CollisionATQA”); coder.internal.errorIf(~istargetemployment,“comm_demos: NFC: TargetNotCompliant”);结束功能snrdB nfcAnticollisionLoop(引发剂、目标)%防撞环%参考:ISO/IEC 14443-3,第6节nfcPrint.NewLine;nfcPrint.Heading1(“开始防撞循环”);开始反碰撞循环cascadeLevel = 1;targetRxAC = [];nfcPrint.CascadeLevel (cascadeLevel);[initiatorTxAC, newCascadeLevel, uidComplete, isoCompliantTarget] =...防碰撞回路(启动器、targetRxAC、级联级);虽然(newCascadeLevel<=3)和&~UID完整的nfcPrint.CascadeLevel(newCascadeLevel,CascadeLevel);CascadeLevel=newCascadeLevel;targetRxAC=awgn(initiatorTxAC,snrdB,“测量”);%目标的反碰撞循环targetTxAC = anti - collision - loop (target, targetRxAC);initiatorRxAC = awgn(targetTxAC, snrdB,“测量”);启动器的反碰撞循环[initiatorTxAC, newCascadeLevel, uidComplete, isoCompliantTarget] =...防碰撞回路(启动器、启动器、XAC、级联级);结束coder.internal.errorIf (~ uidComplete,'通信演示:NFC:UncompleteUID');编码器。内部。错误如果(~isoCompliantTarget,...“comm_demos: NFC: TargetNotCompliantWithNFCIP1”);nfcPrint。Heading1 (“防撞循环结束”);nfcPrint.NewLine;nfcPrint.Heading1([“目标符合NFCIP-1。”...“继续激活传输协议”]);结束功能NFC协议激活(启动器、目标、snrdB)% NFCIP-1传输协议激活%参考:ISO/IEC 18092第12.5节nfcPrint.NewLine;nfcPrint.Heading1(“启动传输协议激活”);txATR_REQ = transmitATR_REQ(引发剂);rxATR_REQ = awgn(txATR_REQ, snrdB,“测量”);txATR_RES = receiveATR_REQ(target, rxATR_REQ);rxATR_RES = awgn(txATR_RES, snrdB,“测量”);txPSL_REQ = receiveATR_RES(启动器,rxATR_RES);rxPSL_REQ = awgn(txPSL_REQ, snrdB,“测量”);txPSL_RES = receivePSL_REQ(target, rxPSL_REQ);status = receivePSL_RES(initiator, txPSL_RES); / /启动器coder.internal.errorIf(~状态,'通信演示:NFC:tActivationFailed');nfcPrint。Heading1 (“传输协议激活结束”);结束功能snrdB nfcDataExchangePorotcol(引发剂、目标)数据交换协议%参考:ISO/IEC 18092第12.6节nfcPrint.NewLine;nfcPrint.Heading1('启动数据交换协议(DEP)');status = nfcDEP(启动器,目标器,snrdB);coder.internal.errorIf(~状态,“comm_demos: NFC: DEPFailed”);nfcPrint。Heading1 ('数据交换协议(DEP)结束');nfcPrint.NewLine;结束功能NFCProtocold激活(启动器、目标、snrdB)%传输协议失效%参考:ISO/IEC 18092第12.7节nfcPrint.NewLine;nfcPrint.Heading1(“开始解除传输协议”);txRLS_REQ = transmitRLS_REQ(引发剂);rxRLS_REQ = awgn(txRLS_REQ, snrdB,“测量”);txRLS_RES = receiveRLS_REQ(target, rxRLS_REQ);rxRLS_RES = awgn(txRLS_RES, snrdB,“测量”);status = receiveRLS_RES(initiator, rxRLS_RES); / /启动器状态coder.internal.errorIf(~状态,“comm_demos: NFC: TPDeactivationFailed”);nfcPrint。Heading1 (“传输协议失效结束”);结束
要从启动器传输到目标的消息:Hello,来自MathWorks。启动器和目标器之间的NFC通信启动器发送REQA目标收到REQA目标发送ATQA响应REQA启动器收到ATQA目标支持位帧防撞目标的UID大小:万博1manbetx级联一级启动器发送anti - collision命令目标接收级联一级SEL代码目标发送full UID启动器接收CL1 UID without collision收到Complete UID:0x11aa22bb启动器发送SELECT命令目标器收到级联一级SEL代码目标选择已确认目标器发送SAK with UID complete flag启动器收到SAK UID complete。防撞退出循环。目标符合NFCIP-1。继续传输协议激活传输协议激活启动器发送ATR_REQ目标接收ATR_REQ目标发送ATR_RES响应ATR_REQ启动器接收ATR_RES启动器发送PSL_REQ响应ATR_REQ选中发送速率:106 Kbps选中接收速率:10kbps Target received PSL_REQ Target sent PSL_RES in response to PSL_REQ Initiator received PSL_RES PSL_RES validated传输协议激活数据交换协议(DEP)启动器在DEP_REQ中发送一个信息PDU启动器PNI: 0目标器在DEP_REQ MI中接收到一个信息PDU,在接收到的信息PDU中未激活收到的启动器PNI: 0目标PNI:0 Target发送一个Information PDU in DEP_RES in response to DEP_REQ Initiator received an Information PDU in DEP_RES received Target PNI: 0所有从Initiator发送到Target的数据。 Exit DEP. End of Data Exchange Protocol (DEP) Start of Transport Protocol Deactivation Initiator transmitted RLS_REQ Target received RLS_REQ Target transmitted RLS_RES in response to RLS_REQ Initiator received RLS_RES Target released End of Transport Protocol Deactivation End of NFC Communication between Initiator and Target The message received by Target from Initiator: Hello, from MathWorks.

参考文献

  1. http://nfc-forum.org/

  2. ISO/IEC 14443-2识别卡-非接触式集成电路卡-接近卡-第2部分:射频电源和信号接口

  3. 识别卡。无触点集成电路卡。接近卡。第3部分:初始化和防撞

  4. 信息技术。系统间电信和信息交换。近场通信。接口和协议(NFCIP-1)