前言

之前因为工作和考研复习,没什么时间发博客,一年回来发现元力点全消了,趁考研复试前赶紧先发一篇质量文章回波血(TーT)~~复试完后我将系统发一系列ESP32P4相关的应用文章。预告:下一篇"ESP32P4之LVGL移植与应用"

本系列实际上是我之前工作期间接触ESP32P4时做的笔记,即使时至今日乐鑫的ESP32P4也刚市场发布不到一年,资源文章还是很少,相信本系列博客可以帮助到更多友友们。٩(◕‿◕。)۶

FreeRTOS-ESP32学习笔记:https://www.yuque.com/lonlypan/bilibili/ltqkr6f6agpzsbmv

ESP32-P4环境安装

esp32p4环境搭建前必须确保电脑的vscode已经安装了platformio环境,没安装的可以参考下面

https://blog.csdn.net/qq_29350001/article/details/142264390VSCODE+PlatformIO环境安装

(博客教程):https://blog.csdn.net/qq_29350001/article/details/142264390

(视频教程):https://www.bilibili.com/video/BV1tv411w74d/?spm_id_from=333.337.search-card.all.click&vd_source=503e150918dad35505b8fa1320547290

PlatformIO环境安装ESP32P4支持包

ESP32P4:400MHz(实际360MHz), 512KB DRAM, 16MB Flash,32MB PSRAM
1.vscode添加pioarduino IDE拓展
2.随便进入一个esp32的项目工程,在ini配置文件中添加 platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
等待输出控制台下载安装,直至结束输出Project has been successful updated! 此时esp32p4已经被添加到board中
3.新建工程,选择board:esp32-p4-evboard,等待可能约10分钟左右,工程创建成功
5.如若烧录后使用系统终端没有任何输出,可以添加如下两行build_flags
[env:esp32-p4-evboard]
platform = espressif32
board = esp32-p4-evboard
framework = arduino
monitor_speed = 115200
build_flags =
-DARDUINO_USB_MODE=1
-DARDUINO_USB_CDC_ON_BOOT=1

WIFI固件烧录

由于 ESP32-P4 本身不具备内置 Wi-Fi 模块,必须借助外部无线模块实现无线连接,所以面板额外搭载一块 ESP32C6 用于实现WIFI通信。ESP32P4 与 ESP32C6 通过 SDIO 接口通信,p4 作为host,c6 作为slave,对于新的板子需要手动对 c6 烧录固件,p4方才可以实现 wifi 功能。
esp32c6烧录固件
使用串口烧录,数据线连接esp32c6串口,打开vscode的ESP-IDF,可以随便新建一个demo,左下角设置目标芯片为esp32c6,端口号选择对应端口号
  1. 首先安装 esp_wifi_remote 和esp_hosted模块的依赖。打开idf终端输入如下命令。执行该命令后,系统会自动生成 idf_component.yml 文件,并在编译过程中自动下载相应依赖。
    idf.py add-dependency "espressif/esp_wifi_remote"
    idf.py add-dependency "espressif/esp_hosted"
  2. 打开menuconfig,搜索“remote”,确保“slave target”为esp32c6,"WIFI-remote implementation"为ESP-HOSTED
  3. 搜索"hosted",选择连接接口,确保选择的是SDIO
  4. 最后编译烧录ESP-Host固件到ESP32C6中:在ESP32P4的工程目录下编译即可,用IDF终端打开工程文件夹,先后执行以下命令
    idf.py -C managed_components/espressif__esp_hosted/slave/ -B build_slave set-target esp32c6
    idf.py -C managed_components/espressif__esp_hosted/slave/ -B build_slave build flash monitor -p COM1 # ESP32C6连接的COM口

2 分区表

0x0000 ┌───────────────────┐

│ Bootloader │

0x8000 ├───────────────────┤

│ Partition Table │

0x9000 ├───────────────────┤

│ NVS │ ← 设备配置

0xF000 ├───────────────────┤

│ PHY Init │ ← RF参数

0x10000├───────────────────┤

│ Factory App │ ← 主固件

├───────────────────┤

│ Storage │ ← SPIFFS文件系统

├───────────────────┤

│ Coredump │ ← 崩溃日志

└───────────────────┘

# Name,   Type, SubType, Offset,  Size, Flags
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000, 
factory,  app,  factory, ,        8M,
storage,  data, spiffs,  ,        7M,
coredump, data, coredump, ,       0x10000, 

3 LVGL platformio ini配置(库依赖安装)

注:手动创建partitions.csv,内容复制粘贴为上面分区表并放在项目的include目录下

[env:esp32-p4-evboard]
platform = espressif32
board = esp32-p4-evboard
framework = arduino
board_build.flash_mode = qio
upload_speed = 921600
monitor_speed = 115200
board_build.partitions = include/partitions.csv

至此,PlatformIO下的ESP32P4开发环境就搭建好啦,下面就可以像ESP32S3那样写程序了。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐