STM32マイコンから外部メモリとして、シリアルのフラッシュROMを使用しています。
書込みに当たりちょっと引っかかるところがあったので、書込みの手順について説明します。

使用しているROMは、マイクロチップのSST26VF032Bというものです。
SPIで接続され、EEPROMとほとんど同じように使うことができますが、EEPROMとの違いとして、書込み前に消去が必要になります。
また、これはEEPROMでも同様ですが、書込み関連の命令の前には、必ず書込みイネーブルの命令(WREN)が必要になります。

ここまではわかっていたのですが、何度やってみても消去が実行されませんでした。消去命令の後にビジーを確認しても、すぐに解除されてしまっていて、どうも受け付けられていないようです。

再度データシートをよく読んでみると、プロテクトがかかっていることがわかりました。パワーオンリセットで、全領域のプロテクトが自動的にONになるようです。
したがって、起動時には必ず最初に、プロテクトの解除を実行しなければいけないようです。

書込みまでの手順をまとめると、以下のようになります。

  • 電源ON
  • WREN(書込み命令のイネーブル)
  • UL(全領域のプロテクト解除)
  • WREN
  • セクタ消去、ブロック消去、チップ消去のいずれか
  • 終了確認
  • WREN
  • 書込み
  • 終了確認

以上で無事に書き込むことができました。
電源をOFFにしなければ、以降の書込みではULは必要ありません。また、消去済みの領域に書き込む場合には、消去は必要ありません。

読み出しについては特に変わった点はありません。EEPROMとまったく同じように読み出すことができます。