2012/04/29

FeliCa Plugでできること (FT転送)

ようやくFeliCa PlugのFT転送ができたので、できたことを書いておこう。
初期化まででできることは「FeliCa Plugでできること(初期化まで)」を参照のこと。


できること

Read Without Encryptionに応答する

Read Without Encryptionを受信すると、ブロック数とブロックリストが取得できる。
それを元に、ステータスコードと返信したいデータをブロック数×16byteだけ返すと、FeliCa PlugがRead Without Encryptionの応答として返してくれる。

 

Write Without Encryptionに応答する

Write Without Encryptionを受信すると、ブロック数、ブロックリストおよびブロックデータが取得できる。
それを元にステータスコードを返すと、FeliCa PlugがWrite Without Encryptionの応答として返してくれる。


NFC-Fカードとして振る舞うというのはこういうことなのだな。

FeliCa Plug自体は、Read w/o EncやWrite w/o Encのフォーマットさえ正しければ、そのまま返してくれるようだ。
だから、ブロックリストやステータスコードを含めてかなり自由にデータを使うことができる。

比較すんなり行ったような気がするが、実は最後になって詰まるところがあった。
搬送波が未検出状態になったあと、なぜかHost側がデータ受信を開始してしまうのだ。

調べてみると、SW=LOWにするとIRQがHIになり、受信開始割込が入っていた。
ドキュメントを読むと、SW=LOWにするとIRQはHiZになるようだった。
消費電力を気にするならば、プルアップ/プルダウンするなり、GPIOにして出力を固定にするなりしないといかんだろう。

まあ、あまりその手のことには詳しくないのだが、ソフトについてはIRQ割込を先に止めてからSW=LOWにする、ということですな。

それがわかってからも時間がかかったのは、ARMのVICについて解釈を間違っていたレジスタがあったためだった。
ああ、デバッガさえあれば・・・。


ここまでのところを、githubに置いた。
作った資料などもあるので、お役に立てば幸いである。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。