SM130モジュールを使ったMifareプロトコルによる通信の流れは、主に3段階に分けられる。
一つが、通信対象となるRFIDタグの選出。
一つが、メモリブロックへの認証。
一つが、メモリ内容の読み込みと書き換えである。


通信対象となるRFIDタグの選出

RFIDタグはそれぞれがユニークなシリアル番号を所持している。
通信する際に対象となるタグのシリアルを指定することで、特定のタグのみと通信することができるようになる(アンチコリジョン)。
通信可能範囲内にRFIDタグが存在すればモジュール側からこれを取得することができる。
つまり、最初から通信対象となるタグが決定していればその必要はないが、まずはじめに行うことは通信可能範囲内にあるタグを探すことになる。

SM130のコマンドにおいて、SeekコマンドSelectコマンドに相当する。


メモリブロックへの認証

認証は、タグのブロック単位と行う。
FeliCaにおいては、カードと非相互認証通信する場合は、リーダ・ライタと認証するだけで済む。
しかしMifareの場合、ブロックへread/writeする度にブロックへ認証を行う必要があるということが決定的に異なる。
もし認証したブロックとは異なるブロックと通信しようとした場合、数回は認証無しでも通信が行えるが、そのうちに認証エラーが発生する。
確実に通信するために、認証は各ブロックごとに行った方がいい。

認証のためのキーはサービス対象によって異なるが、基本的に6バイトである。

認証は、SM130のコマンドにおいてAuthenticateコマンドに相当する。


メモリ内容の読み込みと書き換え

対象となるブロックと認証が成功した後に、ブロック内容の読み込みや書き換えが可能になる。
ただし、1ブロックの容量は16バイトであることに注意。
もし16バイトを超えるデータをタグに保存したい場合は、複数個所のブロックにうまいこと書き込むことで実現される。

読み込みと書き換えはSM130のコマンドにおいて、それぞれRead BlockコマンドWrite Blockコマンドに相当する。


要するに

つまりはまあ、下図のようなプログラムを書くようになる。

プログラム例のフローチャート