最近、多くの人々から人気を集めているのが、ARM Cortex-M3を搭載したコストパフォーマンスに優れたボード、STM32F103C8です。Arduino IDEでも利用可能ということから、私も早速、試してみました。
ARM Coretex-M3 を搭載し、驚くほどお求めやすい価格で提供されている STM32F103C8 ボードは、大変人気があります。なんと、一個 @200円 で手に入れることができ、5個または10個のまとめ買いもおすすめです。
ただし、STM32F103C8 には、、いくつかのバリエーション(ピルボード)が存在するため、ご注文の際は型番等をよくご確認ください。
AliExpress で「STM32」と検索すると、たくさんの「Blue Pill」(写真、一番上)がヒットします。ただ、このボード、USB の周辺にはちょっとした不具合があるようで、チップ抵抗の交換が必要だと聞いています。
そんなわけで、私は新しいバージョンの「Black Pill」というボードを選ぶことにしました。
Black Pill と Blue Pill は、PCB の色、ジャンパピン、リセット SW の位置で見分けられます。
(写真は Black Pill)
この後の、環境設定や動作確認については、この Black Pill を使って話しを進めていきます。
STM32 Black Pill - Land Boards Wiki
@200 と激安にもかかわらず、製品にはピンヘッダも付属してきます。
ブレッドボードなどの環境に合わせて、ロングピンソケットの使用も一つの選択肢ですが、私は、付属のピンヘッダだけで間に合わせました。
ただし、このピンヘッダには少し問題があり、ハンダの乗りがとても悪くて、正直、大変困りました。この点については、使用する際には十分注意が必要です。
また、STM32F103C8T6 の型番の読みかたですが、
- C = 48 pins
- 8 = 64Kbytes of Flash memory
- T = LQFP パッケージ
- 6 = -40〜85°C
を表しているようです。
Arduino UNO と比較してみました。
- | STM32F103C8T6 (Black Pill) | Arduino UNO |
マイコンチップ | ARM 32 Cortex-M3 CPU | ATmega328P |
Flash | 64KB | 32KB |
RAM | 20KB | 2KB |
動作クロック | 72MHz | 16MHz |
動作電圧 | 2.0-3.6V | 5V |
価格 | 約200円 | 約3,000円(秋月電子) |
Black Pill と Arduino IDE の主要スペックを並べましたが・・・ARM Coretex-M3 と AVR の 328 を比べるのもねぇ~って感じです。
Arduino IDE で開発するため、ブートローダを書き込みます。
現在のボードでは、Arduino IDE から直接ブートローダを焼くことはできませんので、少し手間がかかりますが、ここのチュートリアルに従って操作を行えば、ブートローダは簡単に書き込むことができます。
ブートローダの書き込みには、UART と ST-Link の2つの方法があります。私の場合、USB シリアル変換モジュールを使用して、UART での書き込みを選びました。
1. ブートローダをダウンロード
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries
上記の URL から「generic_boot20_pb12.bin」をダウンロードします。
(2019/08/01 現在、このページは消えてます。)
また、下の GitHub にも STM32duino-bootloader として多数のバイナリが登録されています。
http://STM32duino-bootloader
今回の Black Pill のユーザ LED は PB12 なので、書き込むブートローダは「generic_boot20_pb12.bin」を選択します。
https://chiptron.cz/images/articles/Minimum_System_Development_Board_STM32/BlackPill.pdf
2. BOOT ジャンパの設定
BOOT 0 | BOOT 1 | MODE |
1 B0+ to center pin |
0 B1- to center pin |
シリアルブートローダを起動 |
0 B0- to center pin |
0 B1- to center pin |
通常時、FLASH BOOT |
ブートローダを書き込むため、ジャンパを「シリアルブートローダを起動」に設定します。
B0+ to center pin、B1- to center pin
3. Black Pill と USB シリアル変換モジュールを接続
Black Pill | USB シリアル |
RX | PA9 |
TX | PA10 |
GND | G |
3.3V | V3 |
STM32F103 Black Pill Development Board
ジャンパワイヤだけで直接接続です。
4. リセットボタンを押下すると、ユーザ LED(青色)が消灯します。
5. ブートローダ書き込みソフト「FLASHER-STM32」をインストールします。
下記のURLから書き込みソフトをダウンロードします。
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html
en.flasher-stm32.zip を解凍して Demonstrator GUI をインストールします。
6. ブートローダを書き込みます。
Download from file に「generic_boot20_pb12.bin」を指定します。
7. BOOT ジャンパの設定を「通常、FLASH BOOT」にします。
B0- to center pin、B1 はそのまま。
Arduino IDE の設定
設定方法については下記のウェブに詳しく書かれています。
1. Arduino SAM Boards(Cortex-M3環境)を導入します。
ツール → ボード → Board Manager を選択して、
Arduino SAM Boards (32-bits ARM Coretex-M3) by Arduino を選択してインストールします。
2. Arduino-STM32 パッケージを導入します。
https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip
このパッケージをダウンロードして展開します。
展開してできた「Arduino_STM32-master」フォルダを、フォルダごと Arduino IDE の「hardware」フォルダの配下に移動します。
Arduino IDE のサンプルスケッチで L チカする
スケッチ例から Blink を選択して出力ピンを PB12 に変更します。
(Black Pill のユーザ LED が PB12 のため)
PB1 を PB12 に変更します。
ボードの設定です。
書き込み実行時のステータス。
青色のLEDが点滅しました。
以上です。
※記事の追加情報、修正は適宜行うこととします。