JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

ARM ボード STM32F103C8T6 (Black Pill) で L チカ

最近、多くの人々から人気を集めているのが、ARM Cortex-M3を搭載したコストパフォーマンスに優れたボード、STM32F103C8です。Arduino IDEでも利用可能ということから、私も早速、試してみました。

www.aliexpress.com

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

を表しているようです。

 

STM32F103C8 - Mainstream Performance line, ARM Cortex-M3 MCU with 64 Kbytes Flash, 72 MHz CPU, motor control, USB and CAN - STMicroelectronics

 


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 として多数のバイナリが登録されています。

github.com

 


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 の設定

 

設定方法については下記のウェブに詳しく書かれています。

github.com

 

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が点滅しました。 

以上です。

※記事の追加情報、修正は適宜行うこととします。