ESP32-S3模组上跑通ES8388(1)

本文内容参考:

从ESP32看ES8388低功耗音频芯片_es8388 芯片手册-优快云博客

esp32开发环境搭建和烧录测试-优快云博客

ESP-ADF入门——从play_mp3_control入门adf-优快云博客

[005] [ESP32开发笔记] ADF基本框架_esp32 adf-优快云博客

ESP32学习笔记(38)——播放MP3文件(外部Codec方式)_esp32 音乐转码-优快云博客

esp-adf框架笔记 1 概述_esp adf-优快云博客

特此致谢!

一、ESP-ADF介绍

要想使用ESP32-S3驱动ES8388、并在此基础上做应用,就绕不过去ESP-ASF。对此,其实笔者是持否定和鄙夷态度的,不知乐鑫是出于何种考虑,在ESP-IDF之外又单做了一个ESP-ADF。按照camera sensor那样直接放到IDF中不好吗,干嘛非得像Linux内核似的,把sound单独拎到driver目录之外。为此也咨询过乐鑫技术支持,他们答复说:“有一些音频组件已经有了,有些可能耦合比较多,就还没有”。

5f7ad5ef0b9a4e16955b960c7bf3d8c4.png

其实技术上是完全可以做到的。不过不管怎样,至少目前为止,(要玩ES8388)还是得用这个ADF框架和组件,那么就来了解一下ADF具体能干什么、又是怎么用的。

1. ESP-ADF是什么

ESP-ADF是乐鑫基于自家的ESP-IDF(乐鑫物联网开发框架,广泛运用于ESP32的SDK)开发的音频开发框架。IDF的英文全称是IoT Development Framework,而ADF的英文全称为Audio Development Framework。

ESP-ADF在ESP-IDF的基础上开发而成,具有高度的灵活性,既可作为一整套应用方案,面向配网、OTA(Over The Air)等各类应用场景,亦可作为开发平台,供开发人员搭建各类定制化应用场景。

ESP-ADF具有一系列丰富的功能特色,涵盖编解码器、发送端和接收端音频流、管线化支持、唤醒词引擎、以及其它各类服务和控制等。

ESP-ADF的整体框架如下:

483f153d7f9347e186f2d1a8f010ef38.png

乐鑫音频开发框架特性:

  • 支持音频编解码格式:MP3、AAC、WAV、OGG、AMR、TS、OPUS等
  • 支持EQ、Mixer、Resample等音效处理功能
  • 多音频流来源:HTTP、HLS(HTTP Live)、SD卡、Bluetooth A2DP/HFP
  • 支持多媒体交互:DLNA、Airplay、微信和Internet radio等
  • 云端语音接入:Alexa、DuerOS、Turing、IFLYTEK、TmallGenie、RooBo等
  • 应用场景:智能音箱、语音对讲机、语音播报机,以及其它音频类解决方案,如语音故事机和点读机。

2. ESP-ADF机制

由ESP-ADF框架图可以看出,ESP-ADF底层是基于ESP-IDF框架的。在此之上就是element(元素)、stream(数据流)、pipeline(管道)。再之上就是软件层具体的协议实现了,包括baidu DueroOS、Amazon Alexa等。

ESP-ADF是使用面向对象思想实现的,整个框架分层处理,保证每层都有相对的独立性。每个具体功能都定义成一个模块,最后为上层应用提供统一的接口。

在ESP-ADF中最底层应该是硬件的驱动和功能的实现,包括:音频编解码器芯片驱动(ESP8388、ES8374、ZL38063等)。然后就是诸如SD卡、LED、Wi-Fi等软件的基于ESP-IDF的重新封装。 在此之上则是软件个功能的实现(软件编解码MP3、WAV、AMR等,DLNA的协议,Recorder、Player)等。

ESP-ADF主要基于pipeline运行。pipeline是ADF实现音频处理的基础。可以将pipeline看作是流水线。音频数据从一头进、从另一头出。

每个pipeline中最基本的运行单元就是element。element就好比流水线上的工人,负责加工音频数据。每个element都由一个ringbuffer连接,每个element之间靠stream传送音频数据。

event监听流水线上所有工人的情况,用户可以通过msg得知。每个element都是一个任务

pipeline通过链表管理,即每个元素通过链表连接在一起,element和stream基于FreeRTOS的任务实现,即运行pipeline的同时会启动几个任务,基于队列、信号量、互斥体等机制实现数据的传输和消息的传递。

举例:

将MP3解码器和I2S流两个元素(element)添加进管道(pipeline)。解码器的输入是MP3文件数据流,I2S流将解码后的音频输出到音频解码器芯片。如下图所示:

cef02c8339b940f8b1661bf36453672f.png

ESP-ADF支持的elements和stream如下:

c3804470419645f9a447097f05701657.png

3. ES-IDF中如何添加ESP-ADF

这部分内容不是本系列的重点,在此不作详述,只把大体步骤贴出来。细节请参见以下文章,步骤写得比较详细:

esp32开发环境搭建和烧录测试-优快云博客

c0cb84427ad044c8ba36932670aa7db3.png

4fddd60afd004a1db11bfe6231bb3831.png

c005b9a0ce96485781f4d3c8956ae739.png

本回就讲到这里,下一回开始讲解ESP32-S3如何驱动和操作ES8388。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值