ESP32 分区表详解:SPI Flash 配置、初始化与挂载教程
分区表是一个存储在 Flash 固定位置(默认 0x8000)的二进制数据结构,记录了各分区的起始地址、大小、类型、子类型等信息。ESP32-S3 启动时,Bootloader 会先读取分区表,再根据表中信息加载对应分区的程序(如 app 分区)或访问数据(如 NVS 分区)。本文围绕 ESP32-S3 展开,讲解其 SPI Flash 分区表设置、与 Flash 的连接,还介绍分区表配置、各分区
“ 本文围绕 ESP32-S3 展开,讲解其 SPI Flash 分区表设置、与 Flash 的连接,还介绍分区表配置、各分区初始化挂载。”
目录
1.ESP32-S3 的 分区表(Partition Table)
4.ESP32-S3 兼容主流厂商的 SPI Flash,以下为典型型号:
01 简介
1.ESP32-S3 的 分区表(Partition Table)
是一种用于划分 SPI Flash 存储空间的配置机制。它的作用类似于电脑硬盘的分区,把 Flash 划分为多个区域,每个区域用于存储不同类型的数据或程序,比如:
- 应用程序(如 factory、ota_0、ota_1);
- 系统数据(如 NVS、PHY 初始化数据);
- 文件系统(如 SPIFFS、FATFS)。
2. ESP32-S3 与 SPI Flash 的连接方式
ESP32-S3 通过SPI/QSPI/OPI 接口与外部 SPI Flash 通信,典型连接方案如下:
| SPI Flash 信号 | ESP32-S3 管脚名称 | 管脚编号(QFN56) | 备注 |
| SCK / CLK | SPICLK | 33 | 时钟线 |
| MOSI / SI | SPID | 35 | 数据输入 |
| MISO / SO | SPIQ | 34 | 数据输出 |
| CS# | SPICS0 | 32 | 片选 |
| WP# | SPIWP | 31 | 写保护 |
| HOLD# / IO3 | SPIHD | 30 | 暂停/IO3 |
SPI Flash 为外部独立芯片,需通过 PCB 与 ESP32-S3 连接。ESP32-S3 芯片本身不集成 Flash,因此所有程序和数据均存储于外接的 SPI Flash 中。部分模组(如ESP32-S3-WROOM-1)虽将 Flash 与 SoC 集成在同一块 PCB 上,但本质上仍为外部组件。

3.通信协议与模式
- 基础 SPI 模式:使用 4 线(CLK、CS、MOSI、MISO),支持标准 SPI 协议;
- QSPI 模式:通过 4 线同时传输地址和数据,带宽提升至 4 倍,需 Flash 芯片支持(如
qio或qout模式); - OPI 模式(Octal SPI):8 线并行传输,适用于高性能需求,但需专用 Flash 型号。
4.ESP32-S3 兼容主流厂商的 SPI Flash,以下为典型型号:
1. 华邦电子(Winbond)
- W25Q64JV:8MB,支持 QSPI,电压 3.3V,封装 SOIC-8;
- W25Q128JV:16MB,最高时钟频率 133MHz,适用于大容量存储需求。
2.兆易创新(GigaDevice)
- GD25Q32C:4MB,低功耗设计(<1mW),支持 XIP(片上执行);
- GD25Q128C:16MB,工作电压 1.7V~3.6V,兼容宽电压系统。
3.美光(Micron)
- MT25QL128:16MB,采用 Octal SPI 接口,适合高速数据吞吐场景。
02 如何设置分区表
分区表是一个存储在 Flash 固定位置(默认 0x8000)的二进制数据结构,记录了各分区的起始地址、大小、类型、子类型等信息。ESP32-S3 启动时,Bootloader 会先读取分区表,再根据表中信息加载对应分区的程序(如 app 分区)或访问数据(如 NVS 分区)。
更多推荐




所有评论(0)