news 2026/9/13 17:07:15

ESP32-S2-Saola-1 开发板完全指南:硬件规格、引脚映射与 Arduino 环境配置详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP32-S2-Saola-1 开发板完全指南:硬件规格、引脚映射与 Arduino 环境配置详解

ESP32-S2-Saola-1 开发板完全指南:硬件规格、引脚映射与 Arduino 环境配置详解

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

ESP32-S2-Saola-1 是乐鑫官方推出的 ESP32-S2 开发板,基于 ESP32-S2-WROVER 模组,集成了 4 MB 闪存与 2 MB PSRAM,并原生支持 USB OTG。本篇技术指南以仓库 docs/en/boards/ESP32-S2-Saola-1.rst 为核心,结合 Arduino-ESP32 core 的板级定义源码与构建配置,完整讲解该板卡的硬件规格、双排针引脚定义、启动(strapping)引脚、受限 GPIO,以及在 Arduino IDE 中使用该板卡时对应的引脚常量、菜单选项与分区方案。阅读本文后,你将能准确接线、避开启动陷阱与受限引脚,并正确配置编译上传参数。

板卡概述:基于 ESP32-S2-WROVER 模组的官方开发板

ESP32-S2-Saola-1 属于乐鑫官方开发板家族,核心是 ESP32-S2 SoC,由 ESP32-S2-WROVER 模组承载。在 Arduino-ESP32 生态中,它对应 boards.txt 中esp32s2(ESP32S2 Dev Module)这一板型条目(boards.txt),板卡型号被统一收录于 docs/en/boards/boards.rst 的板卡索引中。

从构建配置看,该板型默认参数为:

配置项默认值说明
build.mcu/build.targetesp32s2目标芯片为 ESP32-S2(Xtensa 单核)
build.f_cpu240000000L默认 CPU 主频 240 MHz
build.flash_size4MB模组集成 4 MB SPI 闪存
build.flash_freq80m闪存时钟 80 MHz
build.flash_modedio闪存 DIO 模式
build.bootqio启动模式 QIO
upload.maximum_size1310720默认分区下 APP 最大约 1.25 MB
upload.maximum_data_size327680可用数据内存上限约 320 KB
USB VID / PID0x303a/0x0002ESP32-S2 原生 USB 标识

这些默认值可在 Arduino IDE 的"开发板菜单"中进一步调整,详见后文"Arduino 环境下的板级配置"一节。

硬件规格一览

ESP32-S2-Saola-1 的主要硬件能力如下(取自 ESP32-S2-Saola-1.rst 的 Specifications 章节):

  • 无线:Wi-Fi 802.11b/g/n(802.11n 最高 150 Mbps)
  • 处理器:ESP32-S2 系列 SoC,Xtensa® 单核
  • 存储:集成 4 MB SPI 闪存、2 MB PSRAM
  • 外设资源
    • 43 个可编程 GPIO
    • 2 个 13 位 SAR ADC,最高 20 通道
    • 2 个 8 位 DAC
    • 14 个触摸感应 IO
    • 4 个 SPI、1 个 I2S、2 个 I2C、2 个 UART
    • RMT(TX/RX)
    • LED PWM 控制器,最高 8 通道
    • 1 个全速 USB OTG
    • 1 个温度传感器
    • 1 个 DVP 8/16 位摄像头接口(复用 I2S 硬件资源)
    • 1 个 LCD 接口(8 位串行 RGB/8080/6800,复用 SPI2 硬件资源)
    • 1 个 LCD 接口(8/16/24 位并行,复用 I2S 硬件资源)
    • 1 个 TWAI® 控制器(兼容 ISO 11898-1)
  • 天线:PCB 天线或外部天线连接器

需要注意,ESP32-S2 系列没有内置蓝牙(区别于 ESP32/ESP32-S3),其网络能力集中在 Wi-Fi 与 USB OTG 上;摄像头与 LCD 并行接口属于复用型外设,具体配置见官方 ESP-IDF 驱动文档。

排针引脚定义(J2 / J3)

ESP32-S2-Saola-1 通过两块排针 J2、J3 引出引脚。并非所有芯片引脚都被引出到排针上,使用前务必核对下表。

表中 Type 含义:P 电源、I 输入、O 输出、T 高阻态。

J2 排针(21 引脚)

No.名称类型功能
13V3P3.3 V 电源
2IO0I/OGPIO0、Boot
3IO1I/OGPIO1、ADC1_CH0、TOUCH_CH1
4IO2I/OGPIO2、ADC1_CH1、TOUCH_CH2
5IO3I/OGPIO3、ADC1_CH2、TOUCH_CH3
6IO4I/OGPIO4、ADC1_CH3、TOUCH_CH4
7IO5I/OGPIO5、ADC1_CH4、TOUCH_CH5
8IO6I/OGPIO6、ADC1_CH5、TOUCH_CH6
9IO7I/OGPIO7、ADC1_CH6、TOUCH_CH7
10IO8I/OGPIO8、ADC1_CH7、TOUCH_CH8
11IO9I/OGPIO9、ADC1_CH8、TOUCH_CH9
12IO10I/OGPIO10、ADC1_CH9、TOUCH_CH10
13IO11I/OGPIO11、ADC2_CH0、TOUCH_CH11
14IO12I/OGPIO12、ADC2_CH1、TOUCH_CH12
15IO13I/OGPIO13、ADC2_CH2、TOUCH_CH13
16IO14I/OGPIO14、ADC2_CH3、TOUCH_CH14
17IO15I/OGPIO15、ADC2_CH4、XTAL_32K_P
18IO16I/OGPIO16、ADC2_CH5、XTAL_32K_N
19IO17I/OGPIO17、ADC2_CH6、DAC_1
205V0P5 V 电源
21GNDG

J3 排针(20 引脚)

No.名称类型功能
1GNDG
2RSTICHIP_PU、复位
3IO46IGPIO46
4IO45I/OGPIO45
5IO44I/OGPIO44、U0RXD
6IO43I/OGPIO43、U0TXD
7IO42I/OGPIO42、MTMS
8IO41I/OGPIO41、MTDI
9IO40I/OGPIO40、MTDO
10IO39I/OGPIO39、MTCK
11IO38I/OGPIO38
12IO37I/OGPIO37
13IO36I/OGPIO36
14IO35I/OGPIO35
16IO34I/OGPIO34
17IO33I/OGPIO33
17IO26I/OGPIO26
18IO21I/OGPIO21
19IO20I/OGPIO20、ADC2_CH3、USB_D+
20IO19I/OGPIO19、ADC2_CH3、USB_D-
21IO18I/OGPIO18、ADC2_CH3、DAC_2

注:J3 表格中序号 15 缺失、17 出现两次,为原文档 ESP32-S2-Saola-1.rst 自带的编号笔误,此处按原文逐行转录,实际引脚顺序以板卡丝印与原理图为准。

将排针定义与 Arduino 板级映射对照可见关键规律:IO19/IO20 承载原生 USB D-/D+,即使用板载 USB 口时这两个引脚被 USB 占用;IO43/IO44 为 UART0(TX/RX),默认串口打印与烧录均走该组引脚。

引脚布局图

ESP32-S2-Saola-1 的完整引脚布局(可点击放大查看排针与板载元件的对应关系)如下:

启动(Strapping)引脚:上电时序的关键约束

部分 GPIO 在上电/启动阶段承担特殊角色,其电平状态决定了芯片的启动模式、内部 LDO 电压与日志打印行为。改动这些引脚的电平时需格外谨慎:

GPIO默认功能拉高(Pull-up)拉低(Pull-down)
IO45下拉内部 LDO 电压(VDD_SDIO)1.8 V3.3 V
IO0上拉启动模式SPI BootDownload Boot
IO46下拉启动模式不关心Download Boot
IO46上拉启动期间日志打印开关与 SDIO Slave 时序U0TXD 有效U0TXD 静默

实操要点:

  • IO0 是进入下载模式的开关:复位瞬间若 IO0 被拉低(配合 RST 触发),芯片进入 Download Boot,可烧录固件;正常运行时保持其默认上拉即可。这与 boards.txt 中UploadMode的 UART0(默认)与 Internal USB(1200 bps touch 复位)两种上传模式共同构成完整的烧录路径。
  • IO45 决定 VDD_SDIO 电压(1.8 V 或 3.3 V),直接影响外部 SPI 器件电平,改动前务必确认外围电路兼容性。
  • IO46 同时参与启动模式判定与启动日志打印开关,且为仅输入引脚(见下文),一般不应作为普通输出使用。

受限 GPIO:不可随意使用与仅输入的引脚

与 PSRAM 共享、不可使用的引脚:

GPIO共享功能
IO26连接到 PSRAM

由于 ESP32-S2-WROVER 模组的 2 MB PSRAM 已占用 IO26,该引脚无法作为普通 GPIO 使用。这正是"集成 2 MB PSRAM"带来的硬件代价,选型时需计入可用引脚数。

仅输入(INPUT ONLY)引脚:

GPIO功能
IO46GPIO46

IO46 只能作为输入读取,不能配置为输出。从 pins_arduino.h 可见,Arduino 板级映射中也没有为 IO46 提供任何默认别名常量,进一步印证了其受限地位。

Arduino 环境下的板级映射与常用常量

仓库中的 variants/esp32s2/pins_arduino.h 定义了 ESP32-S2-Saola-1 等 ESP32-S2 板卡在 Arduino 中的默认引脚常量,与上文排针表一一对应:

常量引脚对应排针/功能
LED_BUILTIN/RGB_BUILTIN18(PIN_RGB_LED板载 RGB LED(RGB_BRIGHTNESS=64
TX/RX43 / 44UART0(J3: IO43/IO44)
SDA/SCL8 / 9默认 I2C(J2: IO8/IO9)
SS/MOSI/MISO/SCK34 / 35 / 37 / 36默认 SPI(J3: IO34/35/37/36)
A0~A191 ~ 20模拟输入通道(对应 ADC1/ADC2)
T1~T141 ~ 14触摸通道 TOUCH_CH1 ~ CH14
DAC1/DAC217 / 188 位 DAC 输出(J2: IO17、J3: IO18)

对应到代码中的用法示例:

// 板载 RGB LED 呼吸灯效果(Arduino-ESP32 新 API) #include <Arduino.h> void setup() { rgbLedWrite(RGB_BUILTIN, 255, 0, 0); // 红色 delay(500); rgbLedWrite(RGB_BUILTIN, 0, 255, 0); // 绿色 } void loop() {} // 触摸引脚读取(T1 = IO1 = TOUCH_CH1) void touchExample() { int t = touchRead(T1); Serial.printf("touch value: %d\n", t); }

在 Arduino IDE 中烧录到该板卡,应选择开发板ESP32S2 Dev Module(对应 boards.txt 中esp32s2条目),其build.variant=esp32s2正是加载上述 pins_arduino.h 的开关。

Arduino 板级菜单:CPU 频率、PSRAM、USB 与分区方案

针对esp32s2板型,boards.txt 提供了完整的 IDE 菜单选项,可按需调整默认配置:

USB / 上传模式

  • CDC On BootCDCOnBoot):默认 Disabled;启用后开机即枚举为 USB 串口(CDC),可替代 UART0 作为Serial输出。
  • MSC On BootMSCOnBoot):默认 Disabled;启用后板载 USB 以 U 盘(Mass Storage)形式出现,配合FirmwareMSC可实现在线拖拽升级。
  • DFU On BootDFUOnBoot):默认 Disabled;启用后进入 USB DFU 模式。
  • Upload ModeUploadMode):默认UART0(走 IO43/IO44 串口 + IO0 下载模式);可选Internal USB,此时使用use_1200bps_touch=true,即通过 USB 的 1200 bps touch 复位信号自动进入烧录模式,无需手动拉低 IO0。

存储与外设

  • PSRAM:默认 Disabled;选 Enabled 时追加-DBOARD_HAS_PSRAM编译宏,从而启用ps_malloc()等 PSRAM 分配接口(模组本身已集成 2 MB PSRAM,只是默认不在 Arduino 运行时启用)。
  • Partition Scheme:提供大量分区方案,例如默认Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)No OTA (2MB APP/2MB SPIFFS)Huge APP (3MB No OTA/1MB SPIFFS)16M Flash (2MB APP/12.5MB FATFS)RainMakerZigbee ZCZR等。不同方案会联动调整upload.maximum_size(APP 可用体积),例如huge_app将上限提升到 3145728 字节(boards.txt)。
  • CPU Frequency:提供 240 MHz / 160 MHz / 80 MHz(WiFi)档位,对应build.f_cpu调整,低主频可降低功耗。

仓库中的验证与测试覆盖

在仓库的 CI 测试体系中,ESP32-S2 是持续验证的目标平台之一:

  • tests/validation/wifi/ci.yml 针对esp32s2同时覆盖PSRAM=enabledPSRAM=disabled两种组合(均搭配huge_app分区),验证 Wi-Fi 功能在 PSRAM 开关下的稳定性。
  • tests/validation/nvs/ci.yml 在esp32s2上以dio/qio两种 FlashMode 运行 NVS 读写测试。
  • tests/performance/ramspeed/ci.yml 与 tests/performance/psramspeed/ci.yml 将esp32s2列为内存性能基准测试平台。
  • tests/validation/democfg/README.md 明确说明自定义 FQBN 覆盖esp32s2 (PSRAM)场景。

这些测试配置从侧面印证了该板卡在 Arduino-ESP32 生态中的主流地位,也为开发者排查"是否板级配置导致的问题"提供了对照:若遇到与 PSRAM、FlashMode 相关的异常,可先按 CI 中的 FQBN 组合复现验证。

关键使用建议与排查清单

综合排针表、strapping 引脚与受限 GPIO,使用 ESP32-S2-Saola-1 时可遵循以下清单:

  1. 上电前检查 IO0 / IO45 / IO46 电平,避免意外进入下载模式或改动 LDO 电压域;
  2. 不要使用 IO26(PSRAM 占用),不要将 IO46 配置为输出
  3. 使用 USB 功能时避开 IO19/IO20(USB_D-/D+)作为普通 IO;
  4. 默认串口输出走 IO43(TX)/ IO44(RX),如需 USB 串口请在 IDE 中启用CDC On Boot
  5. 需要大内存缓冲时,在 IDE 菜单启用PSRAM并在代码中用ps_malloc()/heap_caps_malloc(..., MALLOC_CAP_SPIRAM)
  6. 大固件工程改用Huge APPNo OTA分区方案以扩大 APP 可用体积。

延伸阅读

  • 板卡文档原始出处:docs/en/boards/ESP32-S2-Saola-1.rst
  • 板卡索引:docs/en/boards/boards.rst
  • 板型构建配置(esp32s2条目):boards.txt
  • Arduino 引脚映射:variants/esp32s2/pins_arduino.h
  • 板卡示例:libraries/ESP32/examples/下的AnalogReadContinuousTouchWakeUpRMT等示例均兼容 ESP32-S2 平台

【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 17:01:05

ORB-SLAM三维点云转OctoMap八叉树地图:转换工具与参数解析

简介&#xff1a;面向室内导航与三维重建场景&#xff0c;基于ORB-SLAM生成三维密集点云&#xff0c;并利用OctoMap构建八叉树导航地图&#xff0c;项目配套完整C源码与文档说明&#xff0c;适合SLAM、机器人导航、计算机视觉方向的在校生、研究者或开发者学习与二次开发。压缩…

作者头像 李华
网站建设 2026/9/13 17:00:49

小白程序员必看:吴恩达详解AI工程技能图谱,抓住未来机遇!

本文由吴恩达&#xff08;Andrew Ng&#xff09;撰写&#xff0c;介绍AI工程技能图谱&#xff0c;揭示当前及未来最重要的四类AI工程技能&#xff1a;构建与部署AI应用、软件工程基础、使用编程智能体、塑造产品与开发方向。文章强调持续学习是关键&#xff0c;并指出掌握这些技…

作者头像 李华
网站建设 2026/9/13 16:59:24

SVPWM过调制:提升母线电压利用率的关键技术

FOC电机控制做到一定程度&#xff0c;大家都会碰到一个绕不开的问题&#xff1a;母线电压利用率。明明电池电压或者母线电压摆在那里&#xff0c;电机高速的时候就是感觉“使不上劲”&#xff0c;转速上不去&#xff0c;力矩又掉得厉害。有人第一反应是换更高电压的平台&#x…

作者头像 李华
网站建设 2026/9/13 16:58:32

Python毫秒级时间戳获取全攻略:time模块精度与性能深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 16:56:55

CAN自定义协议设计:从物理层约束到应用层状态机

1. 为什么“CAN自定义协议”不是选修课&#xff0c;而是嵌入式系统工程师的必修硬技能在汽车电子、工业控制、智能农机、新能源电池管理系统&#xff08;BMS&#xff09;这些领域里&#xff0c;CAN总线早已不是“能通就行”的玩具级通信手段。我做过7个量产级车载ECU项目&#…

作者头像 李华