ESP32-P4-WIFI6-POE-ETH 使用教程

ESP32-P4-WIFI6-POE-ETH 是一款基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 Bluetooth 5 (LE) 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等,还支持 USB OTG 2.0 HS,板上集成带 PoE 功能的 RJ45 以太网接口。ESP32-P4 采用 360MHz 双核 RISC-V 处理器,支持最大 32MB PSRAM,具备 USB 2.0、MIPI-CSI / MIPI-DSI 和 H.264 编码等外设,满足低成本、高性能和低功耗的多媒体开发需求。此外,ESP32-P4 集成数字签名外设和专用密钥管理单元,确保数据与操作安全。ESP32-P4-WIFI6-POE-ETH 专为高性能和高安全应用设计,满足嵌入式系统在人机交互、边缘计算和 IO 扩展等方面的需求。

产品特性

  • 处理器
    • 搭载 RISC-V 32 位双核处理器(HP 系统),配备 DSP 和指令集扩展、浮点运算单元(FPU),主频高达 360MHz
    • 搭载 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,模组集成 32MB Nor Flash
  • 外设接口
    • 板上引出 2*20 排针,引出 28 个剩余可编程 GPIO,支持丰富的外围设备
    • 板载 Type-A USB 2.0 OTG 接口、百兆以太网接口(支持 PoE)、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-WIFI6-POE-ETH 系列实现联网和供电

硬件说明


  1. ESP32-P4-Core 集成 ESP32-P4NRW32,32MB NOR Flash
  2. ESP32-C6-MINI-1U-H8 模组 SDIO 接口协议,兼容开发板 Wi-Fi 6,Bluetooth 5 (LE),外接天线采用 IPEX 3 代接口
  3. 显示屏接口 MIPI-DSI (2-lane),可接入 5 / 7 / 8 / 10.1 寸 DSI 屏幕
  4. 摄像头接口 MIPI-CSI (2-lane), 可接入 OV5647 等摄像头
  5. 5V 供电端子
  6. UART 接口 SH1.0 4PIN 可用于程序烧录、调试
  7. I2C 接口 SH1.0 4PIN 可用于外接 I2C 设备
  8. 电源指示灯
  9. RST 按键 复位按键
  10. BOOT 按键 上电或复位时按下,进入下载模式
  11. Type-A 和 Type-C 物理堆叠设计 Type-A 为 USB OTG 2.0 High Speed 接口,Type-C 为 UART 接口,可用于供电、烧录与调试
  12. 百兆 RJ45 网口 支持 PoE 供电
  13. Micro SD 卡槽 SDIO 3.0 接口协议
  14. ESP32-C6 UART 端子
  15. 贴片麦克风
  16. 40PIN 排针
  17. 音频编解码芯片、功放芯片和 MX1.25 喇叭接口 MX1.25 2P 连接器,支持 8Ω 2W 喇叭
  18. IP101 网口芯片

引脚定义


产品尺寸



Arduino

本章节包含以下部分,请按需阅读:

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

可从 此链接 下载 ESP32-P4-WIFI6-POE-ETH 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。

版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

安装步骤:

  1. 解压已下载的 示例程序包

  2. 将其 Arduino\libraries 目录下的所有文件夹复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

  3. 其他安装方式请参考:Arduino 库管理教程

示例程序

Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。

示例程序基础例程说明依赖库
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_ArduinoLVGL 演示LVGL,GFX_Library_for_Arduino , displays


ESP-IDF 开发

本章节包含以下内容,请按需阅读:

ESP-IDF 入门教程

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

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

配置开发环境

备注

以下环境设置适用于 Windows 10/11 系统,Mac/Linux 用户请参考 官方说明

  1. 下载并安装 Visual Studio Code

  2. 在 VS Code 中,通过点击 VS Code 侧边活动栏中的 扩展图标 或使用快捷键(Ctrl+Shift+X)来打开 扩展 视图。然后,搜索 ESP-IDF 扩展并安装。

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

  3. 安装扩展后,VS Code 左侧活动栏中会出现 Espressif 图标 图标,点击该图标可查看 ESP-IDF 扩展的基本命令列表,在 Advanced 中选择 配置 ESP-IDF 扩展

    选择“配置 ESP-IDF 拓展”

  4. 选择 Express 进入快速配置模式:

    选择快速配置模式

  5. 根据需要修改以下选项。

    • 选择下载服务器
      • Espressif:使用乐鑫中国服务器,下载速度更快。
      • Github:使用 GitHub 官方发布链接。
    • ESP-IDF 版本:通常根据开发板要求选择对应版本,如无特殊要求建议使用最新的正式版本。对于 ESP32-P4-WIFI6-POE-ETH ,建议 Espressif IDF 版本 ≥ v5.3.1。
    • ESP-IDF 容器安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。
    • ESP-IDF 所需的工具安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。

    ESP-IDF 拓展快速配置模式选项

  6. 点击 Install 开始安装。你将看到一个显示安装进度的页面,包括 ESP-IDF 下载、ESP-IDF 工具下载安装以及 Python 虚拟环境创建的进度状态。

    安装进度

  7. 如果安装正确,你会看到所有设置已配置完成的提示,即可开始使用该扩展程序。

    安装成功

注意

注意:如果 ESP-IDF 安装失败或需要重新安装,可以尝试删除 C:\Users\%Username%\esp 和 C:\Users\%Username%\.espressif 文件夹后重试。

示例程序

ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。

入门

学习一门语言或开发环境的最好方式是从入门开始,在本章节详细介绍如何创建项目、从现有项目开发、以及嵌入式经典教程 HelloWorld 和常用接口 I2C 的使用。

1. ESP-IDF 项目的基本结构介绍

  • 项目结构:

    • 打开 ESP-IDF 插件,点击 New project,选择 ESP-IDF 示例 ——> sample_project ——> 点击创建

    • 新建并在窗口中打开可以查看到 VS Code 的结构如下:

      ├── 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 会根据索引导入每个所需要编译的内容。编译过程如:


  • VS Code 用户界面底部工具栏说明:

    打开 ESP-IDF 工程时,底部会自动加载环境。对于 ESP32-P4-WIFI6-POE-ETH 开发,底部工具栏非常重要,如图所示:


    • ①ESP-IDF 开发环境版本管理器:当我们的工程需要区分开发环境版本时,可以通过安装不同版本的 ESP-IDF 来分别管理,当工程使用特定版本时,可以通过使用它来切换
    • ② 设备烧录 COM 口,选择以将编译好的程序烧录进芯片上
    • ③set-target 芯片型号选择:选择对应的芯片型号,如:ESP32-P4-WIFI6-POE-ETH 需要选择 esp32p4 为目标芯片
    • ④menuconfig:点击修改 sdkconfig 配置文件内容
    • ⑤fullclean 清理按钮:当工程编译报错或其他操作污染编译内容时,通过点击清理全部编译内容
    • ⑥Build 构建工程:当一个工程满足构建时,通过此按钮进行编译
    • ⑦flash 烧录按钮:当一个工程 Build 构建通过时,选择对应开发板 COM 口,点击此按钮可以将编译好的固件烧录至芯片
    • ⑧monitor 开启烧录口监控:当一个工程 Build—>Flash 后,可通过点击此按钮查看烧录、调试口输出的 log,以便观察应用程序是否正常工作
    • ⑨Build Flash Monitor 一键按钮:用于连续执行 Build—>Flash—>Monitor,常被称作小火苗

2. HelloWorld 示例

了解完 VS Code 用户界面底部工具栏说明后,通过 Hello World 工程可以快速入门和了解 ESP32 开发环境的基础项目。它演示了如何使用 ESP-IDF 来创建一个基本的应用程序,并且涵盖了 ESP32 的开发流程,包括编译、烧录和监视器调试的步骤。

  1. 打开示例工程 HelloWorld 后,设置好目标端口、芯片类型(此处注意,选择好芯片类型时右下角有加载动作,这是 ESP-IDF 正在执行 idf.py set-target esp32p4 的操作指令,它需要从包管理器拉取对应芯片的架构包环境,需要一定时间处理,请一定要耐心等待,如果此时点击构建等操作会有报错!!!)

  2. 通过底部工具 

    1. 通过底部工具  一键构建、烧录、监视,可以查看到终端输出 Hello World!

    2. 代码内容解析

      1. 代码中仅有一个 app_main 主函数,通过条件判断来确定打印内容输出,并在末尾添加了循环,实现 10s 重启芯片。
      2. app_main 函数是 ESP-IDF(Espressif IoT Development Framework)开发框架中用户应用程序的入口点。它是 ESP-IDF 项目的核心函数,相当于 C 语言标准程序中的 main 函数。在 ESP32 开发中,app_main 函数是由实时操作系统(FreeRTOS)调度的第一个任务,这也是用户代码执行的起始点。

    3. 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-WIFI6-POE-ETH 的 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-WIFI6-POE-ETH 上,为 8
    • i2c_master_bus_config_t::sda_io_num 设置串行数据总线 (SDA) 的 GPIO 编号,在 ESP32-P4-WIFI6-POE-ETH 上,为 7
    • i2c_master_bus_config_t::glitch_ignore_cnt 设置 Master Bus 的 Glitch Period,如果线路上的 Glitch Period 小于此值,可以过滤掉,通常值为 7
    • i2c_master_bus_config_t::enable_internal_pullup 启用内部 pullups,在 ESP32-P4-WIFI6-POE-ETH 上,已经有额外的 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,
    };
    1. 打开 i2c_tools 工程,选择好 COM 口和芯片型号,点击  进入设置,这里会打开一个新的标签:SDK Configuration editor 也就是 menuconfig,我们直接在搜索栏中搜索 I2C,看到此时内容已经检索,并且示例例程中的 SCL GPIO Num、SDA GPIO Num 已经对应上了 SCL(GPIO8)SDA(GPIO7)

    2. 接下来可以直接通过点击  编译、烧录、监视,完成后会在终端查看到命令菜单,当我们执行 i2cdetect 后,会打印出所有的 I2C 地址,如果有设备存在则会显示数字(I2C 地址 18 设备是板载的 ES8311 Codec 音频芯片,此芯片会在 I2S 部分详细说明),如图:


    3. 上述步骤已经实现了 I2C 设备通信的基础,在 I2C 通信协议设备中,常常需要通过 I2C 总线向对应地址的设备写寄存器配置以实现 I2C 设备的功能,此时我们需要在程序中写好 I2C 设备的初始化程序以便驱动 I2C 设备。不同的 I2C 设备存在不同的 I2C 地址,在开发中我们可以通过 i2ctools 工具查询接入的 I2C 地址,然后通过阅读其芯片手册查询寄存器、配置等内容实现 I2C 总线的通信。


    进阶

    1. 以太网 示例

    以太网基本概念

    • 以太网是一种异步的带冲突检测的载波侦听多路访问 (CSMA/CD) 协议/接口。通常来说,以太网不太适用于低功耗应用。然而,得益于其广泛的部署、高效的网络连接、高数据率以及范围不限的可扩展性,几乎所有的有线通信都可以通过以太网进行。目前以太网根据速度等级分类大概分为:标准以太网(10Mbit/s),快速以太网(100Mbit/s),千兆以太网(1000Mbit/s),以及更快的万兆以太网(10Gbit/s)。

    • 以太网接口类型有 RJ45 接口,RJ11 接口(电话线接口)等。其中 RJ45 接口使我们最常用的以太网接口(电脑接口),也是 ESP32-P4-WIFI6-POE-ETH 板载网口类型。

    • ESP32-P4-WIFI6-POE-ETH 可以引用网络模型来解释:


      • ESP32-P4-WIFI6-POE-ETH 的网络接口层:是由 ESP32-P4 通过 RMII 接口连接 IP101GRI,并通过网络变压器引出 RJ45 接口网口,而开发板由 ESP32-P4 芯片内部集成的 MAC 层管理数据帧的封装、校验和 MAC 地址。
      • ESP32-P4-WIFI6-POE-ETH 的网络层、传输层:由 ESP32-P4 驱动 IP101GRI 实现
      • ESP32-P4-WIFI6-POE-ETH 的应用层:当成功与网络建立连接,ESP32-P4 就可以实现 HTTP 请求,使用 MQTT 等通信 server。

    示例演示

    此示例演示了 Ethernet driver 与 esp_netif 的基本用法。 Ethernet driver 的初始化包含在该项目的单独子组件中,以清楚地区分驱动程序的初始化和 esp_netif 初始化。该示例的工作流程如下:


    1. RMII 定义: 上述内容中提到 ESP32-P4-WIFI6-POE-ETH 的 ESP32-P4 芯片与 IP101GRI 芯片之间是通过 RMII 接口建立连接的,接口定义如下:

      • TXD[1:0]:发送数据线,由 GPIO34GPIO35 控制
      • RXD[1:0]:接收数据线,由 GPIO30GPIO29 控制
      • TX_EN:发送启用信号,由 GPIO49 控制
      • CRS_DV:载波检测和数据有效信号,由 GPIO28 控制
      • REF_CLK:参考时钟,由 GPIO50 控制,50MHz 由 PHY 外侧连接的 25 MHz 无源晶振经过倍频产生
      • MDIO 和 MDC:用于以太网的管理数据接口(控制和配置 PHY),由 GPIO52GPIO31 控制
      • RESET:控制 IP101GRI 复位,由 GPIO51 控制
    2. 打开 ethernetbasic 工程,选择好 COM 口和芯片型号,点击  进入设置,这里会打开一个新的标签:SDK Configuration editor 也就是 menuconfig,我们直接在搜索栏中搜索 ETH,看到此时内容已经检索,将下图中参数与之对应,即可:


    3. 接下来可以直接通过点击  编译、烧录、监视,完成后会在终端查看到程序启动,插入网线后可以获取到 IP,拔掉网线后断开动作,如图:


    4. 从路由器上可以查看到一个设备名为 espressif 的设备已经连接,此时 ESP32-P4-WIFI6-POE-ETH 已经连上网络了。


    2. SDMMC 示例

    ESP32-P4-WIFI6-POE-ETH 板载了一个 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-WIFI6-POE-ETH 上的 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;
      1. 打开 sdmmc 工程,选择好 COM 口和芯片型号,因为 demo 工程将引脚定义为宏,所以需要进行配置,当然也可以直接填入引脚数值。点击  进入设置,这里会打开一个新的标签:SDK Configuration editor 也就是 menuconfig,我们直接在搜索栏中搜索 sd,看到此时内容已经检索,并且示例配置已经配置,勾选上默认初始化且默认创建示例文件:


      2. 接下来插入准备好的 SD 卡,通过点击  编译、烧录、监视,完成后会在终端查看到命令菜单输出了目录下的文件内容:


    3. WIFI 联网示例

    ESP32-P4 本身不带 WIFI/BT 功能,而 ESP32-P4-WIFI6-POE-ETH 通过 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"
    1. 打开 wifistation 工程,进行组件的添加


    2. 如上图所示,是添加组件的具体步骤

      1. 打开 ESP-IDF Terminal。
      2. 在 Terminal 里将所需要的组件进行添加。
      3. 成功添加后,在工程项目中的 main 文件夹中会多出一个 idf_component.yml,此文件的作用已经在 ESP-IDF 工程目录章节说明过是用于管理项目组件的
      4. 打开后,可以看到已经添加上了 espressif/esp_hosted: "*"和 espressif/esp_wifi_remote: "*" 两个组件,在构建项目时,它们会被添加到项目中。
    3. 接下来可以通过点击  打开设置,输入 Example 检索,这里设置好要连接 WIFI 的 ssid 和 password注意 ESP32-C6 是支持 2.4GHz 的 WiFi-6,在选择目标 WiFi 时要确认好频率是 2.4GHz 的,修改完之后需要保存,否则会出错!


    4. 接下来可以直接通过点击  编译、烧录、监视,完成后会在终端查看到如下结果,此时 ESP32-P4-WIFI6-POE-ETH 已经接入 WIFI 并且联网了:


    4. I2S 音频示例

    I2S(Inter-IC Sound) 是一种用于传输音频数据的数字通信协议。I2S 是一种串行总线接口,主要用于音频设备之间的数字音频数据传输,例如数字音频处理器 (DSP)、数字-模拟转换器 (DAC)、模拟-数字转换器 (ADC) 和音频编解码器。 ESP32-P4 包含 1 个 I2S 外设。通过配置这些外设,可以借助 I2S 驱动来输入和输出采样数据。

    ESP32-P4-WIFI6-POE-ETH 板载了 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-WIFI6-POE-ETH 引脚
    MCLKGPIO13
    SCLKGPIO12
    ASDOUTGPIO11
    LRCKGPIO10
    DSDINGPIO9
    PA_Ctrl(功放芯片使能脚,高电平有效)GPIO53

    ESP32-P4-WIFI6-POE-ETH es8311 驱动使用了 ES8311 组件,使用时可以通过 IDF Component Manager 来添加。

    idf.py add-dependency "espressif/es8311"
    1. 打开 i2scodec 工程,进行组件的添加


      1. 打开 ESP-IDF Terminal。
      2. 在 Terminal 里将所需要的组件进行添加
      3. 成功添加后,在工程项目中的 main 文件夹中会多出一个 idf_component.yml,此文件的作用已经在 ESP-IDF 工程目录章节说明过是用于管理项目组件的
      4. 打开后,可以看到已经添加上了 espressif/es8311 组件,在构建项目时,它们会被添加到项目中
    2. 接下来可以通过点击  打开设置,搜索 Example,调整合适的音量


    3. 接上喇叭,可以直接通过点击 编译、烧录、监视,完成后会在终端查看到如下结果,此时 ESP32-P4-WIFI6-POE-ETH 已经在播放音频了


    4. 当在设置中设置 echo 模式时,音频将由麦克风收录,扬声器输出


    5. MIPI-DSI 点屏示例

    ESP32-P4-WIFI6-POE-ETH 使用 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-WIFI6-POE-ETH 开发板

    点屏步骤

    1. 配套屏幕驱动已封装为组件,组件位置位于 ESP Component Registry

    2. 选择对应工程打开,选择 esp32p4 核心,接下来可以直接通过点击  编译、烧录、监视,完成后可以查看屏幕已经点亮刷新色条了:



    高级

    1. ETH To WIFI

    此示例演示如何使用 ESP32-P4-WIFI6-POE-ETH 板载的 ESP32-C6 作为从机,使 ESP32-P4 驱动 IP101 注册网络后通过 ESP32-C6 实现 WiFi AP 功能

    所需硬件

    • ESP32-P4-WIFI6-POE-ETH 开发板

    运行步骤

    1. 打开工程后,选择 esp32p4 核心,接下来可以直接通过点击  编译、烧录、监视,完成后可以接上网线,查看 WiFi 进行上网。如果有选配合适的 PoE 模块则可以接上 PoE 交换机直接取电上网。

    2. LVGL HMI 人机交互

    本示例展示了 ESP32-P4 通过 MIPI DSI 接口将 LVGL 图像显示,可充分体现 ESP32-P4 强大的图像处理能力

    所需硬件

    • 配套 10.1 寸显示屏及其配件
    • ESP32-P4-WIFI6-POE-ETH 开发板

    点屏步骤

    1. 配套屏幕驱动已封装为组件,并且从 BSP 进行调用驱动。

    2. 打开工程后,通过 menuconfig Display 配置对应参数,选择 esp32p4 核心,接下来可以直接通过点击  编译、烧录、监视,完成后可以查看屏幕:







    综合玩法

    1. ESP-Phone

    本示例基于 ESP_Brookesia,展示了一个类似 Android 的界面,其中包含许多不同的应用程序。该示例使用了开发板的 MIPI-DSI 接口、MIPI-CSI 接口、ESP32-C6、SD 卡和音频接口。基于此示例,可以基于 ESP_Brookesia 创建一个使用案例,从而高效开发多媒体应用程序。

    所需硬件

    • 配套 10.1 寸显示屏及其配件
    • OV5647 或 SC2336 摄像头及排线
    • 8Ω 2W 喇叭
    • ESP32-P4-WIFI6-POE-ETH 开发板

    点屏步骤

    1. 配套屏幕驱动已封装为组件,组件位置位于 ESP Component Registry

    2. 打开工程后,选择 esp32p4 核心,接下来可以直接通过点击  编译、烧录、监视,完成后可以查看屏幕:







    相关资料

    1. 硬件资料

    2. 技术手册

    3. 示例程序


    技术支持

    周一-周五(9:30-6:30)周六(9:30-5:30)

    手机:13434470212

    邮箱:services04@spotpear.cn

    QQ:202004841