江協の STM32 チュートリアルの最後の回は、私たちにフラッシュストレージを使う方法を教えています(実際にはその後に CAN 通信がありますが、別に取り上げられています)。
(一)フラッシュとは#
フラッシュメモリ(FLASH EEPROM)は、フラッシュとも呼ばれます。これは EEPROM の一種です。ROM と RAM の長所を組み合わせています。電子的に消去可能で編集可能(EEPROM)の性能を持ち、電源が切れてもデータが失われず、迅速にデータを読み取ることができます。EEPROM との最大の違いは、FLASH はセクター(ブロック)単位で操作され、EEPROM はバイト単位で操作されることです。FLASH の回路構造は比較的単純で、同じ容量であればチップ面積が小さく、コストも自然に EEPROM より低いため、プログラムストレージとして適しています。
STM32F1 シリーズの FLASH は、プログラムストレージ、システムストレージ、およびオプションバイトの 3 つの部分で構成されており、フラッシュメモリインターフェース(周辺機器)を介してプログラムストレージとオプションバイトの消去とプログラミングが可能です。
FLASH の読み書きの用途:
プログラムストレージの残りのスペースを利用して、電源が切れても失われないユーザーデータを保存します。
プログラム内でプログラミング(IAP)を行い、プログラムの自己更新を実現します。
オンラインプログラミング(In-Circuit Programming – ICP)は、プログラムストレージの全内容を更新するために使用され、JTAG、SWD プロトコル、またはシステムブートローダーを介してプログラムをダウンロードします。
プログラム内でのプログラミング(In-Application Programming – IAP)では、マイクロコントローラがサポートする任意の通信インターフェースを使用してプログラムをダウンロードできます。
(二)フラッシュモジュールの構成#
STM32 のフラッシュモジュールは、主ストレージ(コード部分を保存)、情報ブロック(ブートストラッププログラムとオプションバイト部分を保存)、およびインターフェースレジスタ(周辺機器をリンクする部分)に分かれています。
(三)フラッシュ構造#
フラッシュ構造図は以下の通りです:
(四)コード部分#
はい、私たちは直接コード部分に進みました。なぜでしょうか?フラッシュの使用には多くのレジスタを変更する必要がありますが、標準ライブラリがすでに私たちのためにラッピングしてくれているので、簡単に呼び出すだけで済みます。
注意すべき点は、書き込む前に必ず消去しなければならないことです。そうしないと変更できません。
また、データストレージアドレスは末尾に配置する必要があります。そうしないとプログラムコードと衝突します。
ということで、フラッシュの学習ノートはこれで終わりです。少し手を抜いてこのままにしておきます。次は PCB 配線を学んでプロジェクトを楽しんでみます。