Blue Pill + mbed
格安のSTM32F103ボードである Blue Pill。
Arduino 開発環境で作るのがカンタンだけど、mbed 環境でも開発できる。
mbed 開発環境に Blue Pill は勿論登録されていないけれども、ほぼ同じチップを使った Nucreo F103RBを使うことができる。
Nucreo F103RB はマイコンチップとしてSTM32F103RB を使っている。
Blue Pill はマイコンチップとしてSTM32F103C8T6を使っている。
違いはこんなところ。
MCU | GPIO | package | Flash | ADC |
---|---|---|---|---|
STM32F103RB | LQFP64,TFBGA64 | 51 | 128KB | 15~16 |
STM32F103C8T6 | LQFP48,UFQFPN48 | 37 | 64KB | 10 |
主にFlashが128KBと64KBの違いだけれど、実はBluePillのチップはFlashが128KB入っていたりする。
mbedでLチカ
まず、サンプルプログラム Nucreo_blink_ledを呼び出す。
ここでは、Nucreo_blink_led_BluePillと名前をつけました。
NucreoのLEDは、PA_5につながっているらしいです。BluePillではPC_13なのでそれを書き換えます。
「コンパイル」ボタンを押すとバイナリがダウンロードされます。
書込
ここで、Nucleo の場合はPCにボードを繋ぐと出現するUSBストレージにバイナリファイルをコピペします。
しかしながらBluePillにはそういった機能は無いので、ST-LinkやUSBシリアルアダプタを使って書き込むことになります。
ここではUSBシリアルを使ってみます。
配線
今回はBluePillのバリエーションの、RobotDynのボードと秋月電子の「FT232RQ USBシリアル変換キット」 を使いました。
本家BluePillの場合はこちらを参照
https://qiita.com/nanbuwks/items/ba37f049f45378da0e2b
stm32flash
書込ソフトとして、stm32flashツールを使います。ここでは、Arduino_STM32をインストールした時にインストールしたものを使いました。
$ cd Arduino
$ cd hardware/Arduino_STM32-master/tools/linux64/stm32flash/
$ ./stm32flash -w ~/Downloads/Nucleo_blink_led_BluePill_NUCLEO_F103RB.bin -v -
g 0x0 /dev/ttyUSB0
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote and verified address 0x08004d40 (100.00%) Done.
Starting execution at address 0x08000000... done.
$
コレで書けました。
注意点
上記のプログラムを実行してみたら、LEDの1と0が逆になっているみたいでした。