STM32マイコンから外部メモリとして、シリアルのフラッシュROMを使用しています。
書込みに当たりちょっと引っかかるところがあったので、書込みの手順について説明します。
使用しているROMは、マイクロチップのSST26VF032Bというものです。
SPIで接続され、EEPROMとほとんど同じように使うことができますが、EEPROMとの違いとして、書込み前に消去が必要になります。
また、これはEEPROMでも同様ですが、書込み関連の命令の前には、必ず書込みイネーブルの命令(WREN)が必要になります。
ここまではわかっていたのですが、何度やってみても消去が実行されませんでした。消去命令の後にビジーを確認しても、すぐに解除されてしまっていて、どうも受け付けられていないようです。
再度データシートをよく読んでみると、プロテクトがかかっていることがわかりました。パワーオンリセットで、全領域のプロテクトが自動的にONになるようです。
したがって、起動時には必ず最初に、プロテクトの解除を実行しなければいけないようです。
書込みまでの手順をまとめると、以下のようになります。
- 電源ON
- WREN(書込み命令のイネーブル)
- UL(全領域のプロテクト解除)
- WREN
- セクタ消去、ブロック消去、チップ消去のいずれか
- 終了確認
- WREN
- 書込み
- 終了確認
以上で無事に書き込むことができました。
電源をOFFにしなければ、以降の書込みではULは必要ありません。また、消去済みの領域に書き込む場合には、消去は必要ありません。
読み出しについては特に変わった点はありません。EEPROMとまったく同じように読み出すことができます。