「できそうなこと」という妙な表現になったが、それは試していないからだ。
FeliCa Plugのユーザーズマニュアルを読んで、FB転送というものでできそうなことを書いておこう。
FeliCa Plugでできる転送方法は、2種類ある。
- FeliCa Through転送(FT転送)
- FeliCa Buffering転送(FB転送)
今まで試したのは、FT転送。
これは、普通のFeliCa Liteにやるようなアクセスができる。
この「アクセスができる」は、リーダライタ側の話だ。
それに対して、FB転送はそうではない。
リーダライタ側は、Write Without Encryption→Read Without Encryptionの順でしかアクセスできないようになっている。
そのような制約の何がいいのかというと、これによって機器側の「FeliCaプロトコル時間制約」がほぼなくなるのだ。
私はお遊びでしかFeliCaのソフトを作っていないので気にしてなかったけれども、プロトコルに時間の制約が存在するのだ。
○○時間以内に応答を返さないといけないとか、そんなの。
FB転送すると、こうなるらしい。
- [RW側]Write Without Encryptionを送信
- [FP側]受信データをRAMに溜め、とりあえずRWに返信
- [FP側]FeliCa Plugはデータ受信をHostマイコンに通知
- [FP側]HostマイコンはSPIでRAMから受信データを吸い込む
- [FP側]HostマイコンはSPIでRAMへ送信データを書き込む
- [FP側]Hostマイコンは送信データ転送完了をFeliCa Plugへ通知
- [RW側]Read Without Encryptionを送信
- [FP側]RAMデータから送信データを作ってRWに返信
上記の3~6の間、FeliCa Plugはリーダライタに応答しないらしい。
しかし、どんなに時間が経っていたとしても、7で返信できるように見える。
Read w/o Enc時、IDmが一致していればRAMに入っているデータを指定したブロック数だけ転送してくれるようだ。
(RAM転送前は不定な値が取得される、とある。)
RAMがどのくらい保持しているかはまだ読み切れていないが、おそらくFeliCa Plugを眠らせるまで(SW=Hを維持している間)だろう。
こんな使い方ができるかもしれん。
伝言板(制限付き)
- 書き込みたい人は、Write w/o Encで書き込める(ただし、1件しか書き込めない)
- 読み込みたい人は、Read w/o Encで読み込める。
次の人が書き込むまでは同じ内容が読み取れる。
制限ありすぎ・・・。
実装側の利点としては、Write w/o Enc後にRAMへデータを転送するとき以外はHostマイコンを眠らせておいてもよいということ。
FeliCa Plugがデータをバッファリングしてくれているので、Host側はRead w/o Encに関与しなくても済むのだ(たぶん)。
FeliCa Plugが起きているときの消費電流は、最大で1.0mA~1.2mAくらい。
あまり調べてないけど、ここまで小さくするのはマイコンでは無理そうな気がする。
FT転送で同じことをやろうとしたら、どうなるだろうか?
Write w/o EncでEEPROMみたいなものにデータを保存し、Read w/o Encでそのデータを返す。
搬送波検知まではHostマイコンもFeliCa Plugも寝ていられるので、実はそっちの方が消費電力が小さく済むような気がした(FeliCa Plugが寝ると、0.1uA~1.0uA)。
Write w/o Encする回数が極端に少なく、Read w/o Encする回数が非常に多いのであれば、つまりRF通信による読み込み時間が圧倒的に長いのであれば、上記のような使い方はできなくもないのかもしれない。
でも、mAとuAって単位が違うくらいだから、素直にFT転送を使った方がよさそうな気はする。
やはりここは、Write w/o EncとRead w/o Encの間に時間が空くようなシステムで使うべきなのだろうか。
いくつか考えてみたけど、データ交換する目的ならば、プロトコルを作ってしまってFT転送でやりとり、ということもできるはず。
Read w/o Encが来るまでの間はどんなに短時間でもHostマイコンを眠らせてできるだけ消費電力を抑えたい、というときに使えばいいのかな。
他の人の例が見たいものだ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。