次はSTM32ボードを積極的に使ていきたい(10) - 128kB利用可能?
Blue Pillボードのフラッシュメモリの容量の確認
Blue PillボードにはARMマイコン STM32F103C8が搭載されています。
STM32F103C8は、公式にはフラッシュメモリ容量は64kバイトなのですが、
実際には128kバイトのものが流通しているとのことです。
実際にどうなのか、ちょっと確かめてしました。
まずは、搭載マイコンの刻印のチェック

「STM32F103C8T6」と明記されています。
データシートにより、このマイコンのフラッシュメモリサイズは64kバイトのはずです。
次に、実際にフラッシュメモリサイズを128kバイトと仮定して、
その領域の最終領域のアドレス 0x801FC00 に書き込みを行ってみました。
フラッシュメモリはページ単位(1kバイト)で消去、16ビット単位で書き込みが出来ます。

書き込み確認用スケッチ
特定の文字列をフラッシュメモリ上の指定アドレスに書き込んで、その内容を
確認するプログラムです。
64kバイト目のページと128kバイト目のページに異なる文字列を書きこんで、
シリアル接続にて内容を確認します。
// // FILE stm31_testFlash // フラッシュメモリ書き込みテスト for Arduino STM32 // 作成日 2017/03/16 by たま吉さん // #define FLASH_PAGE_SIZE 1024 #define FLASH_START_ADDRESS ((uint32)(0x8000000)) #include <string.h> #include "stm32_hexedit.h" #include "TFlash.h" uint8_t str1[] = "1234567890A"; uint8_t str2[] = "abcdefghij"; void Arduino_putchar(uint8_t c) { Serial.write(c); } char Arduino_getchar() { char c; while (!Serial.available()); return Serial.read(); } uint32_t adr0 = FLASH_START_ADDRESS + FLASH_PAGE_SIZE * 63; uint32_t adr1 = FLASH_START_ADDRESS + FLASH_PAGE_SIZE * 127; void setup() { Serial.begin(115200); while (!Serial.isConnected()) delay(100); setFunction_putchar(Arduino_putchar); setFunction_getchar(Arduino_getchar); initscr(); // フラッシュメモリ書き込みテスト TFlash.unlock(); TFlash.eracePage(adr0); TFlash.write((uint16_t*)adr0, str1, strlen((char*)str1)); TFlash.eracePage(adr1); TFlash.write((uint16_t*)adr1, str2, strlen((char*)str2)); TFlash.lock(); } void loop() { // 64kバイトフラッシュメモリ最終ページの参照 clear(); hexedit2 (adr0, false); // 128kバイトフラッシュメモリ最終ページの参照 clear(); hexedit2 (adr1, false); }
スケッチを実行して確認すると、64kバイト目のページ、128kバイト目のページに
それぞれちゃんと書き込めていました。
ページ63、64kバイト目のページへの書込みの確認

ページ127、128kバイト目のページへの書込みの確認

ということで、STM32F103C8T6 ですが128kバイト利用出来ます。
ただし、生産ロット・時期により64kバイトの可能性もあります。
動作確認で利用した、フラッシュメモリ書き込みは色々と使えそうなので
ライブラリ化しました。
・Arduino STM32用 内部フラッシュメモリ書き込みライブラリ
https://github.com/Tamakichi/ArduinoSTM32_TFlash
まだ、ドキュメント等は未作成です。
動作確認したスケッチはそのまま、ライブラリのサンプルとして入れています。
別途、mcursesライブラリ(https://github.com/ChrisMicro/mcurses)が必要です。
« 次はSTM32ボードを積極的に使ていきたい(9) - TVout互換ライブラリ | トップページ | 脈拍パルス(?)センサーを試してみる »
「arduino」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
「ARM」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- PocketGoで遊んでみる(1)(2020.03.24)
- Arduino用 MML文演奏ライブラリの作成 その1(2019.04.01)
- BluePillボードで4桁7セグLEDの制御(2019.03.21)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
« 次はSTM32ボードを積極的に使ていきたい(9) - TVout互換ライブラリ | トップページ | 脈拍パルス(?)センサーを試してみる »

コメント