LoginSignup
3
2

More than 5 years have passed since last update.

platformioでSTM32

Last updated at Posted at 2017-01-31

F103編

またまた調子に乗ってSTM32も試してみました。

環境は雪豹のMacBoot Air Originalです。

bash-3.2$ platformio init --board genericSTM32F103C8

Arduno風のLチカコードをsrc以下に作ります。

STM32の純正書き込みツールはST-LINK(JTAG/SWD)ですが、シリアルでのISPもサポートされているようです。

ターゲットはAitendoのEVB-STM32F103C8T6でboot0を1、boot1を0にして、TXD/RXD/GNDをFTにつないで、電源供給のためにUSBもつないでおきます。このターゲットのTXD/RXDのシルク逆です。

IMGP0371.JPG

bash-3.2$ platformio run --target upload
[Tue Jan 31 09:37:33 2017] Processing genericSTM32F103C8 (platform: ststm32, boa
rd: genericSTM32F103C8, framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Converting main.ino
Collected 24 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/genericSTM32F103C8/src/main.ino.o
Looking for upload disk...
Auto-detected: /dev/cu.usbserial-DA0059MQ
Uploading .pioenvs/genericSTM32F103C8/firmware.bin
stm32flash Arduino_STM32_0.9

http://github.com/rogerclarkmelbourne/arduino_stm32

Using Parser : Raw BINARY
Interface serial_posix: 230400 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 address 0x0800200c (100.00%) Done.

Starting execution at address 0x08000000... done.

========================= [SUCCESS] Took 4.81 seconds =========================

MSP430ではuploaderが使えませんでしたが、STM32ではちゃんと使えるようです。

またSTM32はたくさんframeworkがあっていろいろ遊べそうです。

platformioでuploaderが勝手にFTなシリアルポートを判別して実行するの最初はちょっと抵抗がありましたが、便利です。

ほんとplatformioってすばらしいです。

F303編

秋月電子で売っているチップのSTM32F303K8T6も試してみました。

写真(2017-03-15 11.07).jpg

nucleo_f303k8が同じチップを使っているので、このボードでinitしてmbedなビルドは通りました。genericSTM32F103C8はArduinoベースでしたが、nucleo_f303k8はmbedベースになるようです。

回路を入れてBOOT0/NRSTをstm32flashから自動的に制御することもできるようですが、面倒だったのでジャンパーにしました。

uploadはSTLinkベースなので素の303では使えないので、直接stm32flashを使いました。

bash-3.2$ platformio run
[Tue Mar 14 10:35:17 2017] Processing nucleo_f303k8 (platform: ststm32, board: n
ucleo_f303k8, framework: mbed)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 8 compatible libraries
Looking for dependencies...
Project does not have dependencies
Calculating size .pioenvs/nucleo_f303k8/firmware.elf
text       data     bss     dec     hex filename
11588       128    1224   12940    328c .pioenvs/nucleo_f303k8/firmware.elf
========================= [SUCCESS] Took 4.25 seconds =========================
bash-3.2$ ~/.platformio/packages/tool-stm32duino/stm32flash/stm32flash -w .pioen
vs/nucleo_f303k8/firmware.bin -b 115200 /dev/cu.usbserial-DA0059MQ
stm32flash Arduino_STM32_0.9

http://github.com/rogerclarkmelbourne/arduino_stm32

Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0438 (F303x4/334/328)
- RAM        : 12KiB  (6144b reserved by bootloader)
- Flash      : 256KiB (sector size: 2x2048)
- Option RAM : 16b
- System RAM : 8KiB
Write to memory
Erasing memory
Wrote address 0x0800301c (100.00%) Done.

uploaderを変更する事も出来るような気がするのですが、方法が分かりません。

素直にNucleo Boardを買えば、STLinkV2の101とターゲットの303が手に入りますが、ガジェットは1K以内で購入できるものとしているので、素の303を使ってみました。

安くSTlink v2が手に入ったのでstlinkをcmakeを使わず無理矢理コンパイルして焼いてみました。st-flashはplatformioにも入っているのですが、エラーで実行できなかったので、ビルドしました。

ピン SWD
1 3.3V
23 SWDIO
24 SWCLK
32 GND
bash-3.2$ ./st-flash write ../../../../ARM/pio/stm32f303/.pioenvs/nucleo_f303k8/
firmware.bin   0x8000000
st-flash 1.0.0
2018-03-01T12:40:58 INFO common.c: Loading device parameters....
2018-03-01T12:40:58 INFO common.c: Device connected is: F334 device, id 0x100164
38
2018-03-01T12:40:58 INFO common.c: SRAM size: 0x3000 bytes (12 KiB), Flash: 0x10
000 bytes (64 KiB) in pages of 2048 bytes
2018-03-01T12:40:58 INFO common.c: Attempting to write 12356 (0x3044) bytes to s
tm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003000 erased
2018-03-01T12:40:59 INFO common.c: Finished erasing 7 pages of 2048 (0x800) byte
s
2018-03-01T12:40:59 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core 
id
2018-03-01T12:40:59 INFO flash_loader.c: Successfully loaded flash loader in sra
m
  7/7 pages written
2018-03-01T12:40:59 INFO common.c: Starting verification of write complete
2018-03-01T12:41:00 INFO common.c: Flash written and verified! jolly good!
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2