主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

近距離無線通信(NFC)

この例では2つの近距離無線通信(NFC)デバイス間の通信をモデル化する方法を示します。

はじめに

近距離無線通信(NFC)は規格ベースの近距離無線接続技術で,2つの電子デバイス間の直感的でシンプルな通信のために設計されています。NFCは中心周波数 (Fc) 13.56 MHz、速度範囲 106 kbps から 424 kbps で動作し、その標準的な動作範囲は 10 cm 以下です。NFC には常にイニシエーターとターゲットがかかわります。イニシエーターはアクティブに電磁界を生成し、この電磁界はパッシブなターゲットに電力を供給できます。

ISO®/ IEC 18092(电信和信息交换系统之间-近场通信接口和协议)はNFCIP-1(近场通信接口和协议规范)とも呼ばれ,NFCの支配的な国際規格です。これは,ISO / IEC 14443に基づいています。ISO / IEC 18092には次の2つの通信モードがあります。

  • パッシブ:イニシエーターデバイスが搬送フィールドを生成し,ターゲットデバイスは既存のフィールドを変調することで応答します。このモードでは,ターゲットデバイスはその動作電力をイニシエーターが提供する電磁界から引き出します。

  • アクティブ:イニシエーターデバイスとターゲットデバイスの両方がそれぞれのフィールドを交互に生成することで通信します。デバイスは,データを待機している間は射频フィールドを非アクティブにします。このモードでは,通常は両方のデバイスが電源を持ちます。

この2つの通信モードの中には,ISO / IEC 18092で定義されている3つの動作モードがあります。

  • 読み込み/書き込み:このモードでは,NFCデバイスはサポートされている任意のNFCタグ(非接触カード)のデータを,標準的なNFCデータ形式で読み込みおよび書き込みできます。使用例には,ラベルやスマートポスターに組み込まれている安価なNFCタグに保存されている情報の読み込みがあります。

  • カードエミュレーション:NFCデバイスは,他のリーダーに対するNFCタグとして動作することもできます。これにより,スマートフォンのようなNFC対応デバイスが,スマートカードのように動作して支払いや発券などのトランザクションを実行できます。

  • ピアツーピア:2つのNFCデバイスがデータを交換できます。使用例には,WiFiや蓝牙®リンクの共有や,仮想ビジネスカードや写真の形式でのデータ交換があります。

システム設定

この例では,イニシエーターからターゲットにデータを送信するために必要なNFCプロトコルとコマンドを示します。ここでは,イニシエーターが電磁界を提供し,ターゲットがこれを変調することで情報を送り返すパッシブ通信モードを使用します。イニシエーターはライターとして,ターゲットはカードエミュレーターまたはタグとして動作します。イニシエーターとターゲットは次で定義されているA型の無線インターフェイスを使用し,ISO / IEC 14443 - 2(身份证-非接触式集成电路卡片接近卡-第2部分:射频功率和信号接口),106 kbpsで動作します。イニシエーターは,以下の時間スコープに示すように,100%问の修改米勒コーディングを使用します。ターゲットは,イニシエーターのフィールドを使用し,負荷変調を用いて周波数が847.5千赫(Fs)の副搬送波を生成し,この副搬送波を使用してイニシエーターの搬送周波数のデータを変調します。频谱分析仪は以下の負荷変調を示します.847.5 kHzの副搬送波を強調表示するために,スペクトルアナライザーのウィンドウで[ツール],[測定値],[ピークの検出]を選択します。ターゲットは,以下の時間スコープに示すように,10%问の曼彻斯特コーディングを使用します。2つの時間スコープで示す時間領域信号はベースバンド信号であること,すわなち13.56 MHzの搬送波信号が取り除かれていることに注意してください。

nfcInitiatorオブジェクトはイニシエーターを表します。用户数据プロパティはターゲットに送信されるデータを保持します。nfcTargetオブジェクトはターゲットを表し,ReceivedUserDataはイニシエーターから受信したデータを保持します。NFCデバイス間の距離が近いため,システム信噪比は非常に大きくなります。

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

初期化および衝突防止

イニシエーターとターゲットは,初期化および衝突防止シーケンスに従って通信リンクを確立します。図9 (PCD)初始化和防撞流程图および図10 (PCD)防撞循环,流程图は次にあり,ISO / IEC 14443 - 3(身份证-非接触式集成电路卡片靠近卡片,第3部分:初始化和防撞),対応するフローチャートが示されています。ISO / IEC 14443 - 3の6節(A型-初始化和防撞)にコマンドとプロトコルが詳しく説明されています。関数nfcInitialization()およびnfcAnticollisionLoop()はコマンドとプロトコルに対応するシーケンスを実装します。例では,コマンドの流れを示すために,イニシエーターとターゲットデバイスのステータスとアクション,および交換される重要情報を出力します。

転送プロトコル

ISO / IEC 18092で説明されているとおり,転送プロトコルには次の3つの部分があります。

  • プロトコルの有効化:このフェーズでは,ビットレートなどのさまざまなプロトコルパラメーターがネゴシエートおよび選択されます。ISO / IEC 18092の12.5節(协议)的激活にこのフェーズが詳しく説明されています。関数nfcProtocolActivation()はこのフェーズで必要なコマンドのシーケンスを実装します。

  • データ交換プロトコル:このフェーズでは,エラー処理を備えたブロック指向のデータ送信をサポートする,ハーフデュプレックスプロトコルを使用して情報が交換されます。12.6詳細は,ISO / IEC 18092の節(数据交换协议)を参照してください。関数nfcDataExchangeProtocol() は、ISO/IEC 18092 で規定されているとおりのデータ交換を実装する方法を示します。

  • プロトコルの無効化:データ交換が完了すると,イニシエーターはプロトコルとターゲットとの接続を無効化します。関数nfcProtocolDeactivation() は、ISO/IEC 18092 の 12.7 節 (Deactivation of the protocol) で説明されているシーケンスを実装します。

nfcPrint。消息(要从启动器发送到目标器的消息:);
从启动器发送到目标器的消息:
nfcPrint.Message (initiator.UserData);
你好,从MathWorks。
nfcPrint.Start ();
启动启动器和目标器之间的NFC通信
nfcInitialization(引发剂、目标、snrdB);

启动器发送REQA目标器接收REQA

目标传输ATQA响应REQA启动器接收到的ATQA目标支持位帧防撞目标的UID大小:single万博1manbetx
nfcAnticollisionLoop(引发剂、目标、snrdB);
防碰撞循环启动级联Level-1发起者发送防碰撞命令目标接收级联Level-1 SEL代码

图Load Modulation包含一个轴和其他类型的uiflowcontainer, uimenu, uitoolbar对象。标题为目标信号频谱的轴包含一个类型为line的对象。这个对象表示通道1。

Target transmit full UID Initiator received CL1 UID without collision Complete UID received: 0x11aa22bb Initiator transmit SELECT command Target received Cascade Level-1 SEL code Target selection confirmed Target transmit SAK with UID Complete flag Initiator received SAK UID Complete。防撞退出循环。目标符合NFCIP-1。继续传输协议激活
nfcProtocolActivation(引发剂、目标、snrdB);
Start of Transport Protocol Activation Initiator transmit ATR_REQ Target received ATR_REQ Target transmit ATR_RES in response to ATR_REQ Initiator received ATR_RES Initiator transmit PSL_REQ in response to ATR_REQ已选发送速率:106kbps已选接收速率:10kbps Target received PSL_REQ Target sent PSL_RES in response to PSL_REQ Initiator received PSL_RES PSL_RES validated已确认所有选定速率传输协议激活结束
nfcDataExchangeProtocol(引发剂、目标、snrdB);
Start of Data Exchange Protocol (DEP) Initiator transmit an Information PDU in DEP_REQ Initiator PNI: 0 Target received an Information PDU in DEP_REQ MI chain not activated in received Information PDU received Initiator PNI: 0 Target 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的数据。数据交换协议(DEP)结束
snrdB nfcProtocolDeactivation(引发剂、目标)
Start of Transport Protocol Deactivation Initiator transmit RLS_REQ Target received RLS_REQ Target transmit RLS_RES in response to RLS_REQ Initiator received RLS_RES Target released End of Transport Protocol Deactivation .传输协议去激活结束
nfcPrint.End ();
启动器和目标器之间的NFC通信结束
nfcPrint。消息(目标从启动器接收到的消息:);
目标从启动器接收到的消息:
nfcPrint.Message (target.ReceivedUserData);
你好,从MathWorks。
nfcPrint.NewLine;%恢复RNG状态rng(年代);
函数snrdB nfcInitialization(引发剂、目标)%初始化和防撞%参考: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: InvalidATQA);coder.internal.errorIf (isCollisionDetected通讯:NFC: CollisionATQA);coder.internal.errorIf (~ isTargetCompliant,通讯:NFC: TargetNotCompliant);结束函数snrdB nfcAnticollisionLoop(引发剂、目标)%防撞环%参考:ISO/IEC 14443-3,第6节nfcPrint.NewLine;nfcPrint。Heading1 (“开始防撞循环”);开始反碰撞循环cascadeLevel = 1;targetRxAC = [];nfcPrint.CascadeLevel (cascadeLevel);[initiatorTxAC, newCascadeLevel, uidComplete, isoCompliantTarget] =...antiCollisionLoop(发起者,targetRxAC cascadeLevel);(newCascadeLevel <= 3) && ~uidComplete nfcPrint。CascadeLevel (newCascadeLevel CascadeLevel);cascadeLevel = newCascadeLevel;targetRxAC = awgn(initiatorTxAC, snrdB,“测量”);%目标的反碰撞循环targetTxAC = anti - collision - loop (target, targetRxAC);initiatorRxAC = awgn(targetTxAC, snrdB,“测量”);启动器的反碰撞循环[initiatorTxAC, newCascadeLevel, uidComplete, isoCompliantTarget] =...antiCollisionLoop(发起者,initiatorRxAC cascadeLevel);结束coder.internal.errorIf (~ uidComplete,通讯:NFC: IncompleteUID);coder.internal.errorIf (~ isoCompliantTarget,...通讯:NFC: TargetNotCompliantWithNFCIP1);nfcPrint。Heading1 (“防撞循环结束”);nfcPrint.NewLine;nfcPrint。Heading1 ([“目标符合NFCIP-1。”...“继续激活传输协议”]);结束函数snrdB nfcProtocolActivation(引发剂、目标)% 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: TPActivationFailed);nfcPrint。Heading1 (“传输协议激活结束”);结束函数snrdB nfcDataExchangeProtocol(引发剂、目标)数据交换协议%参考:ISO/IEC 18092第12.6节nfcPrint.NewLine;nfcPrint。Heading1 (“启动数据交换协议(DEP)”);status = nfcDEP(启动器,目标器,snrdB);coder.internal.errorIf(~状态,“nfc: nfc: DEPFailed”);nfcPrint。Heading1 (“数据交换协议(DEP)的结束”);nfcPrint.NewLine;结束函数snrdB nfcProtocolDeactivation(引发剂、目标)%传输协议失效%参考: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(~状态,通讯:NFC: TPDeactivationFailed);nfcPrint。Heading1 (“传输协议失效结束”);结束

探査

NFC規格で説明されているさまざまなコマンドとプロトコルを理解するために,nfcInitiatorおよびnfcTargetオブジェクトのさまざまなメソッドを調査します。信噪比,UID型(单または双),UID値,SamplesPerSymbolなどのさまざまなシステムパラメーターを試して,これらのパラメーターがシステムに与える影響を確認します。

参考文献

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

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

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

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