
5 / 7 / 8 / 10.1 寸 DSI 屏幕OV5647 摄像头| 模块 | 器件 / 功能 | 接口 | 地址 / 参数 | GPIO / 信号 |
|---|---|---|---|---|
| LCD | MIPI-DSI 显示屏 | MIPI-DSI | 2-lane;支持 5 / 7 / 8 / 10.1 英寸面板配置 | LCD 复位未连接;背光通过共享 I2C 控制 |
| 触摸 | GT911 电容触摸 | I2C | 7-bit 地址 0x5D / 0x14 | SDA=GPIO7,SCL=GPIO8;RST / INT 未连接 |
| LCD 背光 | 背光控制器 | I2C | 7-bit 地址 0x45;亮度寄存器 0x96 | SDA=GPIO7,SCL=GPIO8 |
| 摄像头 | MIPI-CSI 摄像头接口 | MIPI-CSI + SCCB | 2-lane;摄像头型号和地址以对应模块资料为准 | SCCB 复用 GPIO7 / GPIO8;XCLK / RESET 未连接 |
| 音频 | ES8311 Codec | I2C + I2S | 7-bit I2C 地址 0x18;8-bit 写地址 0x30;单路模拟麦克风 | I2C:SDA=GPIO7,SCL=GPIO8;MCLK=GPIO13,SCLK=GPIO12,WS=GPIO10,DOUT=GPIO9,DIN=GPIO11 |
| 功放控制 | 板载扬声器功放使能 | GPIO | 高电平打开 | GPIO53 |
| TF 卡 | SDMMC 4-bit | SDMMC | 4-bit 模式 | CLK=GPIO43,CMD=GPIO44,D0=GPIO39,D1=GPIO40,D2=GPIO41,D3=GPIO42;电源控制=GPIO45 |
| Ethernet | IP101GRI PHY | RMII + SMI | PHY 地址 1;50 MHz REF_CLK 外部输入 | CRS_DV=GPIO28,RXD0=GPIO29,RXD1=GPIO30,MDC=GPIO31,TXD0=GPIO34,TXD1=GPIO35,TX_EN=GPIO49,REF_CLK=GPIO50,RESET=GPIO51,MDIO=GPIO52 |
| ESP32-C5 | ESP-Hosted 通信 | SDIO | Wi-Fi 6 / Bluetooth 5(LE)协处理器 | CLK=GPIO18,CMD=GPIO19,D0=GPIO14,D1=GPIO15,D2=GPIO16,D3=GPIO17,RESET=GPIO54 |
使用 ESP32-P4-NANO-WIFI6-DB 的 GPIO 接口时,需要注意引脚图中标注的复用功能。部分 GPIO 已连接板载外设,作为普通 GPIO 使用前应确认对应外设未启用。

| 类型 | 信号 |
|---|---|
| 电源 | 5V / 3V3 / GND |
| I2C | SDA(GPIO7) / SCL(GPIO8) |
| UART | TX(GPIO37) / RX(GPIO38) |
| GPIO | GPIO0 / GPIO1 / GPIO2 / GPIO3 / GPIO4 / GPIO5 / GPIO6 / GPIO20 / GPIO21 / GPIO22 / GPIO23 / GPIO24 / GPIO25 / GPIO26 / GPIO27 / GPIO32 / GPIO33 / GPIO36 / GPIO45 / GPIO46 / GPIO47 / GPIO48 / GPIO53 / GPIO54 |
下表列出板上电路已占用的 GPIO 及已引出到扩展口的引脚。
| GPIO | 信号名 | 连接到 | 备注 |
|---|---|---|---|
| GPIO0 | GPIO0 | XTAL_32K_N / (预留焊盘 / 排针) | 若需要作为普通GPIO用,建议取下R32 禁用XTAL_32K 功能 |
| GPIO1 | GPIO1 | XTAL_32K_P / (预留焊盘 / 排针) | 若需要作为普通GPIO用,建议取下R36 禁用XTAL_32K 功能 |
| GPIO2 | GPIO2 | 预留焊盘 / 排针 | 扩展口GPIO2 |
| GPIO3 | GPIO3 | 预留焊盘 / 排针 | 扩展口GPIO3 |
| GPIO4 | GPIO4 | 预留焊盘 / 排针 | 扩展口GPIO4 |
| GPIO5 | GPIO5 | 预留焊盘 / 排针 | 扩展口GPIO5 |
| GPIO6 | GPIO | 扩展排针 / ESP32-C5-MINI-1U | C5 IO02 |
| GPIO7 | I2C SDA | ES8311、GT911、LCD 背光、摄像头 SCCB、扩展排针 | 共享 I2C SDA |
| GPIO8 | I2C SCL | ES8311、GT911、LCD 背光、摄像头 SCCB、扩展排针 | 共享 I2C SCL |
| GPIO9 | I2S DOUT | ES8311 DSDIN | 音频播放数据 |
| GPIO10 | I2S WS | ES8311 LRCK | 音频帧同步 |
| GPIO11 | I2S DIN | ES8311 ASDOUT | 音频采集数据 |
| GPIO12 | I2S SCLK | ES8311 SCLK | 音频位时钟 |
| GPIO13 | I2S MCLK | ES8311 MCLK | 音频主时钟 |
| GPIO14 | GPIO14 | ESP32-C5-MINI-1U | C5 SDIO D0 |
| GPIO15 | GPIO15 | ESP32-C5-MINI-1U | C5 SDIO D1 |
| GPIO16 | GPIO16 | ESP32-C5-MINI-1U | C5 SDIO D2 |
| GPIO17 | GPIO17 | ESP32-C5-MINI-1U | C5 SDIO D3 |
| GPIO18 | GPIO18 | ESP32-C5-MINI-1U | C5 SDIO CLK |
| GPIO19 | GPIO19 | ESP32-C5-MINI-1U | C5 SDIO CMD |
| GPIO20 | GPIO20 | 预留焊盘 / 排针 | 扩展口GPIO20 |
| GPIO21 | GPIO21 | 预留焊盘 / 排针 | 扩展口GPIO21 |
| GPIO22 | GPIO22 | 预留焊盘 / 排针 | 扩展口GPIO22 |
| GPIO23 | GPIO23 | 预留焊盘 / 排针 | 扩展口GPIO23 |
| GPIO24 | GPIO24 | 预留焊盘 / 排针 | 扩展口GPIO24 / 扩展口USB1P1_N0 |
| GPIO25 | GPIO25 | 预留焊盘 / 排针 | 扩展口GPIO25 / 扩展口USB1P1_P0 |
| GPIO26 | GPIO26 | 预留焊盘 / 排针 | 扩展口GPIO26 / 扩展口USB1P1_N1 |
| GPIO27 | GPIO27 | 预留焊盘 / 排针 | 扩展口GPIO27 / 扩展口USB1P1_P1 |
| GPIO28 | GPIO28 | IP101GRI RMII CRS_DV | 载波侦听/接收数据有效复用信号,PHY → ESP32-P4(输入) |
| GPIO29 | GPIO29 | IP101GRI RMII RXD0 | 接收数据位 0,PHY → ESP32-P4(输入) |
| GPIO30 | GPIO30 | IP101GRI RMII RXD1 | 接收数据位 1,PHY → ESP32-P4(输入) |
| GPIO31 | GPIO31 | IP101GRI SMI MDC | PHY 管理接口时钟,ESP32-P4 → PHY(输出) |
| GPIO32 | GPIO32 | 预留焊盘 / 排针 | 扩展口GPIO32 |
| GPIO33 | GPIO33 | 预留焊盘 / 排针 | 扩展口GPIO33 |
| GPIO34 | GPIO34 | IP101GRI RMII TXD0 | 发送数据位 0,ESP32-P4 → PHY(输出) |
| GPIO35 | GPIO35 | IP101GRI RMII TXD1 / BOOT | Strapping pin;发送数据位 1,ESP32-P4 → PHY(输出) |
| GPIO36 | GPIO36 | 预留焊盘 / 排针 | Strapping pin;外部3.3V上拉 |
| GPIO37 | UART0_TXD | 扩展排针 / 串口接口 | UART0 TX ;不建议作为普通 GPIO 使用 |
| GPIO38 | UART0_RXD | 扩展排针 / 串口接口 | UART0 RX ;不建议作为普通 GPIO 使用 |
| GPIO39 | SD_D0 | SD卡 | SDMMC 4-bit 数据线 |
| GPIO40 | SD_D1 | SD卡 | SDMMC 4-bit 数据线 |
| GPIO41 | SD_D2 | SD卡 | SDMMC 4-bit 数据线 |
| GPIO42 | SD_D3 | SD卡 | SDMMC 4-bit 数据线 |
| GPIO43 | SD_CLK | SD卡 | SDMMC 时钟线 |
| GPIO44 | SD_CMD | SD卡 | SDMMC 命令线 |
| GPIO45 | SD_VDD_EN | SD卡电源控制 / 扩展排针 | 低电平打开;不建议在SD功能使用时作为普通 GPIO |
| GPIO46 | GPIO46 | 预留焊盘 / 排针 | 扩展口GPIO46 |
| GPIO47 | GPIO47 | 预留焊盘 / 排针 | 扩展口GPIO47 |
| GPIO48 | GPIO48 | 预留焊盘 / 排针 | 扩展口GPIO48 |
| GPIO49 | GPIO49 | IP101GRI RMII TX_EN | 发送使能,ESP32-P4 → PHY(输出) |
| GPIO50 | GPIO50 | IP101GRI RMII REF_CLK | 50 MHz RMII 参考时钟,PHY → ESP32-P4(输入) |
| GPIO51 | GPIO51 | IP101GRI PHY RESET | PHY 硬件复位控制,ESP32-P4 → PHY(GPIO 输出) |
| GPIO52 | GPIO52 | IP101GRI SMI MDIO | PHY 管理接口数据,双向 |
| GPIO53 | PA_CTRL | NS4150B 使能 / 扩展排针 | 高电平有效;不建议在音频功能使用时作为普通 GPIO |
| GPIO54 | C5_CHIP_PU | ESP32C5 使能 / 扩展排针 | 高有效,低复位 |

本章节包含以下内容,请按需阅读:
ESP32-P4-NANO-WIFI6-DB 的 Arduino 示例以 Arduino-ESP32 3.3.11 为基础。板载 ESP32-P4 是 Arduino 工程的编译目标,ESP32-C5 无线协处理器通过 ESP-Hosted/SDIO 连接到 ESP32-P4,不属于 Arduino 工程的编译目标。
运行显示、摄像头、音频或 SD 卡示例前,请先连接对应的板载或外接硬件,并按照示例 的前置条件安装库和配置文件。
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
请参考 Arduino IDE 开发环境搭建教程 安装 Arduino IDE,并添加 ESP32 开发板支持。
3.3.11。示例代码和板卡定义按该版本整理,不要将本目录中的板卡文件与其他版本混用。examples/Arduino/esp32/variants/waveshare_esp32_p4_nano_wifi6_db 复制到 Arduino-ESP32 安装目录下的 variants 目录。examples/Arduino/esp32/boards.txt 是基于 Arduino-ESP32 3.3.11 的 boards.txt 快照。如果 Arduino-ESP32 安装目录没有其他本地板卡修改,可以备份原文件 后替换;如果已经添加过其他板卡,只合并 waveshare_esp32_p4_nano_wifi6_db 对应条目。Waveshare ESP32-P4-NANO-WIFI6-DB。示例程序位于示例程序包的 examples/Arduino 目录。ESP32-P4-NANO-WIFI6-DB 示例仓库链接暂保留为 ESP32-P4-NANO-WIFI6-DB,具体示例以当前示例程序包中的目录为准。
连接开发板后,在 Arduino IDE 的“工具”菜单中选择开发板和串口。板卡定义中的默认参数如下:
| 选项 | 设置 |
|---|---|
| 开发板 | Waveshare ESP32-P4-NANO-WIFI6-DB |
| Flash 大小 | 16MB |
| 分区方案 | 16M Flash (6.25MB APP/3.43MB SPIFFS) |
| PSRAM | 板卡定义默认启用 |
| USB 模式 | USB-OTG (TinyUSB) |
| 上传模式 | UART0 / Hardware CDC |
| 串口监视器波特率 | 115200 |
如果使用 USB-OTG CDC 进行上传,可将“上传模式”切换为 USB-OTG CDC (TinyUSB),并按照 Arduino IDE 的端口提示选择设备。不同示例的串口输出均以 115200 为准。
示例目录为 examples/Arduino,当前包含以下示例:
| 示例目录 | 功能 | 主要依赖或硬件 |
|---|---|---|
board_check | 输出芯片、Flash、PSRAM 和堆内存信息 | 无需连接其他外设 |
gpio | 通过串口命令交互测试 GPIO | Arduino-ESP32 Console |
i2c | 扫描 I2C1 总线上的 7 位地址 | Wire1、I2C1 |
i2s | ES8311 单麦克风到单扬声器的音频回环 | ES8311、板载麦克风和扬声器 |
sdmmc | 以 4-bit 模式测试 microSD 文件读写 | 板载 microSD 卡 |
mipi_dsi | 显示 MIPI-DSI 色条并测试背光 | LCD 面板、背光控制器 |
mipi_csi | 将 OV5647 摄像头画面显示到 MIPI-DSI LCD | OV5647、LCD、ESP_Video |
board_check:板级信息检查打开 board_check/board_check.ino,编译并上传后,将串口监视器设置为 115200。示例会输出:
该示例不访问 LCD、摄像头、音频、SDMMC 或 ESP-Hosted,适合首先确认 Arduino 板卡定义是否生效。
gpio:GPIO 控制台打开 gpio/gpio.ino 并上传,串口监视器的行尾设置为 Newline。输入 help 可查看命令列表。
gpio read <pin>
gpio write <pin> <0|1>
gpio mode <pin> <in|out|in_pu|in_pd>
例如:
gpio mode 2 out
gpio write 2 0
gpio write 2 1
gpio mode 4 in_pu
gpio read 4
该板卡变体没有定义板载 LED_BUILTIN。测试 GPIO 时,不要占用正在被 MIPI 显示屏、触摸控制器、 摄像头、SDMMC、ESP-Hosted/SDIO 或音频编解码器使用的引脚。
i2c:I2C 地址扫描打开 i2c/i2c.ino 并上传。示例使用 Arduino Wire1 扫描 I2C1 总线,默认参数如下:
| 项目 | 参数 |
|---|---|
| SDA | GPIO7 |
| SCL | GPIO8 |
| 频率 | 400 kHz |
| 地址格式 | 7 位 I2C 地址 |
该总线由 ES8311、LCD 背光控制器、GT911 和摄像头 SCCB 等设备共享。扫描时不要同时运行其他会 初始化 I2C1 的示例。没有设备响应时,程序不会将其列为设备,这不表示扫描程序异常。
i2s:ES8311 音频回环打开 i2s/i2s.ino 并上传,使用板载麦克风和扬声器运行单声道音频回环。示例以 48 kHz、16-bit、 I2S 标准单声道格式运行,使用左声道 slot。
| 信号 | GPIO |
|---|---|
| MCLK | GPIO13 |
| BCLK | GPIO12 |
| LRCK | GPIO10 |
| DOUT | GPIO9 |
| DIN | GPIO11 |
| 功放使能 | GPIO53,高电平打开 |
ES8311 的 Arduino Wire1 控制地址为 7 位地址 0x18。如果串口没有输出 ES8311 ready,或出现 回环无声音的情况,请检查 I2C 地址、MCLK、功放使能以及麦克风和扬声器连接。麦克风与扬声器距离 过近时可能产生声学啸叫。
sdmmc:microSD 文件读写插入 microSD 卡后打开 sdmmc/sdmmc.ino 并上传。示例使用 4-bit SDMMC 接口挂载卡片,读取容量, 并对根目录的 /arduino_test.txt 文件执行写入和读取测试。
| 信号 | GPIO |
|---|---|
| CLK | GPIO43 |
| CMD | GPIO44 |
| D0-D3 | GPIO39、GPIO40、GPIO41、GPIO42 |
| 卡电源控制 | GPIO45,低电平打开 |
挂载失败时,检查 microSD 卡是否插入、格式是否可识别,以及 SDMMC 引脚是否被其他示例占用。
mipi_dsi:MIPI-DSI LCDmipi_dsi 使用项目本地 LCD 驱动初始化 MIPI-DSI 面板,循环显示水平和垂直色条,并通过 I2C 背光控制器验证 LCD 背光。
运行前安装或确认以下库及版本:
| 库 | 版本 |
|---|---|
ESP32_Display_Panel | 1.0.4 |
ESP32_IO_Expander | 1.1.1 |
esp-lib-utils | 0.2.3 |
在 mipi_dsi/esp_panel_drivers_conf.h 中只选择一个本地 LCD 驱动:
ESP_PANEL_DRIVERS_LCD_ENABLE_JD9365_LOCALESP_PANEL_DRIVERS_LCD_ENABLE_HX8394_LOCALESP_PANEL_DRIVERS_LCD_ENABLE_ILI9881C_LOCAL当前默认配置为 10.1 英寸 JD9365,分辨率为 800 × 1280、RGB565、双 DSI lane。使用其他 LCD 面板时, 必须选择与实际面板匹配的控制器和配置。
mipi_csi:摄像头显示mipi_csi 初始化 OV5647 MIPI-CSI 摄像头和 MIPI-DSI LCD,将摄像头实时画面显示到 LCD。LCD 入口支持 JD9365、HX8394 和 ILI9881C,mipi_csi/lcd_panel.h 当前默认使用 10.1 英寸 JD9365 配置。
运行前需要满足以下条件:
3.3.11 及其对应的 ESP32-P4 预编译库。ESP_Video 启用 MIPI-CSI video device: CONFIG_ESP_VIDEO_ENABLE_MIPI_CSI_VIDEO_DEVICE=y。lcd_panel.h 中将 LCD_PANEL_TYPE 设置为实际连接的 LCD 面板类型。mipi_csi、mipi_dsi、i2s 和 i2c 对 I2C1 的初始化方式不同,不要在同一个 Arduino 工程中 同时运行这些示例,或重复初始化同一条总线。
Arduino 板卡变体提供以下常用引脚别名:
| 接口 | 引脚 |
|---|---|
SDA / SDA1 | GPIO7 |
SCL / SCL1 | GPIO8 |
SS | GPIO26 |
MOSI | GPIO32 |
MISO | GPIO33 |
SCK | GPIO36 |
UART TX / RX | GPIO37 / GPIO38 |
GPIO7 和 GPIO8 是板载 I2C1 共享总线。LCD 背光、GT911、ES8311 和摄像头 SCCB 均使用相关板级 总线资源;修改引脚前需要同时检查实际硬件连接和对应示例的初始化代码。
板卡使用 GPIO7(SDA)和 GPIO8(SCL)连接多个 I2C 设备,默认频率为 400 kHz。不同示例使用的 I2C API 不同:
i2c 和 i2s 使用 Arduino Wire1。mipi_dsi 使用 driver/i2c.h 提供的 legacy API 控制 LCD 背光。mipi_csi 使用 Wire1 建立新版 i2c_master 总线,并将总线句柄提供给摄像头 SCCB 和 LCD 背光。不要在同一程序中混用这些示例的初始化方式。复杂示例的构建结果和硬件状态需要在目标板上单独确认, Arduino-ESP32 版本、LCD 面板型号或硬件连接变化后,不能直接套用当前配置。
本章节包含以下内容:
初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
ESP32-P4-NANO-WIFI6-DB 仓库中的 ESP-IDF BSP 要求 ESP-IDF >=5.5。具体示例的组件和配置要求以对应示例目录中的 README 为准。
以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明。
此部分图示以安装 ESP-IDF V5.5.2 为例示范,安装时请选用与您开发板示例匹配的 ESP-IDF 版本。
前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。
在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你需要的 ESP-IDF 版本(图示仅为参考,请以实际为准)。

确认选择无误后,点击下载按钮。浏览器将自动同时下载两个文件:一个是 ESP-IDF 离线整合包(.zst),另一个是 ESP-IDF 安装器(.exe)。

请耐心等待两个文件下载完成。
下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)。
启动后,可在右上角将界面语言切换为中文。

安装工具会自动检测同一目录下是否存在离线整合包。点击 从存档安装。

接下来,选择安装路径。建议使用默认路径;若需自定义,请确保路径中不包含中文或空格。确认无误后,点击 开始安装。

当看到如下界面时,表示 ESP-IDF 已安装成功。

建议同时安装驱动程序。点击 完成安装,然后点击 安装驱动程序。

下载并安装 Visual Studio Code。
安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。
在 VS Code 中,点击侧边活动栏中的 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。
在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。

当 ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。
ESP32-P4-NANO-WIFI6-DB 的 ESP-IDF BSP 和示例程序基于 ESP32-P4-NANO-WIFI6-DB 示例仓库 维护。可在该仓库中获取对应的板级代码和示例程序。
仓库中的相关目录如下:
firmware/esp32_p4_nano_wifi6_db/:板卡固件配置。examples/esp_idf/:ESP-IDF 示例程序。ESP32-P4-NANO-WIFI6-DB 的 ESP-IDF BSP 要求 ESP-IDF >=5.5。示例工程的目标芯片为 esp32p4,默认串口波特率为 115200。
以下命令以 00_board_check 示例为例。将命令行当前目录切换到示例目录后执行:
cd examples/esp_idf/00_board_check
idf.py set-target esp32p4
idf.py build
idf.py flash monitor
建议按以下顺序运行示例,先确认板级外设,再验证显示、网络和其他功能:
00_board_check:板级外设检查。01_i2c_tools:I2C 总线检查。02_sdmmc:SDMMC 检查。06_Displaycolorbar:显示屏测试。03_wifistation:Wi-Fi Station 测试。| 示例目录 | 示例内容 |
|---|---|
00_board_check | 板级外设检查 |
01_i2c_tools | I2C 工具 |
02_sdmmc | SDMMC |
03_wifistation | Wi-Fi Station |
04_ethernetbasic | Ethernet 基础功能 |
05_I2SCodec | I2S 编解码器 |
06_Displaycolorbar | 显示屏彩条 |
07_lvgl_demo_v9 | LVGL v9 |
08_eth2ap | Ethernet 转 Wi-Fi AP |
09_simple_video_server | 简单视频服务器 |
10_video_lcd_display | 视频 LCD 显示 |
11_usb_extend_screen | USB 扩展屏幕 |
12_nvs_counter | NVS 计数器 |
当前公开仓库提供 ESP32-P4-NANO-WIFI6-DB 出厂固件,文件位于 firmware/bin/ESP32-P4-NANO-WIFI6-DB-FactoryOnly-260623.bin。使用固件前请确认固件与 ESP32-P4 芯片版本、Flash 容量和板卡型号匹配。
0x00以下步骤适用于烧录本页提供的固件。
下载并解压乐鑫官方烧录工具 Flash Download Tool(下载地址)
运行 Flash Download Tool,根据开发板的主控芯片与下载接口选择对应选项。下图以 ESP32-S3 与 USB 为例,实际选项以产品硬件设计为准

参数设置
0x00),同时勾选该行最左侧的复选框
等待烧录完成(烧录过程需要一定时间,请耐心等待)
按下复位键,观察运行现象

周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
