跳到主要内容

ESP-IDF 开发

本章节包含以下内容:

ESP-IDF 入门教程​

初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程。

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置 ESP-IDF 开发环境​

信息

ESP32-P4-WIFI6-DB 仓库中的 ESP-IDF BSP 和 firmware/brookesia 的组件清单要求 ESP-IDF >=5.5。 这是组件清单声明的版本约束,不代表所有示例均已在所有更新版本上验证;依赖组件可能提出额外要求。 具体示例的组件和配置要求以对应示例目录中的 README 为准。

备注

以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明。

版本选择

此部分图示以安装 ESP-IDF V5.5.2 为例示范,安装时请选用与您开发板示例匹配的 ESP-IDF 版本。

安装 ESP-IDF 开发环境​

  1. 前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。

    在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你需要的 ESP-IDF 版本(图示仅为参考,请以实际为准)。

    下载 EIM 和整合包

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

    下载 EIM 和整合包2

    请耐心等待两个文件下载完成。

  2. 下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)。

    启动后,可在右上角将界面语言切换为中文。

    切换 EIM 语言

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

    自动检测整合包

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

    选择安装路径
  3. 当看到如下界面时,表示 ESP-IDF 已安装成功。

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

    用 ESP-IDF 安装管理器安装驱动

安装 Visual Studio Code 与 ESP-IDF 扩展​

  1. 下载并安装 Visual Studio Code。

  2. 安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。

  3. 在 VS Code 中,点击侧边活动栏中的 扩展图标 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。

  4. 在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。

    在 VS Code 中搜索并安装 ESP-IDF 扩展

  5. 当 ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。

ESP32-P4-WIFI6-DB 示例仓库​

ESP32-P4-WIFI6-DB 的板级代码和示例程序可从以下仓库获取:

仓库中的相关目录如下:

  • components/waveshare_bsp/esp32_p4_wifi6_db/:ESP-IDF BSP、头文件、Kconfig 和组件清单。
  • components/waveshare_bmgr/:ESP Board Manager 板卡定义和屏幕 amend 配置。
  • examples/esp_idf/:外设示例和 Board Manager 测试应用。
  • firmware/brookesia/:ESP-Brookesia 板级综合应用源码。
  • firmware/factory-firmware/:5、7、8、10.1 英寸面板的 ESP32-P4 固件,以及 ESP32-C5 从机固件。
  • ESP32-P4-WIFI6-DB 原理图。

示例工程的目标芯片为 esp32p4。

快速运行​

以下命令以 00_board_check 示例为例。将命令行当前目录切换到示例目录后执行,COMx 替换为 ESP32-P4 的实际串口:

cd examples/esp_idf/00_board_check
idf.py set-target esp32p4
idf.py build
idf.py -p COMx flash monitor

显示和摄像头示例在构建前需要通过 idf.py menuconfig 选择实际连接的 LCD 面板。 06_wifi 默认运行 Station 模式,在 Example Configuration 中设置 Wi-Fi SSID 和密码; 启用 Run in SoftAP mode 后可切换为 SoftAP 模式。组件管理器会在配置阶段解析依赖。

LCD 面板选择​

BSP 通过以下选项选择 LCD 面板:

BSP 选项面板控制器分辨率
CONFIG_BSP_LCD_TYPE_720_1280_5_INCH_AHX8394,5 英寸720 × 1280
CONFIG_BSP_LCD_TYPE_720_1280_7_INCH_AILI9881C,7 英寸720 × 1280
CONFIG_BSP_LCD_TYPE_800_1280_8_INCH_AJD9365,8 英寸800 × 1280
CONFIG_BSP_LCD_TYPE_800_1280_10_1_INCH_AJD9365,10.1 英寸800 × 1280

BSP Kconfig 和 firmware/brookesia/sdkconfig.defaults 均默认选择 10.1 英寸 JD9365。构建前 应选择实际连接的面板。默认配置不会覆盖已有的 sdkconfig;确认实际生效的选项时,检查工程配置和 生成的 build/config/sdkconfig.h。

推荐验证顺序​

建议按以下顺序运行示例,先确认板级外设,再验证显示、网络和其他功能:

  1. 00_board_check:板级外设检查。
  2. 02_i2c_console:I2C 总线检查。
  3. 03_sdmmc:SDMMC 检查。
  4. 04_mipi_dsi:显示屏测试。
  5. 06_wifi:Wi-Fi Station 测试。

ESP-IDF 示例索引​

示例目录示例内容
00_board_check输出芯片、Flash、PSRAM、堆内存信息和周期心跳
01_gpio_input在 LCD 上显示 GPIO 输入状态
02_i2c_console交互式 I2C 扫描及寄存器读写控制台
03_sdmmcmicroSD 文件写入、读取和重命名测试
04_mipi_dsiLCD 输出测试
05_mipi_csi使用 PPA 处理并在 LCD 上预览摄像头画面
06_wifi默认运行 Wi-Fi Station 联网和网关 ping,也可配置为 SoftAP
07_i2s_codecES8311 内置音频播放或麦克风回放
08_usb_host_mscUSB 大容量存储文件操作和顺序读写速度测试
09_board_managerESP Board Manager 初始化控制台及 LCD、触摸、音频、摄像头、SD 卡、GPIO 等测试用例

以上目录均位于 examples/esp_idf/,可浏览 ESP32-P4-WIFI6-DB ESP-IDF 示例目录(Gitee)。接线和操作方法以各示例目录中的 README 及配置为准。

Board Manager 示例准备​

09_board_manager 使用 components/waveshare_bmgr/ 中的板卡定义。编译前需要在 ESP-IDF 的 Python 环境中安装 esp-bmgr-assist,并生成板卡配置:

cd examples/esp_idf/09_board_manager
pip install esp-bmgr-assist
idf.py set-target esp32p4
idf.py bmgr -b esp32_p4_wifi6_db -c ../../../components/waveshare_bmgr

默认屏幕为 10.1 英寸 DSI 屏。使用其他屏幕时,按该示例 README 通过 -a 选择对应的 amend 目录;该配置方式独立于上文 BSP 的 LCD Kconfig 选项。生成配置后再编译、烧录。启动后输入 help、bmgr init 和 case list,可查看命令、初始化板卡并列出可用用例。

Brookesia 综合应用​

Brookesia 源码位于 firmware/brookesia/,包含计算器、画板、音频、摄像头、视频、设置、Xiaozhi 和 GPIO 等应用。进入该目录后,按其中的 README 配置、编译和烧录。默认屏幕为 10.1 英寸 JD9365,分辨率为 800 × 1280。

运行前检查​

  • 板卡通过 ESP32-C5 无线协处理器和 ESP-Hosted/SDIO 实现无线功能。ESP32-C5 需要兼容的 ESP-Hosted 从机固件;烧录 ESP32-P4 示例不会更新 ESP32-C5。
  • I2C 总线使用 GPIO7(SDA)和 GPIO8(SCL),连接 ES8311、外接屏幕触摸控制器、LCD 背光控制器和摄像头 SCCB 总线。
  • ES8311 的 I2S 信号使用 GPIO13、GPIO12、GPIO10、GPIO9 和 GPIO11,功放使能使用 GPIO53。
  • microSD 使用 4-bit SDMMC,卡电源使能为 GPIO45(低有效),SDMMC IO 供电使用 LDO 通道 4。
  • LCD 背光通过共享 I2C 总线的 0x45 设备、亮度寄存器 0x96 控制;触摸使用轮询方式,BSP 使用 esp_lcd_touch_gt911 驱动初始化。
  • ESP-Hosted/SDIO 使用 GPIO18、GPIO19、GPIO14、GPIO15、GPIO16、GPIO17 和 GPIO54。
  • 具体示例的组件版本、配置要求和硬件连接方式,以对应示例目录中的 README 及板卡硬件资料为准。构建、 烧录和运行结果需要针对所选示例、ESP-IDF 版本和实际面板分别确认。