メリットは,コストの削減と入手のしやすさである。
SPIフラッシュは2種類の一般的なカテゴリに分類できる。 コードストレージ用のSPIシリアルフラッシュ,データストレージ用のSPIシリアルフラッシュである。
データ用メモリは,先にデータを消去することなくメモリに書き込める命令など,いくつかの追加的命令を備えている。この命令は,アプリケーションから素早くデータを読み出し/書き込みするとき,便利である。
コード用メモリは,ベンダ,デバイスの種類とも選択肢が広く,データ用メモリの特殊な機能を本当に必要とする場合を除き,コード用メモリのプログラミング機能が使用される。
データ用メモリはコード用メモリの上位互換デバイスであり,データ用メモリを使っても問題は無い。従って選択肢をオープンにしておく場合は,データ用メモリの特殊命令に依存するのを避けるほうが賢明だ。
SPIフラッシュメモリはどのベンダでもほとんど同じであるが,いくつかの注意点がある。 最近のデバイスの多くは,ポーリングすることでデバイスを認識できる「ReadID」命令をサポートしている。このデバイスのデータシートに記載された注意事項を必ず参照する習慣をつけて欲しい。
どのベンダのデバイスも読み出し/消去/プログラムの各命令をサポートしているが,それぞれ使用するコマンドセットは異なっている。 どのコマンドもやるべきことは同じであるが,コマンドごとに使うビットは異なっている。
基本的な命令を使い,前述の注意点に留意すれば,小さな専用のSPIフラッシュプログラマを自分で作成することは容易である。 すべてのデータとコマンドは,最初に最上位ビット(MSB)からシフトインされる。
後は,ステータスレジスタをチェックして消去サイクルが終了したことを確認するか,予想される最大消去時間(ベンダとデバイスの密度に応じて1〜数百秒)待機する。
メモリアレイからのデータの読み出し
ほとんどのデバイスでは,クロックを入力し続けるとデバイスの終わりまで続行し,終わりまでくると最初のアドレスに戻り,続けて使用できる。
メモリアレイにデータを書き込む
ページの境界を越えると,データがラップしてページの下部に上書きされ,次にページに進むことは無い。