STM32F103を使ってみる

他のマイコンとの比較


STM32F103とArduino-IDEで開発できる他のマイコンとの比較をしてみました。

FLASHサイズ

STM32F103C8 ATMEGA328 ATEMGA2560 ESP8266 ESP32
128K 32K(※1) 256K(※1) 2M/4M(※2) 4M(※3)

※1
https://www.arduino.cc/en/Tutorial/Memory

※2
http://mag.switch-science.com/2017/09/26/esp-wroom-02-flash-rom/

※3
https://ja.wikipedia.org/wiki/ESP32


SRAMサイズ

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
20K(※1) 2K(※1) 8K(※1) 80K(※1) 288K(※1)

※1
Arduino-IDE 1.8.5での実測値


最大Sketchサイズ

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
128K(※1) 31K(※1) 248K(※1) 999K(※1)(※2) 1280K(※1)

※1
Arduino-IDE 1.8.5での実測値

※2
1M(NO SPIFFS)の場合


最大動作周波数

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
72MHz 20MHz(※1) 20MHz(※1) 160MHz 240MHz

※1
Arduinoの動作周波数は8MHz/16MHz


ベンチマーク


STM32F103C8
@72MHz(※)
ATMEGA328
@16MHz(※)
ATEMGA2560
@16MHz(※)
ESP-WROOM-02
@160MHz(※)
ESP32
@240MHz(※)
float[ms] 693 3514 3514 431 95
int32[ms] 22 1533 1533 55
3


こちらの スケッチを使用した実測値


Lチカのスケッチをコンパイルした時のコンパイル所要時間

#define LED 13

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
10秒(※1) 8秒(※1) 8秒(※1) 37秒(※1)(※2) 135秒(※1)


※1
Arduino-IDE 1.8.5での実測値

※2
1M(NO SPIFFS)の場合


EEPROMサイズ

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
1K(※1) 1K(※2) 4K(※2) 4K(※3) 4K(※4)

※1
実測値

※2
https://www.arduino.cc/en/Tutorial/Memory

※3
https://github.com/esp8266/Arduino/issues/2632

※4
https://www.mgo-tec.com/blog-entry-partition-table-spiffs-sizeup-esp-wroom-32.html


SPIFFS機能

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
無し 無し 無し 2880K(※1) 1468K(※2)

※1
4MモジュールでSPIFFSに3Mを指定した場合の実測値(2,949,250Byte)


※2
https://www.mgo-tec.com/blog-entry-partition-table-spiffs-sizeup-esp-wroom-32.html


RTC User Memory

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
無し 無し 無し 512Byte(※1) 調査中

※1
https://github.com/esp8266/Arduino/issues/2875


UARTポート

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
3系統(※1) 1系統 4系統 2系統(※2) 3系統(※3)

※1
https://ht-deko.com/arduino/stm32f103c8t6.html

※2
UART1は送信のみ可能
http://esp8266.github.io/Arduino/versions/2.0.0/doc/reference.html

※3
https://qiita.com/T-YOSH/items/0ce41136c535c723affb


SPIポート

STM32F103C8 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
2系統(※1) 1系統 1系統 1系統 2系統(※2)

※1
https://ht-deko.com/arduino/stm32f103c8t6.html

※2
https://trac.switch-science.com/wiki/esp32_tips



I2Cポート

STM32F103 ATMEGA328 ATEMGA2560 ESP-WROOM-02 ESP32
2系統(※1) 1系統 1系統 1系統 2系統(※2)

※1
https://ht-deko.com/arduino/stm32f103c8t6.html

※2
https://trac.switch-science.com/wiki/esp32_tips