1. はじめに
前回の記事にて、VSCode上で動くPlatformIOの個人的ハマりポイントを書いたが、ハード仕様&PlatformIO設定でもハマったので備忘録と同じ境遇の人への情報共有として記事を残すことにする。
秋月販売のESP32-S3-DevKitC-1-N8R8を使用している。
PlatformIOの基板選択画面では、Espressif社製のESP32のボードは複数あるものの、ESP32-S3-WROOM-1-N8R8を載せた開発ボードはない。
そのため、そのままの設定ではPSRAMに制約がある状態で使うことになる。
2. 仕様環境
PlatformIO IDE 3.3.4 (2025-01-11)
ESP32-S3-DevKitC-1-N8R8 v1.1
3. PlatformIOの初期設定
プロジェクト作成時の基板選択は以下にしている。

基板選択で「Freenove ESP32-S3 WROOM N8R8」というのものもあるが、CAMボードであるためPin周りの制約がある可能性を鑑みて避けている。
4. iniファイルの設定
初期状態でFLASHの8MBは使えるが、PSRAMは使えない。以下を追加で記入する。
board_build.arduino.memory_type = qio_opi
board_upload.flash_size = 8MB
board_build.partitions = default_8MB.csv
build_flags = -DBOARD_HAS_PSRAM
以降は各設定の説明であるため、読まずとも問題はない。
■ board_build.arduino.memory_type = qio_opi
FLASHの通信をqio(Quad SPIの意味)に設定
PSRAMの通信をopi(Octal SPIの意味)に設定
参考:SPI Flash Modes
余談だが通常のSPI通信はCS、CLK、MOSI、MISOの計4ラインだが
QuadSPIはCS、CLK、IO0~IO3の計6ライン
OctalSPIはCS、CLK、IO0~IO7の計10ライン
になるため、単純に1クロックで送受信できるデータ量が4倍や8倍になる。
■ board_upload.flash_size = 8MB
FLASHの総容量を8MBに設定
C:\Users\UserName.platformio\platforms\espressif32\boards\esp32-s3-devkitc-1.jsonにてFLASHの容量は定義されている為不要かもしれないが、念のため宣言する。
■ board_build.partitions = default_8MB.csv
PSRAMのパーティションをdefault_8MB.csvのパーティションテーブルで設定
余談だが、C:\Users\UserName.platformio\packages\framework-arduinoespressif32\tools\partitionsに各容量でのパーティション設定をするCSVファイルが置かれている。容量違いもあるがdefault_ffat_8MB.csvなどパーティションの内容が違うものもあるので環境や用途によって切り替えるようである。
■ build_flags = -DBOARD_HAS_PSRAM
ソース上のPSRAM関係の機能を有効にする設定
C言語でのイメージとしては#define BOARD_HAS_PSRAMという宣言をしているような状態になりPSRAM関連のソースが生きた状態になるようである。現状ではどこのファイルのどのソースに影響があるのかはわからない。具体例を知っている方がいればご教授願いたい。
5. 最後に
ESP32専用の開発環境がないため仕方ないことではあるが、初期設定で機能が封印状態になっているのは不便であると感じた。ArduinoIDEではGUIでこういった設定ができるようなので、開発自体が初めての者はそちらに行ったほうが良いと考える。
筆者は、わざわざPSRAMを使えるようにしたものの特に目的もないためini設定を初期状態にしている。いつかPSRAMを使う日が来ることを祈って筆を置くことにする。