ESP32-P4-Module-DEV-KIT
|
| ||||||||||||||||||||||
| ||||||||||||||||||||||
说明
产品简介
ESP32-P4-Module-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 芯片的双核 RISC-V 高性能开发板;支持丰富的人机交互接口,包含MIPI-CSI(集成图像信号处理器 ISP)和 MIPI-DSI 接口,此外还支持 SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI™ 等常用外设。它还支持 USB OTG 2.0 HS、以太网和 SDIO Host 3.0,以实现高速连接;芯片集成数字签名外设和专用密钥管理单元,保证其安全性,ESP32-P4-Module-DEV-KIT专为高性能和高安全的应用设计,充分满足嵌入式应用对人机界面支持、边缘计算能力和 IO 连接特性等方面提出的更高需求。
产品特性
- 处理器
- 搭载RISC-V 32位双核处理器(HP系统),配备 DSP 和指令集扩展、浮点运算单元(FPU),主频高达400MHz
- 搭载RISC-V 32位单核处理器(LP系统),主频高达40MHz
- 搭载ESP32-C6 WIFI/BT协处理器,通过SDIO拓展WIFI 6/Bluetooth 5等功能
- 存储器
- 128 KB的高性能(HP)系统只读存储器(ROM)。
- 16 KB的低功耗(LP)系统只读存储器(ROM)。
- 768 KB的高性能(HP)L2内存(L2MEM)。
- 32 KB的低功耗(LP)SRAM。
- 8 KB的系统紧密耦合内存(TCM)。
- 封装内叠封32 MB PSRAM,模组集成16MB Nor Flash
- 外设接口
- 板上引出 2*20 排针,引出 28 个剩余可编程 GPIO,支持丰富的外围设备
- 板载Type-A USB 2.0 OTG接口、百兆以太网接口、SDIO3.0 SD卡槽、Type-C UART烧录口,方便不同场景使用
- 板载扬声器接口、麦克风、3.5mm耳机接口,可使用Codec芯片和功放芯片实现理想的音频功能需求
- 板载MIPI-CSI高清摄像头接口,支持全高清1080P画面采集及编码,集成图像信号处理器(ISP)、H264视频编码器,支持H.264 & JPEG 视频编码(1080P @30fps),方便应用到计算机视觉、机器视觉等领域
- 板载MIPI-DSI高清屏显接口,集成像素处理加速器(PPA)、2D 图形加速控制器(2D DMA),支持JPEG 图像解码(1080P @30fps),为高清屏显和流畅的HMI体验提供了强大支持,方便应用到智能家居中控屏、工业中控屏、自动贩卖机等场景
- 预留PoE模块接口,使开发板的供电方式更加灵活,仅一根网线接入 PoE 设备即可让 ESP32-P4-Module-DEV-KIT 系列实现联网和供电
硬件说明
|
1、ESP32-P4-Module 2、显示屏接口 3、摄像头接口 4、Type-C 接口 5、RTC 座子 6、Type-C 接口 7、I2C 接口 9、PoE 模块接口 10、贴片麦克风 |
11、喇叭接口 12、Type-A 接口 14、百兆 RJ45 网口 17、ESP32-C6 UART 端子 18、5V 供电端子 20、RST 按键 21、电源指示灯 22、SD 卡槽 |
引脚定义
产品尺寸
使用说明
本教程旨在指导用户搭建 ESP32-P4 硬件开发的软件环境,通过简单的示例展示如何使用 ESP-IDF 配置菜单,并编译、下载固件至 ESP32-P4 开发板等步骤。
开发工具介绍
这两种开发方式各有其优势,开发者可以根据自身需求和技能水平进行选择。Arduino 适合初学者和非专业人士,因其简单易学、上手快。而对于有专业背景或对性能要求较高的开发者,ESP-IDF 是更好的选择,它提供了更高级的开发工具和更强的控制能力,适用于复杂项目的开发。
软件准备
- 软件(推荐使用集成开发环境安装ESP-IDF,如果你熟悉ESP-IDF可以直接从ESP-IDF终端出发,以下开发方式任选其一即可)
- VSCode + ESP-IDF插件(推荐)
- Eclipse + ESP-IDF插件(Espressif-IDE)
- Arduino IDE(推荐)
- 软件(推荐使用集成开发环境安装ESP-IDF,如果你熟悉ESP-IDF可以直接从ESP-IDF终端出发,以下开发方式任选其一即可)
器件准备
- ESP32-P4-Module-DEV-KIT x1
- SD卡 x1
- USB线 type A公口 转 Type C公口 x1
Arduino
本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。
环境搭建
下载和安装 Arduino IDE
- 点击访问Arduino官网,选择对应的系统和系统位数下载。

- 运行安装程序,全部默认安装即可。
安装 ESP32 开发板
- ESP32相关主板在Arduino IDE使用,须先安装“esp32 by Espressif Systems”开发板的软件包
- 根据板安装要求进行安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装”
- 安装教程,详见:Arduino 板管理教程
| 板名称 | 板安装要求 | 版本号要求 |
|---|---|---|
| esp32 by Espressif Systems | “离线”安装/“在线”安装 | ≥3.2.0 |
安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件
对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。 - ESP32-P4 库文件存放于示例程序中
- 库安装教程,详见:Arduino 库管理教程
| 库名称 | 说明 | 版本 | 库安装要求 |
|---|---|---|---|
| GFX_Library_for_Arduino | 适配SH8601的GFX图形化库 | v1.6.0 | “离线”安装 |
| lvgl | LVGL图形化库 | v9.3.0 | 建议使用“离线”安装 |
| displays | I2C驱动、屏幕定义以及触摸驱动 | —— | “离线”安装 |
| lv_conf.h | LVGL配置文件 | —— | “离线”安装 |
运行第一个 Arduino 程序
示例程序
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| HelloWorld | 展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果 | GFX_Library_for_Arduino, displays |
| Drawing_board | 触摸画点测试 | GFX_Library_for_Arduino, displays |
| AsciiTable | 根据屏幕尺寸,在显示屏上按行列打印ASCII字符 | GFX_Library_for_Arduino, displays |
| GFX_ESPWiFiAnalyzer | 在屏幕上绘制WiFi频段信号强度 | GFX_Library_for_Arduino, displays |
| LVGLV9_Arduino | LVGL演示 | LVGL,GFX_Library_for_Arduino, displays |
- ESP32-P4 选择型号 ESP32P4 DEV Module
ESP-IDF
ESP-IDF 简介及环境搭建(VSCode专栏)
ESP-IDF(Espressif IoT Development Framework)是乐鑫(Espressif)推出的开源物联网开发框架,专门用于其ESP32系列芯片的开发。ESP-IDF提供了构建物联网应用的必要工具和库,包括Wi-Fi、蓝牙、外设驱动、文件系统、网络协议栈、加密、安全和实时操作系统(FreeRTOS)等。
下面描述只适用于使用VSCode + ESP-IDF环境搭建
- PS:
- 如若希望使用Eclipse 编辑器来作为主力开发环境,请点击链接下载Espressif-IDE安装,并替换ESP-IDF版本≥v5.3.1
- 若下述安装ESP-IDF过程中出现TSL Error、Network Error等报错、异常等情况,请重新清理目录文件夹、确保网络环境稳定无代理污染等并重新进行安装。所需时间较长,请耐心等待。
先决条件
- 如果您使用的是 Mac 或 Linux,请安装以下ESP-IDF 先决条件。如果您使用的是 Windows,请忽略此步骤。
安装VSCode
- 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载

- 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
- 第一、二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验
- 第三项开启后,选择打开方式时,可以直接选择VSCode
安装ESP-IDF插件
- 打开VSCode,点击插件管理器,并搜索ESP-IDF进行下载安装,如图:

- 安装好后左侧工具栏有Espressif的Logo就是插件,点击进入插件(会有一小段时间用于加载程序),选择“EXPRESS”进行快速安装,如图:

安装ESP-IDF开发环境
- 进入EXPRESS安装界面,确认好ESP-IDF 版本≥v5.3.1发布版本、ESP-IDF 目录和ESP-IDF 工具目录后,点击Install,耐心等待安装步骤完成,如图:

- 如果是国内用户,可以选择下载服务器为Espressif,安装过程比较缓慢,确保网络状态良好,可耐心等待安装完成,

- 安装过程展示:

- 安装完成标志:

入门(Getting Start)
学习一门语言或开发环境的最好方式是从入门开始,在本章节详细介绍如何创建项目、从现有项目开发、以及嵌入式经典教程HelloWorld和常用接口I2C的使用
一个ESP-IDF项目的基本结构介绍
├── CMakeLists.txt ├── main │ ├── CMakeLists.txt │ └── main.c └── README.md
ESP-IDF工程项目详解
- 组件(Component):ESP-IDF中的组件是构建应用的基本模块,每个组件通常是相对独立的代码库或库,能实现特定的功能或服务,可以被应用程序或是其他组件重复使用,类似于Python开发中的库的定义。
- 组件的引用:Python开发环境中引入库只需要“import 库名或路径”即可,而ESP-IDF基于C语音基础,引入库是通过
CMakeLists.txt进行配置和定义的。 - 当我们使用在线组件时,通常使用
idf.py add-dependency <componetsName>来为项目添加在线组件,这会生成一个idf_component.yml文件用于管理组件。 - CmakeLists.txt的作用:ESP-IDF编译时编译工具
CMake会首先通过读取工程目录的顶层CMakeLists.txt的内容来读取构建规则,识别需要编译的内容。当在CMakeLists.txt中引入了需要的组件、程序后,编译工具CMake会根据索引导入每个所需要编译的内容。编译过程如:
- 组件的引用:Python开发环境中引入库只需要“import 库名或路径”即可,而ESP-IDF基于C语音基础,引入库是通过
VSCode 用户界面底部工具栏说明
当我们打开一个ESP-IDF工程时,底部会自动加载环境,对于ESP32-P4-Module-DEV-KIT的开发,底部工具栏也是一个非常重要的,如图示:
- ESP-IDF开发环境版本管理器,当我们的工程需要区分开发环境版本时,可以通过安装不同版本的ESP-IDF来分别管理,当工程使用特定版本时,可以通过使用它来切换
- 设备烧录COM口,选择以将编译好的程序烧录进芯片上
- set-target 芯片型号选择,选择对应的芯片型号,如:ESP32-P4-Module-DEV-KIT需要选择
esp32p4为目标芯片 - menuconfig,点击修改sdkconfig配置文件内容
- fullclean 清理按钮,当工程编译报错或其他操作污染编译内容时,通过点击清理全部编译内容
- Build 构建工程,当一个工程满足构建时,通过此按钮进行编译
- flash烧录按钮,当一个工程Build构建通过时,选择对应开发板COM口,点击此按钮可以将编译好的固件烧录至芯片
- monitor开启烧录口监控,当一个工程Build——>Flash后,可通过点击此按钮查看烧录、调试口输出的log,以便观察应用程序是否正常工作
- Build Flash Monitor 一键按钮,用于连续执行Build——>Flash——>Monitor,常被称作小火苗
HelloWorld 示例
了解完VSCode 用户界面底部工具栏说明后,通过Hello World工程可以快速入门和了解ESP32开发环境的基础项目。它演示了如何使用ESP-IDF来创建一个基本的应用程序,并且涵盖了ESP32的开发流程,包括编译、烧录和监视器调试的步骤。
- 打开示例工程
HelloWorld后,设置好目标端口、芯片类型(此处注意,选择好芯片类型时右下角有加载动作,这是ESP-IDF正在执行idf.py set-target esp32p4的操作指令,它需要从包管理器拉取对应芯片的架构包环境,需要一定时间处理,请一定要耐心等待,如果此时点击构建等操作会有报错!!!) - 通过底部工具
🔥一键构建、烧录、监视,可以查看到终端输出Hello World!
- 代码内容解析
- 代码中仅有一个
app_main主函数,通过条件判断来确定打印内容输出,并在末尾添加了循环,实现10s重启芯片。 app_main函数是ESP-IDF(Espressif IoT Development Framework)开发框架中用户应用程序的入口点。它是ESP-IDF项目的核心函数,相当于C语言标准程序中的main函数。在ESP32开发中,app_main函数是由实时操作系统(FreeRTOS)调度的第一个任务,这也是用户代码执行的起始点。
- 代码中仅有一个
I2C
I2C是一个较常用的串行通信总线,它可以通过两条线进行通信,一根数据线(SDA, Serial Data)和一根时钟线(SCL, Serial Clock),并支持多主多从模式。在ESP32-P4上一共有2个I2C总线接口,芯片内部通过 GPIO 交换矩阵可配置使用任意 GPIO 管脚,这个特性可以让我们自由的使用任意 GPIO 作为I2C的引脚控制,当然ESP32-P4 I2C支持Slave、Master模式,以下主要使用 I2C 主机(Master)模式,用于 ESP32-P4 启动通信、控制并向从设备(可以是任何I2C接口的传感器)发送数据请求或接收数据。
ESP32-P4-Module-DEV-KIT的I2C引脚默认使用SCL(GPIO8)、SDA(GPIO7)
ESP-IDF中,I2C总线需要i2c_master_bus_config_t指定配置:
i2c_master_bus_config_t::clk_source选择 I2C 总线的源时钟,使用默认I2C时钟源(通常都使用默认时钟源)则为I2C_CLK_SRC_DEFAULT即可i2c_master_bus_config_t::i2c_port设置控制器使用的 I2C 端口,正如上述说明,ESP32-P4的I2C是有两个的,当有两个不同的I2C需要同时启用,则需要使用其来区分i2c_master_bus_config_t::scl_io_num设置串行时钟总线 (SCL) 的 GPIO 编号,在ESP32-P4-Module-DEV-KIT上,为 8i2c_master_bus_config_t::sda_io_num设置串行数据总线 (SDA) 的 GPIO 编号,在ESP32-P4-Module-DEV-KIT上,为 7i2c_master_bus_config_t::glitch_ignore_cnt设置 Master Bus 的 Glitch Period,如果线路上的 Glitch Period小于此值,可以过滤掉,通常值为 7i2c_master_bus_config_t::enable_internal_pullup启用内部 pullups,在ESP32-P4-Module-DEV-KIT上,已经有额外的I2C上拉,无需启用内部上拉
经上所述,I2C配置为:
i2c_master_bus_config_t i2c_bus_config = {
.clk_source = I2C_CLK_SRC_DEFAULT,
.i2c_port = I2C_NUM_0,
.scl_io_num = 8,
.sda_io_num = 7,
.glitch_ignore_cnt = 7,
.flags.enable_internal_pullup = false,
};
- 打开
i2c_tools工程,选择好COM口和芯片型号,点击⚙️进入设置,这里会打开一个新的标签:SDK Configuration editor也就是menuconfig,我们直接在搜索栏中搜索I2C,看到此时内容已经检索,并且示例例程中的SCL GPIO Num、SDA GPIO Num已经对应上了SCL(GPIO8)、SDA(GPIO7) - 接下来可以直接通过点击
🔥编译、烧录、监视,完成后会在终端查看到命令菜单,当我们执行i2cdetect后,会打印出所有的I2C地址,如果有设备存在则会显示数字(I2C地址 18 设备是板载的ES8311 Codec音频芯片,此芯片会在I2S部分详细说明),如图:
- 上述步骤已经实现了I2C设备通信的基础,在I2C通信协议设备中,常常需要通过I2C总线向对应地址的设备写寄存器配置以实现I2C设备的功能,此时我们需要在程序中写好I2C设备的初始化程序以便驱动I2C设备。不同的I2C设备存在不同的I2C地址,在开发中我们可以通过i2ctools工具查询接入的I2C地址,然后通过阅读其芯片手册查询寄存器、配置等内容实现I2C总线的通信。
进阶(Intermediate)
以太网 示例
以太网基本概念
- 以太网是一种异步的带冲突检测的载波侦听多路访问 (CSMA/CD) 协议/接口。通常来说,以太网不太适用于低功耗应用。然而,得益于其广泛的部署、高效的网络连接、高数据率以及范围不限的可扩展性,几乎所有的有线通信都可以通过以太网进行。目前以太网根据速度等级分类大概分为:标准以太网(10Mbit/s),快速以太网(100Mbit/s),千兆以太网(1000Mbit/s),以及更快的万兆以太网(10Gbit/s)。
- 以太网接口类型有RJ45接口,RJ11接口(电话线接口)等。其中RJ45接口使我们最常用的以太网接口(电脑接口),也是ESP32-P4-Module-DEV-KIT板载网口类型。
- ESP32-P4-Module-DEV-KIT可以引用网络模型来解释:
- ESP32-P4-Module-DEV-KIT的网络接口层:是由ESP32-P4通过RMII接口连接IP101GRI,并通过网络变压器引出RJ45接口网口,而开发板由ESP32-P4芯片内部集成的MAC层管理数据帧的封装、校验和MAC地址。
- ESP32-P4-Module-DEV-KIT的网络层、传输层:由ESP32-P4驱动IP101GRI实现
- ESP32-P4-Module-DEV-KIT的应用层:当成功与网络建立连接,ESP32-P4就可以实现HTTP请求,使用MQTT等通信server。
示例演示
此示例演示了Ethernet driver与esp_netif的基本用法。 Ethernet driver的初始化包含在该项目的单独子组件中,以清楚地区分驱动程序的初始化和esp_netif初始化。该示例的工作流程如下:
- RMII定义:
上述内容中提到ESP32-P4-Module-DEV-KIT的ESP32-P4芯片与IP101GRI芯片之间是通过RMII接口建立连接的,接口定义如下:TXD[1:0]:发送数据线,由GPIO34、GPIO35控制RXD[1:0]:接收数据线,由GPIO30、GPIO29控制TX_EN:发送启用信号,由GPIO49控制CRS_DV:载波检测和数据有效信号,由GPIO28控制REF_CLK:参考时钟,由GPIO50控制,50MHz由 PHY 外侧连接的 25 MHz 无源晶振经过倍频产生MDIO和MDC:用于以太网的管理数据接口(控制和配置PHY),由GPIO52、GPIO31控制RESET:控制 IP101GRI 复位,由GPIO51控制
- 打开
ethernetbasic工程,选择好COM口和芯片型号,点击⚙️进入设置,这里会打开一个新的标签:SDK Configuration editor也就是menuconfig,我们直接在搜索栏中搜索ETH,看到此时内容已经检索,将下图中参数与之对应,即可:
- 接下来可以直接通过点击
🔥编译、烧录、监视,完成后会在终端查看到程序启动,插入网线后可以获取到IP,拔掉网线后断开动作,如图:
- 从路由器上可以查看到一个设备名为
espressif的设备已经连接,此时ESP32-P4-Module-DEV-KIT已经连上网络了。
SDMMC 示例
ESP32-P4-Module-DEV-KIT板载了一个 4-Wire SDIO3.0的卡槽,可拓展片外存储
- 支持的速率模式
- 默认速率 (20 MHz)
- 高速模式(40 MHz)
- 配置总线宽度和频率
ESP-IDF中,使用sdmmc_host_t和sdmmc_slot_config_t设置配置,如设置默认20MHz通信频率、4线宽度通信,则为:
sdmmc_host_t host = SDMMC_HOST_DEFAULT(); sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
在支持 40 MHz 频率通信的设计中,可以调整 sdmmc_host_t 结构体中的 max_freq_khz 字段,提升总线频率:
sdmmc_host_t host = SDMMC_HOST_DEFAULT(); host.max_freq_khz = SDMMC_FREQ_HIGHSPEED;
ESP32-P4-Module-DEV-KIT上的SDMMC 4线连接定义应该为:
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); slot_config.width = 4; slot_config.clk = 43; slot_config.cmd = 44; slot_config.d0 = 39; slot_config.d1 = 40; slot_config.d2 = 41; slot_config.d3 = 42; slot_config.flags |= SDMMC_SLOT_FLAG_INTERNAL_PULLUP;
- 打开
sdmmc工程,选择好COM口和芯片型号,因为demo工程将引脚定义为宏,所以需要进行配置,当然也可以直接填入引脚数值。点击⚙️进入设置,这里会打开一个新的标签:SDK Configuration editor也就是menuconfig,我们直接在搜索栏中搜索sd,看到此时内容已经检索,并且示例配置已经配置,勾选上默认初始化且默认创建示例文件:
- 接下来插入准备好的SD卡,通过点击
🔥编译、烧录、监视,完成后会在终端查看到命令菜单输出了目录下的文件内容:
WIFI联网示例
ESP32-P4本身不带WIFI/BT功能,而ESP32-P4-Module-DEV-KIT 通过 SDIO 连接了一块ESP32-C6 模组来拓展WIFI功能。ESP32-C6作为Slave,通过一系列指令集支持 ESP32-P4 作为 Host 通过SDIO 来使用WIFI 6/BT 5功能,通过添加两个组件后,可以做到无缝使用esp_wifi。
// 在一个WIFI工程下,通过ESP-IDF组件管理工具添加下述两个组件 idf.py add-dependency "espressif/esp_wifi_remote" idf.py add-dependency "espressif/esp_hosted"
- 打开
wifistation工程,进行组件的添加
- 如上图所示,是添加组件的具体步骤
- 打开ESP-IDF Terminal。
- 在 Terminal 里将所需要的组件进行添加
- 成功添加后,在工程项目中的main文件夹中会多出一个
idf_component.yml,此文件的作用已经在ESP-IDF工程目录章节说明过是用于管理项目组件的 - 打开后,可以看到已经添加上了
espressif/esp_hosted: "*"和espressif/esp_wifi_remote: "*"两个组件,在构建项目时,它们会被添加到项目中
- 接下来可以通过点击
⚙️打开设置,输入Example检索,这里设置好要连接WIFI的ssid和password,注意ESP32-C6是支持2.4GHz的WiFi-6,在选择目标WiFi时要确认好频率是2.4GHz的,修改完之后需要保存,否则会出错!
- 接下来可以直接通过点击
🔥编译、烧录、监视,完成后会在终端查看到如下结果,此时ESP32-P4-Module-DEV-KIT已经接入WIFI并且联网了:
I2S音频示例
I2S(Inter-IC Sound)是一种用于传输音频数据的数字通信协议。I2S 是一种串行总线接口,主要用于音频设备之间的数字音频数据传输,例如数字音频处理器 (DSP)、数字-模拟转换器 (DAC)、模拟-数字转换器 (ADC) 和音频编解码器。
ESP32-P4 包含 1 个 I2S 外设。通过配置这些外设,可以借助 I2S 驱动来输入和输出采样数据。ESP32-P4-Module-DEV-KIT板载了es8311 Codec芯片和NS4150B功放芯片组合,I2S总线和引脚分布如下:
- MCLK (Master Clock):主时钟信号。这个时钟通常由外部设备(如 MCU 或 DSP)提供给 ES8311,用于为其内部的数字音频处理模块提供时钟源。
- SCLK (Serial Clock) :串行时钟信号。这个信号通常用于 I2S 数据传输的时钟同步,由主设备生成,用于指示数据的传输速率。每个音频样本的每一位的传输都需要一个时钟周期。
- ASDOUT (Audio Serial Data Output) 或 DOUT:音频数据输出引脚。ES8311 将解码后的数字音频数据输出到该引脚,然后传输给功放芯片或其他音频设备。
- LRCK (Left/Right Clock) 或 WS (Word Select):左右声道选择信号,用于指示当前数据样本属于左声道还是右声道。通常在 I2S 协议中,一个时钟周期表示左声道数据,另一个时钟周期表示右声道数据。
- DSDIN (Digital Serial Data Input) 或 DIN:数字音频数据输入引脚。该引脚接收来自外部音频设备或主设备的音频数据。ES8311 将这些数据解码,并通过内部的数字信号处理模块处理这些音频信号。
| 功能引脚 | ESP32-P4-Module-DEV-KIT引脚 |
|---|---|
| MCLK | GPIO13 |
| SCLK | GPIO12 |
| ASDOUT | GPIO11 |
| LRCK | GPIO10 |
| DSDIN | GPIO9 |
| PA_Ctrl(功放芯片使能脚,高电平有效) | GPIO53 |
ESP32-P4-Module-DEV-KIT es8311驱动使用了ES8311组件,使用时可以通过IDF Component Manager来添加。
idf.py add-dependency "espressif/es8311"
- 打开
i2scodec工程,进行组件的添加
- 如上图所示,是添加组件的具体步骤
- 打开ESP-IDF Terminal。
- 在 Terminal 里将所需要的组件进行添加
- 成功添加后,在工程项目中的main文件夹中会多出一个
idf_component.yml,此文件的作用已经在ESP-IDF工程目录章节说明过是用于管理项目组件的 - 打开后,可以看到已经添加上了
espressif/es8311组件,在构建项目时,它们会被添加到项目中
- 接下来可以通过点击
⚙️打开设置,搜索Example,调整合适的音量
- 接上喇叭,可以直接通过点击
🔥编译、烧录、监视,完成后会在终端查看到如下结果,此时ESP32-P4-Module-DEV-KIT已经在播放音频了
- 当在设置中设置
echo模式时,音频将由麦克风收录,扬声器输出
MIPI-DSI点屏示例
ESP32-P4-Module-DEV-KIT使用ESP32-P4NRW32芯片,具有以下新特性:
- 符合MIPI-DSI协议,使用 D-PHY v1.1 版本,最高 2-lane x 1.5Gbps(共3Gbps)
- 支持RGB888、RGB565、YUV422输入
- 支持RGB888、RGB666、RGB565输出
- 使用 video mode 输出视频流,支持输出固定图像 pattern
MIPI-DSI图像处理还可以使用2D-DMA控制器处理,支持PPA和JPEG编解码外设。
MIPI-DSI LCD驱动原理
所需硬件
- 配套10.1寸显示屏及其配件
- ESP32-P4-Module-DEV-KIT【主机】
点屏步骤
- 配套屏幕驱动已封装为组件,组件位置位于ESP Component Registry
- 选择对应工程打开,选择
esp32p4核心,接下来可以直接通过点击🔥编译、烧录、监视,完成后可以查看屏幕已经点亮刷新色条了:
高级(Advanced)
ETH To WIFI
此示例演示如何使用ESP32-P4-Module-DEV-KIT板载的ESP32-C6作为从机,使ESP32-P4驱动IP101注册网络后通过ESP32-C6实现WiFi AP功能
所需硬件
- ESP32-P4-Module-DEV-KIT【主机】
运行步骤
- 打开工程后,选择
esp32p4核心,接下来可以直接通过点击🔥编译、烧录、监视,完成后可以接上网线,查看WiFi进行上网。如果有选配合适的PoE模块则可以接上PoE交换机直接取电上网。
LVGL HMI人机交互
本示例展示了ESP32-P4通过MIPI DSI接口将LVGL图像显示,可充分体现ESP32-P4强大的图像处理能力
所需硬件
- 配套10.1寸显示屏及其配件
- ESP32-P4-Module-DEV-KIT【主机】
点屏步骤
- 配套屏幕驱动已封装为组件,并且从BSP进行调用驱动。
- 打开工程后,通过menuconfig Display配置对应参数,选择
esp32p4核心,接下来可以直接通过点击🔥编译、烧录、监视,完成后可以查看屏幕:
综合玩法(Expert Techniques)
ESP-Phone
本示例基于 ESP_Brookesia,展示了一个类似 Android 的界面,其中包含许多不同的应用程序。该示例使用了开发板的 MIPI-DSI 接口、MIPI-CSI 接口、ESP32-C6、SD 卡和音频接口。基于此示例,可以基于 ESP_Brookesia 创建一个使用案例,从而高效开发多媒体应用程序。
所需硬件
- 配套10.1寸显示屏及其配件
- OV5647或SC2336摄像头及排线
- 8Ω 2W 喇叭
- ESP32-P4-Module-DEV-KIT【主机】
点屏步骤
- 配套屏幕驱动已封装为组件,组件位置位于ESP Component Registry
- 打开工程后,选择
esp32p4核心,接下来可以直接通过点击🔥编译、烧录、监视,完成后可以查看屏幕:
资料
原理图
工程图纸
示例程序
数据手册
软件
FAQ
- 只支持 WiFi 和 BLE ,暂不支持 Zigbee 或 Thread
200W。ESP32-P4 内部集成了 ISP 和 H.264 编码器,意味着摄像头采集的原始数据可以直接由 ISP 处理,然后通过硬件编码器高效压缩为 H.264 格式,由于 H.264 编码器最大编码性能为 1080p@30fps,所以 ESP32-P4 最大只能支持 200W 像素的摄像头。
- 使用乐鑫官方的 UVC 例程进行测试,链接如下:https://github.com/espressif/esp-idf/tree/master/examples/peripherals/usb/host/uvc
- USB 摄像头型号:OV5640 5MP USB Camera (B)
- USB 接口说明
- 当跳线帽接入 HOST 端时,设备使能 1 号 USB 口
- 当跳线帽接入 DEVICE 端时,设备使能 2-4 号 USB 口
- 例程使用
- 使用 HOST 模式测试时,USB 摄像头接入 1 号 USB 口,直接编译烧录 UVC 例程就可以,烧录后打开串口监视器,可以看到已经成功打开了 UVC 设备
- 使用 DEVICE 模式测试时,USB 摄像头接入 2-4 号其中一个 USB 口,需要按照下图配置 SDK 后才能编译烧录 UVC 例程。
可以订阅该存储库,并提出issue说明需求,工程师收到需求后会第一时间进行评估: ESP32-display-support
1.此问题复现在使用VS Code插件的情况下,在部分情况下VS Code插件安装的ESP-IDF存在bug,现有的解决方式是换为IDF工具执行编译烧录。
1.当前芯片SDK还未开放拉满ESP32-P4 HP 核心速率,等SDK成熟后会更新在ESP-IDF中
1.在功能和验证方案的工作当中我们验证过很多功能,目前有一些应用如使用Cat-4模组来为P4供网、使用P4的MIPI-DSI来拓展主机屏幕等功能都有一些进度,但出于稳定性需求,目前还未提供相关示例程序,待功能和方案完善后会补充至wiki中
2.如果有一些好的idea或是有一些已经有经过部分验证的场景应用,可以分享给我们来评估可行的方案
1.出于稳定性要求,PlatformIO支持ESP32-P4还需要PlatformIO社区支持Arduino-esp32 SDK V3.1x版本
2.在开发过程中,我们尝试过使用MPY固件来开发ESP32-P4,可以简单的运行一些指令;但这只是验证阶段,实际接口、外设应用还未适配,待完全适配稳定后,将推出ESP32-P4在MicroPython中的使用案例。


















