2012/06/15

[pn533]InJumpForDEP

NXPのPN533ユーザーズマニュアル[pdf]をときどき読んでいる。
英語だけど、NFC R/Wの雰囲気を味わう分には、そんなに読まなくても何とかなる。

 

個人的にNFC-DEPのInitiator側処理を調べているので、それに関するコマンドを見てみよう。
まあ、私の調べていることはいつも個人的なものしかないのだがね・・。


InJumpForDEP。
これが、ターゲットをactive communication modeかpassive communication modeとして起こすコマンドらしい。

「If a target is in the field, it will then be ready for DEP exchange.」と書いてある。
力強い限りだ。

 

このコマンド、R/Wコマンドとしてはパラメータが多い。
Targetになるコマンドも多いのだが、これもなかなかだ。
必須は、3つ。

  • Active communication modeかPassive communication modeか
  • Baud Rate (106kbps / 212kbps / 424kbps)
  • オプションパラメータの有無

オプションが最大3つあるので、全部で6パラメータまであることになる。
コマンドの詳細は、ドキュメントを見ればわかるので割愛。


そのレスポンスが次のページに載っているが、これを見て何か気付かないだろうか?
そう、TgInitTargetコマンドのパラメータに似ているのだ。
ある人はこういうかもしれない、「ATR_REQ / ATR_RESに似ている」と。

 

ここまで材料が揃うと、このコマンドのやることが何となくわかってくる。

このコマンドは、Pollingをするだろう。
NFC-Bに対してはわからないけど、AとFのどちらかにはしそうだ。
どっちにするかは、Baud Rate設定で決まるだろうし、オプションパラメータ「PassiveInitiatorData」も関係するだろう。
Targetの捕捉はどうしても必要なのだ。

その応答を見てから、ATR_REQを送信するのだろう。
なぜなら、NFCID3iというオプションパラメータが212kbps/424kbps passiveでは使われず、POL_RESから取得したNFCID2tを使うと書いているからだ。
POL_RESは、NFC-FのPollingコマンドのこと。
NFC-Fの場合はNFCID3の10byte中、8byteはNFCID2(IDm)を使うことになっているので、自然な仕様だと思う。

Initiatorは要求をかける側なので、Targetが応答を返してきてから考えても遅くない。
だからTargetのようにGeneralBytesを別で渡すようなしくみはない。

 

というところだろう。

これとセットで使うのが、InDataExchangeだが、全部書くと面白くないだろうから、おしまい。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。