前回の記事では、M24SRの書き込み時間がかなり長いことがデータシートからわかりました。実際に200バイト程度のデータを書き込んでみると150msはかからなかったものの、50msは待たないといけないようです。やはりかなり待たないといけないようなので、GPO端子を使って割り込み待ちをすることにしました。
書き込み動作終了検出のために使用するGPO端子の動作モードとしては、"Answer Ready"を使うことにしました。このモードでは書き込みだけでなく、読み出し時にもコマンドの終了をGPO端子がLowになったことで検出することができます。一方、RF経由で外部からNDEFデータが書き込まれたことを検出するためには"MIP" を使いますが、こちらはデータの書き込み期間の出力がLowになります。そのため、RFからの書き込みが終了したことは、立ち上がりで検出することになります。このように必要に応じてGPO端子の動作モードだけでなく、その検出方法も変更しなければなりません。
GPO端子の動作モード変更にも、ちょっと手間がかかります。
具体的にはファイルの選択、パスワードの送信、書き換えデータの送信というように複数のコマンドを使ってようやくとGPO端子の動作モードの変更ができます。また、この際のコマンドの終了待ちにGPO端子を使うわけにはいかないので、動作モード変更時のコマンド終了待ちはpolling待ちでおこなう必要があります。
書き込み動作終了検出のために使用するGPO端子の動作モードとしては、"Answer Ready"を使うことにしました。このモードでは書き込みだけでなく、読み出し時にもコマンドの終了をGPO端子がLowになったことで検出することができます。一方、RF経由で外部からNDEFデータが書き込まれたことを検出するためには"MIP" を使いますが、こちらはデータの書き込み期間の出力がLowになります。そのため、RFからの書き込みが終了したことは、立ち上がりで検出することになります。このように必要に応じてGPO端子の動作モードだけでなく、その検出方法も変更しなければなりません。
GPO端子の動作モード変更にも、ちょっと手間がかかります。
- GPO端子の動作モードはシステムファイル領域に書き込まれたデータとして表現されているので、動作モード変更はこの領域のデータを書き換えることでおこなう。
- システムファイル領域の書き換えのためにはパスワードの送信が必要。
具体的にはファイルの選択、パスワードの送信、書き換えデータの送信というように複数のコマンドを使ってようやくとGPO端子の動作モードの変更ができます。また、この際のコマンドの終了待ちにGPO端子を使うわけにはいかないので、動作モード変更時のコマンド終了待ちはpolling待ちでおこなう必要があります。