Arduino IDEでSTM32F411 Black Pillへスケッチを書き込む

はじめに

STM32F411CEU6実装のWeact Black Pillボードが簡易にArduino IDEでUSB Type-C or シリアル(USB→TTL 4ピン)経由、スケッチが書き込めるかを実験してみよう。当然、FlashLoader、keilなどでJTAG、SWD経由でもFlash書き込み可能とされる。因みに、出荷時の初期状態ではWeAct HID bootloaderが書き込み済みなので、電源を入れたら、C13 LEDが点滅状態に入るのを確認する。また、STM32CubeProgrammer 2.6.0STM32duino Bootloaderや、WeAct HID bootloaderを書き込んで出荷時の初期状態に設定できる。Bootloaderの書き込み先頭アドレスは0x8000000となる。

ボード情報

USB speed : Full Speed (12MBit/s)
Manuf. ID : STMicroelectronics
Product ID : STM32 BOOTLOADER
SN : 3197347F3030
FW version : 0x011a
Device ID : 0x0431
Device name : STM32F411xC/E
Flash size : 512 KBytes (default)
Device type : MCU
Device CPU : Cortex-M4

MCU情報

STM32F411CE、周波数100Mhz、RAM 128KB、ROM 512KB

手順

Flash書き込みソフトのSTM32CubeProgrammer 2.6.0をダウンロードして、Windows 64bit版の場合、exeファイルから、Ubuntuの場合、linuxファイルからインストールする。上記STM32CubeProgを使ってUSB書き込みの場合、プログラムモードにあるUSBポートが認識できない。後述Arduino IDEで書き込みの場合でもUSBポートが認識できない。また、Windows10、ubuntu 18.04環境とも同現象が出る。
※追記、上記USBポート認識できない現象、dfu-utilをインストールすることで解消する。

$sudo apt-get update
$sudo apt-get install dfu-util
$dfu-util -l

STM32duinoの追加

Arduino IDEでファイル→環境設定→下記リンクを追加して、ツール→ボード→ボードマネージャ→STM32を検索してインストールする。

https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

ボード情報などの設定

シリアルの場合

stm32f411_arduino_ide_serial_setting
stm32f411_arduino_ide_serial_setting

USBの場合

stm32f411_arduino_ide_usb_setting
stm32f411_arduino_ide_usb_setting

PC接続

ボードをUSB Type-C or シリアルケーブルでPCに接続する。

モードの切り替え

プログラムモードへ切り替えるため、BOOT0を押下と同時にNRSTを押下→NRSTを離す→0.5秒後BOOT0を離す→初期状態のLED点滅が消える。この一連の指操作は、Finger Danceと言われる。

スケッチの書き込み

ファイル→スケッチ例→01Basics→Blink、書き込みボタンをクリックする。ときに書き込み失敗が起きても、再びモードを切り替て試したらほとんどの場合、2回連続の書き込みで済むようになる。

stm32f411_arduino_ide_usb_ok
stm32f411_arduino_ide_usb_ok

動作確認

下図のようにUSB接続、USB書き込みの場合、うまくいくと再び初期状態と違うパタンの青色LED点滅が確認できる。

STM32F411SEU6_Black_Pill動作確認
STM32F411SEU6_Black_Pill動作確認

追記

結論として、安価なST-Link/J-Linkでもプログラムの書き込みが安定して、そしてISPモード(シリアル、USB)で書き込む際に必要なFinger Danceも要らないので、作業に向いている。次に、ROSSerialなどを組み込んで、オープンソース化するロボット関連製品の開発に役立てたい。これで、Arudino開発環境が馴染み深いユーザーさん向けの製品の開発にとくに意味あると考えられる。

参考資料

WeActTC/MiniF4-STM32F4x1

関連記事

STM32CubeIDEでSTM32F411設定

ロボット・ドローン部品お探しなら
ROBOT翔・電子部品ストア