VS Code+platformio配置ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)工程
一、背景
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
[2] 【ESP32 S3开发】在Arduino IDE中使用PSRAM