JH1LHVの雑記帳

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

スポンサーリンク

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

最近人気の ARM Coretex-M3 を搭載した安価なボードの STM32F103C8 ですが。

Arduino IDE でも動かせるようなので、さっそく試してみました。

 

www.aliexpress.com

 

ARM の CPU が載って @200 という激安なので、5個又は10個のまとめ買いもありだと思います。 

ただ、STM32F103C8 には幾つかの種類(ピルボード)があるので注文する時に注意が必要です。

 

f:id:JH1LHV:20170129115328j:plain

AliExpress で ”STM32” で検索すると Blue Pill (写真、一番上)が数多くヒットしますが、

このボードには USB 周りに不具合があるようでチップ抵抗の交換が必要なようです。

 

ということもあり、わたしは最新バージョンの「Black Pill」というボードを選択しています。

 

f:id:JH1LHV:20170129120115j:plain

Black Pill と Blue Pill は、PCB の色、ジャンパピン、リセット SW の位置で見分けられます。
(写真は Black Pill)

 

この後の、環境設定や動作確認については、この Black Pill を使って話しを進めていきます。

Black Pill - STM32duino wiki

 

@200 と激安にもかかわらず、製品にはピンヘッダも付属してきます。

f:id:JH1LHV:20170130200231j:plain

ブレッドボードなどの環境に合わせてロングピンソケットを使うのもありですが、

わたしは付属のピンヘッダだけで間に合わせました。

(ただしこのピンヘッダ。ハンダの乗りがすこぶる悪くて・・・ホント参りました。。。)

 

また、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

 

f:id:JH1LHV:20170130001328j:plain

 

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


f:id:JH1LHV:20170130204403j:plain

上記の URL から「generic_boot20_pb12.bin」をダウンロードします。
(2019/08/01 現在、このページは消えてます。) 

 

また、下の GitHub にも STM32duino-bootloader として多数のバイナリが登録されています。

github.com

 

f:id:JH1LHV:20170130205918j:plain

http://STM32duino-bootloader

 

今回の Black Pill のユーザ LED は PB12 なので、

書き込むブートローダは「generic_boot20_pb12.bin」を選択します。

 

f:id:JH1LHV:20170130210730j:plain

http://wiki.stm32duino.com/images/5/52/Black_Pill_Schematic.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

 

ブートローダを書き込むため、ジャンパを「シリアルブートローダを起動」に設定します。

 

f:id:JH1LHV:20170130214436j:plain

B0+ to center pin、B1- to center pin

 

3. Black Pill と USB シリアル変換モジュールを接続

 

Black Pill USB シリアル
RX PA9
TX PA10
GND G
3.3V V3

 

f:id:JH1LHV:20170130215606j:plain

ジャンパワイヤだけで直接接続です。

 

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

 

f:id:JH1LHV:20170130220538j:plain

 

en.flasher-stm32.zip を解凍して Demonstrator GUI をインストールします。

 

6. ブートローダを書き込みます。 

f:id:JH1LHV:20170130221927j:plain

Download from file に「generic_boot20_pb12.bin」を指定します。

 

7.  BOOT ジャンパの設定を「通常、FLASH BOOT」にします。

 

f:id:JH1LHV:20170130214502j:plain

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 を選択してインストールします。

f:id:JH1LHV:20170130223505j:plain

 

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 のため)

 

f:id:JH1LHV:20170127214240j:plain

PB1 を PB12 に変更します。 

 

 f:id:JH1LHV:20170127213704j:plain

ボードの設定です。

 

f:id:JH1LHV:20170127211043j:plain

書き込み実行時のステータス。 

 

f:id:JH1LHV:20170127210846j:plain

青色のLEDが点滅しました。 

 

以上です。

 

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