STM32F103を使ってみる

開発ボードのバリエーション


STM32F1の開発ボードとしては、Black Pill/Blue Pillが有名ですが、これ以外にもたくさんの開発ボードが有ります。
こちらのボードは基板上に色々な周辺機器を実装することができます。
オンボードにはRESET-SW以外にユーザSW(PA8)が実装されています。


裏面にもTF CardやFLASHメモリーなどを実装することができます。


適当なブートローダーを書き込んでLチカしてみましたが、オンボードLEDはPA1に繋がっていました。
そこで、最終的に「generic_boot20_pa1.bin」のブートローダーを書き込んでいます。



こちらのボードはmaple miniのクローンです。


裏面にSTM32F103 C8T6が実装されています。


Blue Pillとほぼ同じサイズですが、USBコネクターはMiniUSBになっています。


ピンマップはこちらに あります。
このボードにはBootセレクターのジャンパーが有りません。
USBシリアル変換モジュールでブートローダーを書き込むときは、PB8をPullUP、PB2をPullDownする必要があります。
ブートローダーは「maple_mini_boot20.bin」を書き込みました。
ブートローダーを書き込むときに、Flashの内容を消していいかどうかの警告が出ますが、警告を無視して書き込みます。
これでMaple Serialを認識するようになります。

Arduino-IDEで使うときは、ボードタイプに「Maple Mini」を選びます。
USB経由でスケッチを書き込むときはPB8もPB2もオープンにする必要があります。
オンボードのLEDはPB1に繋がっています。
ボードタイプを「Generic STM32F103C Series」でスケッチを書き込むと、書き込みはできますが、
ブートローダーを破壊し、その後USBを認識しなくなります。


試しに「generic_boot20_pb1.bin」のブートローダーを書き込んでみましたが、USBを認識しませんでした。
ボード上にGPIOのピン番号のシルクがないので、使いずらいです。



こちらのボードはCPUにSTM32F103 RBT6が実装されています。


48PinのC8T6と比べると、64PinのRBT6のチップサイズは少し大きくなります。


STM32F103Rシリーズを使うときはポートDと実装されているメモリサイズの扱いに注意が必要です。
Arduino-IDEのボードで「Generic STM32F103R Series」を選ぶと、以下の4つのVariantを選択することができます。
この違いはポートDとメモリサイズの扱いです。
・STM32F103R8(64K) PD2のみ使用可能
・STM32F103RB(128K) PD2のみ使用可能
・STM32F103RC(256K) PD0 PD1 PD2が使用可能
・STM32F103RE(512K)  PD0 PD1 PD2が使用可能

このボードではPA0からPA15、PB0からPB15、PC0からPC13、PD2のポートがピンヘッダーに出ています。
STM32F103R8/STM32F103RBどちらを選んでもD2のポートは使えます。
STM32F103RC/STM32F103REを選ぶとブートローダーを破壊し、USBを認識しなくなります。



こちらのボードもCPUにSTM32F103 RBT6が実装されていますが、上のボードと違ってJTAG/SWDのMIPI-20ピンが実装されています。
SW2はパワースイッチ、LEDはパワーLED、GPIOに接続されているオンボードLEDはありません。
この手のボードにパワースイッチが実装されているのは珍しいです。
GPIOはPA0からPA15、PB0からPB15、PC0からPC15、PD0からPD2のポートがピンヘッダーに出ています。
USBはマイクロではなくミニとなっています。


裏面にはRTCバックアップ用のボタン電池(CR2102 3.3V)が入れられるようになっています。


オンボードLEDがないので、適当なブートローダを書き込みましたが、
GUIの「Flash Loader Demonstrator」ではFLASHサイズを64Kと認識しました。


CUIの「stm32flash.exe」ではFLASHサイズを128Kと認識します。


上のボードでも紹介しましたが、Arduino-IDEのボードで「Generic STM32F103R Series」を選ぶと、4つのVariantを選択することができます。
現在のCoreLibraryではSTM32F103RC/STM32F103REしかD0 D1ポートをサポートしていないので、これらのポートは使えません。