江協の 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 配線を学んで、プロジェクトを楽しんでみます。