STM32F103を使ってみる

ブートローダーの設定


STM32には非常にたくさんのバリエーションが有りますが、最近になってSTM32のF103シリーズがArduino-IDEで開発できるこ とを 知りました。
Arduino-IDEで開発するためには、最初にSTM32duino-bootloaderを書き込む必要が有ります。
STM32duino-bootloaderの書き込みについては以下で非常に詳しく紹介されています。

@https://ht-deko.com/arduino/stm32f103c8t6.html
Ahttp://jh1lhv.hatenablog.jp/entry/2017/01/30/225814

@の記事とAの記事の違いは以下の部分です
(1)@はWindows64Bit版、AはWindows32Bit版への導入方法
(2)使用している開発ボード @ではBlue Pilll AではBlack Pillが使われています
(3)ブートローダー書き込みツール

特に注意が必要なのは(1)の違いです。
Arduino_STM32をコピーした後に、Windosw64Bit版では、drivers\win フォルダにある install_drivers.bat を ([管理者として実行] で) 実行する
必要がありますが、Windows32Bit版では必要がありません。Aにもその記載はありません。

開発ボードが違うと、書き込むブートローダーが変わりますが、オンボードLEDがどのポートに接続されているかの違いだけです。
BluePill:generic_boot20_pc13.bin(オンボードLEDはpc13ポート)
BlackPill:generic_boot20_pb12.bin(オンボードLEDはpb12ポート)

Arduino-IDEでスケッチを書き込むときに、オンボードLEDがLチカしますが、
書き込むブートローダーを間違えてもオンボードLEDがLチカしないだけなので、
ブートローダーの選択はあまり気にする必要はありません。

ブートローダー書き込みツールとして、CUIの「stm32flash.exe」と、GUIの「Flash Loader Demonstrator」が紹介されています。
重要なのはCUI/GUIの違いではなく、「stm32flash.exe」はWindows64Bit版しか対応していません。
Windows32Bit版の場合は、無条件に「Flash Loader Demonstrator」を使うしかありません。
なお、GUIの「Flash Loader Demonstrator」はフラッシュサイズを正しく把握できないことが多いです。
フラッシュが128KのSTM32F103RBを以下のように誤認識します。


フラッシュサイズを誤認識した時は、次の画面で正しいサイズを指定する必要があります。


@とAの両方を参考にすれば、間違いなくArduino-IDEで開発できるようになります。
Windows64Bit版の方はBlue Pill、Windows32Bit版の方はBlack Pillを使えば、上記の記事のままとなります。

BluePillとBlackPillの両方を購入しました。
購入するまでは色と部品実装位置が違うだけだと思っていましたが、以下の様にボードサイズ、ピン数、ピン配置が違います。


Black Pillの方がボードサイズは大きいのですが片側17ピン、一方Blue Pillは片側20ピンです。

Black Pillのページ
http://wiki.stm32duino.com/index.php?title=Black_Pill
「Comparison with the Blue Pill」のセクションにBlue Pillとの違いが記載されています。
なぜかこのボードのPinOutは、ほとんど見つかりません。

Blue Pillのページ
http://wiki.stm32duino.com/index.php?title=Blue_Pill
「STM32F103 Pinout」で検索するとこれがヒットします。

Red Pill(入手困難)のページ
http://wiki.stm32duino.com/index.php?title=Red_Pill

Blue Pillに有って、Black Pillに無いのは以下のピンです。
PC14(OCS32_IN)
PC15(OCS32_OUT) 
5V(USBの5Vラインと直結)
VBAT(RTC用バッテリーバックアップ)

STM32の各ピンは以下の3つの機能に切り替えることができます。
主機能(リセット後の機能)
代替機能(デフォルト)
代替機能(リマップ)
PC14とPC15には以下の機能が割り当てられています。

主機能 代替機能(デフォルト) 代替機能(リマップ)
PC14 ディジタルピン OCS32_OUT なし
PC15 ディジタルピン OCS32_IN なし

OCS32_IN/OCS32_OUTの動作について調べてみましたが、どうやら低速発振子を取り付けるためのポートのようで
このポートが有っても無くてもあまり問題ないと思います。
Black Pillでは5Vピンが無いので、5Vで動作するモジュールやセンサーへの給電がボードから直接できないのが一番大きいかもしれません。

NANO、ProMiniと比べると以下の様になります。
ATMEGA328PとSTM32F103CのCPUサイズはほぼ同じですが、ATMEGA328Pは32ピン、STM32F103Cは48ピン のCPUです。


BluePill BlackPillともにLeafLabs のMaple Miniと互換性がある(はずな)のでこ ちらのドキュメントが参考になります。

これ以降、主にSTM32 Coreに含まれているライブラリーを中心に紹介します。
次回はW5500のEthernetモジュールを使ったNTPクライ アントを紹介します。

続く...