2022年1月30日日曜日

ESP32のICのバージョンを確認する


背景

ESP32はWiFiやBluetoothが使える組み込む向けのIC(集積回路)です。
ICのバージョンが知りたかったので確認方法を調べ、esp-idfのサンプルコードで下記のような情報を表示可能と分かりました。
This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 0, 4MB external flash
Minimum free heap size: 284432 bytes

期待していたほど詳しい情報は取得できませんでしたが、備忘録を兼ねて記事として共有します。

使ったもの

  • ESP32にプログラムを書き込む環境
    Arduino IDE + esp32-arduinoもしくはPlatformIOで書き込めます。
  • esp-idfのサンプルコード
    esp-idfをお使いの方は、上記リンクのコードを書き込んでログを見ればバージョンが分かります。
  • 調査対象のESP32装置

esp-idf向けのコードをesp32-arduino向けに書き換え

ICの情報を確認できるesp-idfのサンプルコードはArduinoに必要なsetupやloopの関数がありません。
そのままではArduino向けにビルドできないため、app_mainをsetupに書き換え、空のloop関数を定義してください。
また、先頭に「#include <Arduino.h>」を追加してください。

上記の変更を行えば、Arduino環境でビルドして書き込めます。
[platformioのプロジェクト]/src/main.cpp
#include <Arduino.h>
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void setup() {
printf("Hello world!\n");

/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
CONFIG_IDF_TARGET,
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

printf("silicon revision %d, ", chip_info.revision);

printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

for (int i = 10; i >= 0; i--) {
printf("Restarting in %d seconds...\n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
printf("Restarting now.\n");
fflush(stdout);
esp_restart();
}

void loop() {}

ESP32に書き込んでバージョンなどの情報を確認

手元にあるESP32にプログラムを書き込んで情報を確認してみました。

WROOM-32(末尾のアルファベット無し): Rev0


This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 0, 4MB external flash
Minimum free heap size: 284432 bytes
silicon revisionは0でした。

WROOM-32U: Rev1


This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 4MB external flash
Minimum free heap size: 284908 bytes
silicon revisionは1でした。

M5Stack Basic: Rev1


2018.3版です。


This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 4MB external flash
Minimum free heap size: 284112 bytes
silicon versionは1でした。

M5Stack Fire: Rev1



2018.2A版です。


This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 16MB external flash
Minimum free heap size: 284476 bytes
silicon versionは1でした。
これは16MBのflashを積んでいるのが分かります。

M5Stack Core2: Rev3



2020.07.07版です。


This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 3, 16MB external flash
Minimum free heap size: 284388 bytes
silicon versionは3でした。

おわり

手持ちのESP32装置では、ICのバージョン(silicon revision)として0,1,3を確認できました。

ESP32のWikipediaではICの種類として「D0WDQ6」や「U4WDH」があるので詳しい情報を見れるかと思ったのですが、バージョン情報が整数だったので期待してたほどの情報を確認はできませんでした。

他の確認方法があれば、コメントなどで教えていただけると嬉しいです。

参考

Find out the Revision of the ESP32 Chip
esp-idf/examples/get-started/hello_world/main/hello_world_main.c

0 件のコメント :