ESP32S3如何使用官方的ADF框架

2,613 阅读2分钟

环境依赖

Win10
ESP-IDF: v4.4.6
开发板: ESP32S3
VSCode: 1.91.1 (system setup)

背景介绍

当我们要进行音频相关的开发时,我们通常需要依赖官方给出的 esp-adf 项目。如果你直接下载下来,设置 target 都是失败的。

解决方案

正确下载和安装 ADF 框架

这一步可以使用 VSCode 插件里自带的 Install ESP-ADF,也可以自己在官网下载:

image.png

下载完 ESP-ADF 之后,我们可以打开它的目录,默认我们是不需要它包含IDF子模块的,所以我们要移除IDF子模块。具体的操作过程为:

git submodule deinit -f esp-idf
rm -rf .git/modules/esp-idf
git rm -f esp-idf

然后,我们需要保证其它子模块是正常已经安装好的:

git submodule update --init --recursive --depth 1

下面我介绍三种解决办法:

1.使用 ESP-IDF 4.4 PowerShell 来工作

如果你是一个命令行的高手,之前已经习惯了使用命令行。你可以只是添加一下 ADF 的目录,之后打开就都可以找到ADF相关的内容了。

具体的修改方式是,我们打开 Espressif 所在的目录,找到 Initialize-Idf.ps1,编辑这个文件,直接在

$env:PATH="$env:IDF_TOOLS_PATH;$env:PATH"

的后面添加上一个环境变量即可:

$env:ADF_PATH="D:\Software\Espressif\esp-adf"
Write-Output "Setting ADF_PATH: $env:ADF_PATH"

这样,你每次打开桌面上的 ESP-IDF 4.4 PowerShell,就会看到类似于这样的显示:

image.png

2.直接修改项目的 CMakeLists.txt

很多时候,我们开发人员很依赖IDE,很希望不再打开一个命令行进行操作。那么我们再介绍一种只修改当前项目 CMakeLists.txt的方式。

我们先拷贝 ADF 下的其中一个 example:get-started\play_mp3_control

VSCode 中,我们直接设置目标芯片为esp32s3会发生下面的错误:

首先告诉我们无法 include 文件:

CMake Error at CMakeLists.txt:10 (include):
  include could not find requested file:

    /CMakeLists.txt

后面的日志还会再次提醒,没有ADF框架中的一个叫audio_sal的组件:

CMake Error at D:/Software/Espressif/frameworks/esp-idf-v4.4.6/tools/cmake/build.cmake:201 (message):
  Failed to resolve component 'audio_sal'.

其实,CMakeLists.txt:10 (include)所指出的 include 失败,就是因为这一句:

include($ENV{ADF_PATH}/CMakeLists.txt)

里面的 $ENV{ADF_PATH} 是空的,遇到这种情况,我们修改一下这个脚本,把它和 IDF_PATH 都打印出来,就一目了然了。

我们可以将 CMakeLists.txt 改为:

cmake_minimum_required(VERSION 3.5)
message("Current IDF_PATH is " $ENV{IDF_PATH})
message("Current ADF_PATH is " $ENV{ADF_PATH})
include($ENV{ADF_PATH}/CMakeLists.txt)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(play_mp3_control)

可以发现,当我们再次尝试设置目标芯片,OUTPUT 日志中打印出来这样的内容:

Current IDF_PATH is D:/Software/Espressif/frameworks/esp-idf-v4.4.6/
Current ADF_PATH is 

CMake Error at CMakeLists.txt:10 (include):
  include could not find requested file:

    /CMakeLists.txt

所以我们可以手动指定 ADF_PATH ,也就是把 CMakeLists.txt 调整为:

cmake_minimum_required(VERSION 3.5)
set(ENV{ADF_PATH} D:/Software/Espressif/esp-adf)
message("Current IDF_PATH is " $ENV{IDF_PATH})
message("Current ADF_PATH is " $ENV{ADF_PATH})
include($ENV{ADF_PATH}/CMakeLists.txt)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(play_mp3_control)

然后就运行正常了。

💡 大家之后遇到困难,也要多看日志,有好多框架引入失败就是某个环境变量没有设置成功导致。

3.修改插件配置

还有一种一劳永逸的办法,是ESP-IDF插件给Win用户创建的配置😊,你可以打开 Settings(快捷键是 Ctrl+,),直接搜索 esp adf

把带 Win 的配置 Idf: Esp Adf Path Win 写上 ADF_PATH 路径就可以,这样我们就能在后续的项目中顺利使用啦!

image.png

结语

以上就是ESP32S3下如何使用官方ADF框架的探索过程以及解决方案了,关于ADF框架,我们需要不断通过例程去学习如何使用它。

我推荐先跑通 get-started 里的三个项目,然后根据自己的业务场景来选择 —— 到底是录音还是语音唤醒?还是播放?还是……

欢迎大家在评论区华山论剑!

修改记录

时间内容
2024-08-05完成初稿