OSベースのアプリケーションにおけるNFC統合を加速化する方法

Digi-Keyの北米担当編集者 の提供

開発者は、近距離無線通信(NFC)設計においてRF性能、ハードウェア設計、およびソフトウェアの最適化に関する一連の課題に直面してきました。 しかし今やモノリシックNFCソリューションや包括的なソフトウェアサポートが入手できるようになり、NFCの機能を家電、ウェアラブルデバイス、モノのインターネット(IoT)用のデバイスに組み込むということの本質的な意味が大きく変わりました。

結果として、開発者はフットプリント、消費電力、プロジェクトの予定などにあまり影響を及ぼさずに豊富なアプリケーション機能を追加できるようになりました。

NFCの双方向通信は、単純で、本来的に機密性の高い、低消費電力の近接無線コネクティビティを提供できるという点で独自の位置を占めています。 2つのデバイスが近くにある場合にのみ通信可能なので、通信が傍受される可能性は非常に低く、サイバー攻撃が入り込むスキはほとんどありません。 それに加えて、通信時には2つのデバイスのうち1つのみ電源が入っていればよいので、通常、消費電力は抑えられます。

NFCは、幅広いスマートホームおよびIoTアプリケーションに、非常に大きなメリットをもたらします。 ユーザーはNFC対応のスマートフォンを、NEC対応製品に近づけるだけで、BluetoothやWi-Fiのペアリングができます。 NFCは、デバイスのパーソナライズを行うための基本的なイネーブラとして利用でき、設定の構成、データの送信、製品の登録などのスマートフォンにおけるタスクを単純化できます。

組み込みNFC

NFCは、RFID(電波による個体識別)のサブセットで、13.56Mhzで動作し、従来のRFIDタグや非接触スマートカードと同じ機能の多くを備えています。 また、NFCはカードエミュレーション、ピアツーピア、リーダー/ライターモードの3つの通信モードで動作し、これがさらなる柔軟性をもたらしています。

カードエミュレーションモードにおいては、NFCデバイスは非接触スマートカードとしての役割を果たし、チケット販売、アクセスコントロール、輸送、通行料の徴収、非接触型決済などの幅広い既存の用途に利用できます。 ピアツーピアモードでは、2つのNFC対応デバイスが接続し、情報を交換できます。 たとえば、NFC対応のスマートフォンを利用して他のデバイスのBluetoothやWi-Fiの設定パラメータを設定したり、信頼できるネットワークで利用できるように設定したりできます。 リーダー/ライターモードでは、NFCデバイスが他のNFCデバイスからデータを読み取ることができます。 たとえば、NFC対応のスマートフォンは、URLや小売店のサイネージに組み込まれたセールスのクーポンなどのデータを読み取ることができます。

製品のホストプロセッサに接続された、タグとして機能する組み込みNFCデバイスは、デュアルポートメモリと同様に動作します。 メモリポートの1つは、NFCインターフェースから無線でアクセスされます。 もう1つのポートは、I2Cインターフェースから、組み込みシステムによりアクセスされます。 その結果、スマートフォンなどの外部ソースは、組み込みシステムにデータを渡すことができます。 同様に、ホストプロセッサはNFCデバイスに保存されているデータを更新でき、製品の電源を切ったままでも外部NFC対応デバイスがデータを利用できます。

開発者は、組み込みシステムとNFC対応スマートフォンなどの外部システムとの間でデータ伝達が必要なあらゆるアプリケーションで、このアプローチを用いることができます。 さらに開発者はこのアプローチを用いて、NFCデバイスの無線接続で通信し、ダウンロード時にデバイスのオンチップメモリを一時記憶装置として利用することで、組み込みシステムのデータ、そしてファームウェアでさえ更新できます。

モノリシックNFCコントローラ

かつて、設計者がMCUベースの設計にNFC機能を追加する際には、ハードウェアとソフトウェアの両方で大きな課題に直面していました。 従来のNFCデバイスを利用する際、ハードウェアエンジニアは、NFCデバイスとホストとの間のクリティカルタイミングに適合し、低消費電力という要件を満たし、設計フットプリントと部品表(BOM)を最小限に抑えるよう設計する必要があります。 しかしおそらく、最も大きな影響を受けるのはソフトウェア側です。アプリケーションレベルのNFC操作を1つ行うために、エンジニアは多くの低レベル処理を自分で書く必要があるのです。

NXP SemiconductorsPN7150のような最先端のNFCデバイスは、IoT設計やあらゆる組み込みシステムへのNFC機能の組み込みを簡素化できるように設計されています。 PN7150は、RFフロントエンドと低消費電力のARM® Cortex®-M0コア、メモリ、およびI/O周辺機器を組み合わせています(図1)。

NXP SemiconductorsのPN7150 NFCコントローラの図面

図1:NXP SemiconductorsのPN7150 NFCコントローラは、完全なRFフロントエンド、ARM Cortex-M0デバイスホスト、統合ファームウェアを組み合わせています。 (画像提供:NXP Semiconductors)

このデバイスは、より高いRF出力電源に対応しつつ、組み込みデバイスホストとRFフロントエンドとの間のタイミングを最適化することで、従来のハードウェア統合に関する問題の多くを解消しています。 さらに、統合されているI2Cインターフェースは、センサ、ソケット、その他スマートホームネットワークに関するデバイスに用いられるNXPのNTAG I2C Plusと互換性があります。 そのうえ、このデバイスは所用電力の削減に貢献します。PN7150は、RF通信が必要になるまでホストをスリープモードにしたまま、自動的に低電力モードに移行できるのです。

ハードウェア設計の簡素化に加え、PN7150はソフトウェア側にも大きなメリットをもたらします。 NXPはデバイスの組み込みデータやコードメモリを、NFCコントローラインターフェース(NCI)の拡張サポートによりプリロードします。 NCI技術仕様はNFCフォーラムによって管理され、NFCコントローラ(NFCC)とAndroid、Linux、Windows IoTなどのハイレベルOSが動作するデバイスホスト(DH)との間の論理インターフェースを定義しています。

PN7150の組み込みNCIファームウェアはホストとのやり取りをある程度減らし、NFCアプリケーションソフトウェア開発者に高レベルの抽象化を提供することにより、ソフトウェア開発の負荷を軽減します。 低レベルのコードをファームウェアに移行することにより、PN7150はホスト側のアプリケーションコードのフットプリントも削減しています。

ドロップインソリューション

PN7150は統合されたハードウェアとソフトウェアを備えており、Android、Linux、Windows環境において開発を行う開発者のためのドロップインNFCソリューションとして設計されています(図2)。 実際に、NFC開発の初心者であっても、Arduino(NXP OM5578/PN7150ARDM)、BeagleBone Black (NXP OM5578/PN7150BBBM)、およびRaspbery Pi(NXP OM5578/PN7150RPIM)用のPN7150デモキットを利用してそのメリットを享受できるのです。 各キットには、専用のインターフェースボードであるPN7150 NFCコントローラボードと、NFCのサンプルカードが含まれています。

NXP PN7150の図面(クリックで最大化)

図2:NXP PN7150では、単純なハードウェアインターフェースと、NCIプロトコルによるホストソフトウェアにより、ホストMCUと容易に統合する完全なNFCサブシステムの提供に必要となる追加コンポーネントの数はわずかです。 (画像提供:NXP Semiconductors)

既存のMCUベースの設計に、完全なNFCサブシステムを作成する際、必要なコンポーネントはわずかです。 実のところ、アンテナ整合回路の受動部品をなくしたり、組み合わせたりすることで、部品表(BOM)の点数をさらに削減できる場合もあるのです(図3)。

NFCコントローラ(NFCC)として利用するPN7150の図面

図3:PN7150をNFCコントローラ(NFCC)として利用すると、アプリケーションによってはアンテナ整合回路を簡素化することにより部品表(BOM)をさらに削減できます。 (画像提供:NXP Semiconductors)

標準的なアンテナ回路設計においては、生成される信号の波形に悪影響を及ぼしかねない、極めて高いアンテナQ値を下げるために、アンテナリード上にRQダンピング抵抗が必要です。 アンテナQ値がごくわずかである設計においては、アンテナ端からこれらRQダンピング抵抗をなくすことができます。 整合回路においては、アンテナリードにおいてピークツーピークの最大電圧が十分低い設計である場合、1組の並列キャパシタを1つのキャパシタに置き換える(EMCフィルタへの接続をなくす)ことができます。 小型のアンテナがPN7150に接続される標準的なアプリケーションでは、アンテナリードで生成されるピークツーピーク電圧は比較的低くなります。 その結果、設計者はデカップリングCrxキャパシタを取り除き、Rrx抵抗器を直接アンテナに接続することにより、Rxパスも簡素化できるのです。

ソフトウェアの簡易化

ソフトウェアにおいては、PN7150は製品開発の速度をさらに速める簡単な実行モデルを提供します(図4)。 デバイスホストアーキテクチャは、トランスポートレイヤドライバ、NCIドライバ、リード/ライト、ピアツーピア、またはカードエミュレーションのライブラリを含むNFC実行環境(NFCEE)ミドルウェアを組み合わせています。 NFCの操作では、ホストは高レベルのNCI操作をI2Cインターフェースを介してPN7150に送信するだけで済みます。 送信後、PN7150のファームウェアは、NFCプロトコルで必要な詳細処理を行います。

NXP PN7150の組み込みNCIファームウェアの図面

図4:NXP PN7150の組み込みNCIファームウェアは、デバイスホスト(DH)のソフトウェアフットプリントを削減します。デバイスホストはI2Cハードウェアインターフェースを介してNCIコマンドを送信するだけで済み、PN7150 NFCコントローラ(NFCC)がNFCの詳細処理を実行します。 (画像提供:NXP Semiconductors)

開発者の観点からすると、NXPから入手できる包括的なソフトウェアプラットフォームのおかげで、NFCアプリケーション開発を高いレベルで進めることができます。 NFC対応のIoTアプリケーションでは、一般的な操作の1つとして、NFCデータ交換フォーマット(NDEF)によるデータを交換します。 NDEFは、NFCフォーラムによって管理されている標準データフォーマットで、任意の互換性があるNFCデバイスとNFCデバイスやタグとの間で、URIやプレーンテキストなどの情報を交換するために用いることができます。

NXP linux_libnfc-nciライブラリは、低レベルの処理を高レベルのアプリケーション指向操作に抽象化する、簡単なアプリケーションプログラミングインターフェース(API)を提供します。 たとえば、開発者はWriteTagルーチン(リスト1)の単純なコールを書くことで、タグに書き込みできます。 ライブラリは一連の低レベルのルーチンを用いて、このアプリケーションレベルのリクエストをデータの検証、フォーマット、送信に必要な一連のステップに分解します(リスト1のmsgToPush)。

int WriteTag(nfc_tag_info_t TagInfo, unsigned char* msgToPush, unsigned int len)

{

            int res = 0x00;

           

            res = nfcTag_writeNdef(TagInfo.handle, msgToPush, len);

            if(0x00 != res)

            {

                        printf("タグの書き込みに失敗しました\n");

                        res = 0xFF;

            }

            else

            {

                        res = 0x00;

            }

            return res;

}

リスト1:NXPは、PN7150で用いるLinux NFCライブラリ、linux_libnfc-nciなどのNCIソフトウェアを提供しています。 開発者はNFCメッセージングプロトコルの細部を処理する低レベルルーチンを呼び出すWriteTagなどの単純なコールを使ってNFCアプリケーションを作成できます。 (リスト提供:NXP Semiconductors)

デバイスホストは、NCIコントロールメッセージを用いてNFCコントローラと対話します。 NCIコマンドシーケンスのうち、特に重要なものはNFCコントローラが他のカード、リーダ、またはピアを検索する仕組みを提供するコマンドシーケンスです。 このコマンドシーケンスはRFディスカバリと呼ばれるもので、PN7150などのNFC準拠のデバイスにおいて、他の送信デバイスのリスニングと、リモートカードやタグを発見するための送信(ポーリングフェーズ)を交互に切り替えます。

他のRF技術と同様、送信には無線受信と比べて非常に大きい電力が必要となります(図5)。 ポーリングフェーズにおいては、PN7150はアンテナの性質によりますがおよそ30mAの電力を消費します。 リスニングフェーズでは、PN7150は外部で生成されるRFキャリアを待機します。この時にスタンバイモードが有効であれば、消費電力はおよそ20μAにまで低下します。

NXP NFCデバイスの図面

図5:NFCフォーラムの標準的RFディスカバリシーケンスにおけるポーリングフェーズは長く、NFCデバイスの消費電力は比較的大きくなる場合があります。 (画像提供:NXP Semiconductors)

標準的には、ポーリングフェーズは約20ms続き、リスニングフェーズは300ms~500msの長さです。 リスニングフェーズが500msの場合、平均的な消費電力は以下の式で表されます。

(30 x 20 + 0.02 x 500) / 520 = 1.17mA

RFディスカバリの消費電力を減らすため、NXP N7150では低消費電力カード検出(LPCD)モードと呼ぶ専用の仕組みを提供しています。 LPCDモードでは、PN7150は他のデバイスが近接しているときに生じる電磁結合によって起こるアンテナのインピーダンス変化を探します。 インピーダンスの変化があらかじめ定めた閾値を上回ると、PN7150は自動的に標準的なNFCフォーラムのRFディスカバリシーケンスに入ります。 結果として、この「イベントドリブン」アプローチはRFディスカバリフェーズの期間を大幅に減らすことができ、平均的な消費電力が小さくなります(図6)。

NXP PN7150の図面

図6:NXP PN7150は、特別な検出モードを用いてポーリングフェーズの期間を短縮することにより、RFディスカバリのループにおける消費電力を大幅に削減できます。 (画像提供:NXP)

結論

NFCは、家電、ウェアラブルデバイス、その他IoTデバイスに接続される製品の使いやすさを大幅に向上させることができる、機密性が高く、消費電力が低いコネクティビティを提供します。 NFC対応のスマートフォンを接続された製品に近づけるだけで、ユーザは製品の運用を開始し、アクセス情報を読み込み、製品に保存されているデータを取得できます。 かつては、MCUベースのシステムにNFCを埋め込むことは、ハードウェアとソフトウェア統合の両方で設計的な課題をもたらすものでした。 現在、NXP PN7150などの統合NFCデバイスは、NFC対応アプリケーションのハードウェアおよびソフトウェアの開発を簡素化することで、ドロップインソリューションに近いものをNFC設計に提供します。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

出版者について

Digi-Keyの北米担当編集者