1 STM32使用の経緯
2025年7月ごろからMPUが安価なことから手を出してしまった『CH32V203』はRISC-Vですが、このRISC-Vを調べているとArmアーキテクチャのCPUと言う言葉が出てきてきており、
この頃からArmアーキテクチャのCPUも使いたいと思っていた。
そして9月初旬 CH32V203のLEDの点灯プログラミングで行き詰まっているとき(※1)に気休めにamazomで非常に安価なSTM32F103C8T6評価ボードを見つけ、これが『ArmアーキテクチャのCPU』だと言う事が判り購入してしまった。
しかし購入した翌日・・以前STM32・・???を購入してた様な・・で調べてみるとSTM32-Discovery、My-MiniSTM32V、STM401RE・ST446REの評価ボードを購入していた事が判った。 ボケていることを再認識!
泥沼にハマった気分だが、このSTM32は最初にプログラムで書く必要のあるクロックや入出力のレジスタの設定が簡単に出来るようです。
購入品が届く前に右上のSTM32F401RE評価ボードでLEDの点滅までが出来るだろうと思い記録にした。
なお amazonで購入したSTM32F103C8T6評価ボードだが『Youmile ST-Link V2エミュレータプログラミングユニットダウンローダ + 40ピンSTM32F030C8T6 ARM評価ボード +
FT232RL FTDIモジュール マイクロUSBケーブル デュポンケーブル ミニUSBケーブル付き』が 送料込999円
非常に安価なので心配だが商品内容は
ST-Link V2エミュレータ、STM32F103C8T6 ARM評価ボード、FT232RL FTDIモジュール、マイクロUSBケーブル、デュポンケーブル、ミニUSBケーブルとなっている。
※1:CH32V203K8T6とCH32V203C8T6のGPIOについて試しのプログラムをしていたが、両製品の特性の違い・不良か、プログラム不良なのか、GPIOの最大出力周波数に違いが出たのに原因が分からない!
そして9月初旬 CH32V203のLEDの点灯プログラミングで行き詰まっているとき(※1)に気休めにamazomで非常に安価なSTM32F103C8T6評価ボードを見つけ、これが『ArmアーキテクチャのCPU』だと言う事が判り購入してしまった。
しかし購入した翌日・・以前STM32・・???を購入してた様な・・で調べてみるとSTM32-Discovery、My-MiniSTM32V、STM401RE・ST446REの評価ボードを購入していた事が判った。 ボケていることを再認識!
泥沼にハマった気分だが、このSTM32は最初にプログラムで書く必要のあるクロックや入出力のレジスタの設定が簡単に出来るようです。
購入品が届く前に右上のSTM32F401RE評価ボードでLEDの点滅までが出来るだろうと思い記録にした。
非常に安価なので心配だが商品内容は
ST-Link V2エミュレータ、STM32F103C8T6 ARM評価ボード、FT232RL FTDIモジュール、マイクロUSBケーブル、デュポンケーブル、ミニUSBケーブルとなっている。
※1:CH32V203K8T6とCH32V203C8T6のGPIOについて試しのプログラムをしていたが、両製品の特性の違い・不良か、プログラム不良なのか、GPIOの最大出力周波数に違いが出たのに原因が分からない!
2 STM32の性能確認
2.1 STM32シリーズ
STM32の製品名には、シリーズの特性を示す文字が含まれています。
「H」:ハイパフォーマンス
「F」:汎用
「L」:低消費電力
「G」:メインストリーム
「U」:超低消費電力
「W」:ワイヤレス
「H」:ハイパフォーマンス
「F」:汎用
「L」:低消費電力
「G」:メインストリーム
「U」:超低消費電力
「W」:ワイヤレス
2.2 手持ちのSTM32
STM32の製品で手持ちなのは5種類あり、全てFシリーズの製品です。
| Board Name | --- | STM32VLDISCOVERY | My-MiniSTM32V | NUCLEO-F401RE | NUCLEO-F446RE |
| MPU | STM32F030C8T6 | STM32F100RBT6B | STM32F103VCT6 | STM32F401RET6U | STM32F446RET6U |
| 動作最大周波数(MHz) | 48 | 24 | 72 | 84 | 180 |
| CPU | ARM Cortex-M0 | ARM Cortex-M3 | ARM Cortex-M3 | ARM Cortex-M4 | ARM Cortex-M4 |
| FLASH Memory(KB) | 64 | 128 | 384 | 512 | 512 |
| RAM Memory(KB) | 8 | 8 | 64 | 96 | 128 |
| パッケージ | LQFP48 | LQFP64 | LFBGA100 | LQFP64 | LQFP64 |
| ユニバーサルIO | 39 | 51 | 80 | 50 | 50 |
| 最小動作電圧(V) | 2.4 | 2 | 2 | 1.7 | 1.8 |
| 最大動作電圧(V) | 3.6 | 3.6 | 3.6 | 3.6 | 3.6 |
| 16bitタイマー | 7 | 6 | 8 | 6 | 12 |
| 32bitタイマー | -- | -- | -- | 2 | 2 |
| モータ制御用タイマ | 1 | 1 | 2 | 1 | 2 |
| 12bitADC | 1 | 1 | 3 | 1 | 3 |
| 12bitADCチャンネル数 | 12 | 16 | 16 | 16 | 16 |
| 12bitDACチャンネル数 | -- | 2 | 2 | -- | 2 |
| SP! | 2 | 2 | 3 | 3 | 4 |
| QUADSPI | -- | -- | -- | -- | 1 |
| I | -- | -- | 2 | 2 | 3 |
| I | 2 | 2 | 2 | 3 | 4 |
| 高速I | -- | -- | -- | -- | 1 |
| U(S)ART | 2 | 3 | 2+3 | 3 | 4+2 |
| CAN | -- | -- | 1 | -- | 1 |
| SDIO | -- | -- | 1 | 1 | 1 |
| USB OTG FS | -- | -- | -- | 1 | 1 |
| USB OTG HS | -- | -- | -- | -- | 1 |
| SAI | -- | -- | -- | -- | 2 |
| SPDIFRX | -- | -- | -- | -- | 1 |
| DCMI | -- | -- | -- | -- | 1 |
| USBデバイス | -- | -- | 1 | -- | -- |
2.3 STM32性能確認
1つの確認方法としてGPIOで信号をONーOFFできる時間を測定する。
プログラムはSTM32CubeIDEで作成する。
例としてF401REの設定を示す。
1サイクルは 1000/84 ≒ 12 (ns)
各MPU別処理速度測定結果
※1 STM32F030C8T6:Err Project '030test' has no explicit encoding set
※2 STM32VLDISCOVERY:Err Project '100test' has no explicit encoding set
※3 HY-MiniSTM32V:Err No solution found using your Frequency 72MHz. do you want to use: 64MHz
最大周波数で試験が出来ないので、後日KeilのMDK-ARMで確認してみたい。
プログラムはSTM32CubeIDEで作成する。
例としてF401REの設定を示す。
1.Clock Configuration:最大周波数 84MHz で設定

2.Pinout & Configuration:PA1の設定=最速設定

2.Pinout & Configuration:PA1の設定=最速設定
3.main.c

4.プログラム実行結果


4.プログラム実行結果

| 実行No | 動作時間(ns) | 備 考 |
|---|---|---|
| ② | 60 | 実行 5サイクル |
| ③ | 60 | |
| ④ | 60 | |
| ① | 84 | ループ戻り2サイクル+実行 5サイクル |
各MPU別処理速度測定結果
| Board Name | --- | STM32VLDISCOVERY | HY-MiniSTM32V | NUCLEO-F401RE | NUCLEO-F446RE |
| MPU | STM32F030C8T6 | STM32F100RBT6B | STM32F103VCT6 | STM32F401RET6U | STM32F446RET6U |
| 動作周波数(MHz/ns) | 48 / 21 | 24 / 42 | 72 / 14 | 84 / 12 | 180 /5.5 |
| ②実行時間(ns/cycle) | ※1 | ※2 | ※3 | 60 / 5 | 33 / 6 |
| ③実行時間(ns/cycle) | ※1 | ※2 | ※3 | 60 / 5 | 33 / 6 |
| ④実行時間(ns/cycle) | ※1 | ※2 | ※3 | 60 / 5 | 33 / 6 |
| ①実行時間(ns/cycle) | ※1 | ※2 | ※3 | 84 / 7 | 38.5 / 7 |
※2 STM32VLDISCOVERY:Err Project '100test' has no explicit encoding set
※3 HY-MiniSTM32V:Err No solution found using your Frequency 72MHz. do you want to use: 64MHz
最大周波数で試験が出来ないので、後日KeilのMDK-ARMで確認してみたい。
