Arduino STM32 bootloader の覚書

Aliexpressから格安で入手できる、ARM ST32F1038T6 のボード、Arduinoの環境でソフト開発ができるというので、試してみた。買った基板は、これ、送料を含めても300円程度である。。
イメージ 1
通常の用途では、Arduino NANO などが安価で入手でき、すぐに使えるのだが、このボードを選択した理由は、12bit A/D と I/Oが欲しかったこと。

Arduino環境と言うのは、
 ・Arduino IDEでソフト開発ができる。
 ・プログラムの書き込みをUSB経由でできる。
ということ。一般的に、Arduinoのシリーズは、bootloader が書き込まれているが、この基板はそれがない。いろいろな書き込TOOLを使って、bootloader を書き込めば、以降は、USB経由で書き込み、デバッグができる。いくつかはまったりしたので、記録しておく。

使用したArduino IDE バージョンは Ver. 1.69 。

参考にしたページは
 http://nuneno.cocolog-nifty.com/blog/2015/05/arduino-ide-164.html
Arduino のライブラリのダウンロード、インストールはここに
 https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
bootloader 書き込みの手順はここにくわしい。
 https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/stm32duino-bootloader
書き込みするバイナリファイルは、
 https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/STM32F1/binaries
の中から、「 generic_boot20_pc13.bin 」をダウンロード。

STM32 用のプログラマ ST-LINK V2 は持っていないので、シリアルでの書き込みとして、秋月の FT-232 USBシリアルボードを使う。
イメージ 2
配線は、
 FT-232USBシリアル  <--> ST32ボード
   TXD ------------------ PA10
   RXD ------------------ PA9
当然ながら、電源+5V、GND も接続。
写真のように、BOOT0 の JUMPER をセットする。

Arduino_STM32 のフォルダの中に、stm32flash.exe があるので、DOS窓で起動して書き込む。フォルダや環境により、書き込むファイルの指定先、COMポートの番号ががちがうので、画像を参考に。
イメージ 3

書き込みを終了して、BOOT0 のJUMPERを元にもどして、STM32ボードのUSBをPCに接続すると、デバイスドライバでは図のように、「 Maple DFU 」表示される。
イメージ 4
Arduino IDE を図のように設定して、スケッチの書き込みを行うことができる。
なお、bootloader を書き込んだ直後には、シリアルポートは表示されない。
イメージ 5

一度、スケッチの書き込みを行うと、デバイスドライバは変更されて、Maple Serial(COM )のポートとなる。
イメージ 6

bootloader を書き込んで、スケッチを書き込んでも、USBポートのリセットがうまくいかなかったりなど、何らかの理由で、「 Maple DFU 」ままで、Maple Serial(COM )とならないことがある。
この状態になると、USBポートからの書き込みができなくなる。私の場合、再度、bootloader を書き込んで、OK となった。