ようやく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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。