VS Code+platformio配置ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)工程

发布时间 2023-04-26 23:00:57作者: Macrored

一、现有问题

platformio现有的板子库里面没有ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)的开发板模型,直接强行套用,要么就是解锁不了8MB PSRAM,要么就下载后运行不起来。但是Arduino可以正常解锁。

二、简单解决办法

先选用esp32-s3-devkitc-1作为开发板模型,在它的基础上做额外的修改:

具体修改配置已经整理到platformio.ini,如下:

[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
; 指定为16MB的FLASH分区表
board_build.arduino.partitions = default_16MB.csv
; 指定FLASH和PSRAM的运行模式
board_build.arduino.memory_type = qio_opi
; 预定义宏,启用PSRAM
build_flags = -DBOARD_HAS_PSRAM
; 指定FLASH容量为16MB
board_upload.flash_size = 16MB

编译、下载和运行即可。

三、扩展内容:解决问题的过程(问题解决方法看第二点即可)

3.1 选开发板模型

没找到ESP32-S3(8MB PSRAM + 16MB FLASH)的开发板模型,就随便ESP32-S3的其他模型,有几个能正常运行,但是没有解锁PSRAM;

好不容易发现几个标了2MB PSRAM字样的开发板模型,但是运行不起来;网上搜才知道2MB PSRAM运行模式是Quad SPI,而8MB PSRAM的运行模式是Octal SPI,两个完全不一样,肯定会运行失败;

3.2 查找配置

官方的platformio.ini指导说明里面没有说明怎么选PSRAM运行模式,只能看看那些标了2MB PSRAM字样的开发板模型是怎么做;全局搜索跟开发板名称相同的文件,看是不是有什么配置文件来控制这些参数:

打开所在的文件夹,发现全是json文件,大概率就是所有开发板模型的配置文件了。

3.3 修改配置

依次查找带PSRAM的配置json,发现adafruit_feather_esp32s3.json是2MB PSRAM的开发板模型,额外不同的是它多定义了"BOARD_HAS_PSRAM"的宏,直接复制到自己的工程修改platformio.ini,发现依旧不能解锁PSRAM;

接着继续看其他的json配置,发现adafruit_feather_esp32s3_nopsram.json"memory_type": "qio_qspi"选项似乎跟PSRAM有关;

打开Arduino,工具菜单栏里面PSRAM有三项配置,分别是:

尝试修改自己工程对应的json文件,"memory_type": "qio_qspi"改成"memory_type": "qio_opi",8MB PSRAM解锁成功!

最后发现platformio.ini可以直接配置json文件中的某些字段,经过调整,ESP32-S3(8MB PSRAM + 16MB FLASH)只需要选择board = esp32-s3-devkitc-1板子,然后修改board_build.arduino.memory_type = qio_opi,再把FLASH容量改好,基本上就没问题了,如下(和标题二提供的内容一样):

[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
; 指定为16MB的FLASH分区表
board_build.arduino.partitions = default_16MB.csv
; 指定FLASH和PSRAM的运行模式
board_build.arduino.memory_type = qio_opi
; 预定义宏,启用PSRAM
build_flags = -DBOARD_HAS_PSRAM
; 指定FLASH容量为16MB
board_upload.flash_size = 16MB

参考文章

[1] ESP32-S3-WROOM-1-N16R8 配置PSRAM