[应用相关] Audio Decode by HELIX MP3应用笔记

[复制链接]
77|0
MCU学习帮 发表于 2025-11-26 14:00 | 显示全部楼层 |阅读模式
AudioDecode by HELIX MP3应用笔记

前言
本应用笔记介绍了如何将开源Helix MP3解码算法移植到AT32F4xx单片机方法。本文档提供的源代码演示了使用Helix MP3解码算法的MP3播放器应用程序。该MP3播放器应用程序使用SDIO接口读取SD Card中的MP3文件,解码后通过一颗高品质的立体声编解码器WM8988进行播放。
本应用笔记的组织顺序如下:
1.  介绍 Helix MP3 解码算法。
2.  系统硬件、软件流程介绍。
3.  介绍应用所需硬件资源。
4.  使用应用程序需要的步骤。
注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。
支持型号列表:
  
支持型号
  
AT32F403系列
  
AT32F403A系列
  
AT32F407系列
  
AT32F413系列
  
AT32F415系列
备注:本文档仅供有需求的小伙伴们参考,如需源文档或者详细图示及操作步骤,请访问雅特力官网获取:https://www.arterytek.com/cn/support/index.jsp?index=1
1                 概述
MP3的全称为MPEG1 Layer-3音频文件,MPEG 音频文件是MPEG1标准中的声音部分,它根据压缩质量和编码复杂程度划分为Layer1、Layer2、Layer3三层,分别对应MP1、MP2、MP3这三种声音文件。其中MP3文件以一帧为一个编码单元,各帧编码数据是独立的。
1.1           关于HELIX MP3解码算法
Helix解码算法可用浮点和定点实现。将该算法移植到AT32单片机时可考虑定点实现。该算法可运行在任意32位定点处理器上,并完全使用C语言编码,可选择用优化的汇编指令替换某些代码段。
Helix提供对MPEG-1、MPEG-2和MPEG-2.5的第3层(Layer 3)支持。它支持可变位速率、恒定位速率,以及立体声和单声道音频格式。有关实现和特性的详细信息,请访问Helix社区:https://datatype.helixcommunity.org/Mp3dec。
1.2           基于AT32MP3播放器
本应用指南将介绍如何在AT32F403单片机上通过Helix解码算法实现MP3播放器,并提供基于AT32F4xx_StdPeriph_Lib和Helix算法的源代码。该MP3播放器应用程序使用SDIO接口读取SD Card中的MP3文件,解码后通过一颗高品质的立体声编解码器WM8988进行播放。而Artery提供了一块Audio EV Board,上面集成了Speaker、Microphone以及WM8988芯片电路。其中,对WM8988芯片的控制使用I2C接口,而音频数据传输使用I2S接口。结合AT-START Board可以方便快速的搭建起一套MP3播放器。
2                  软解MP3流程
了解了AT32软解MP3的硬件结构,下面我们来看一下系统软件流程;MP3解码的内核逻辑以状态机的形式在程序中实现。

当处于空闲状态时,状态机等待SD卡连接。设备连接后,代码尝试初始化SD卡文件系统。应用程序将搜索SD卡中的MUSIC文件夹下的MP3文件。如果找到文件,则将文件名存储在mp3indextbl []数组中。然后打开第一个文件,代码将搜索第一个帧起始点。如果找到帧起始点,将从文件读取该帧的其余部分并传递给解码函数。已解码的音频帧发送到WM8988音频DAC器件进行播放。文件读取和解码操作将继续,直到文件结尾;然后将关闭该文件并打开下一个文件。
3                  软解MP3使用方法3.1           硬件资源
1)   AT-START-F403A V1.0 实验板
2)   AT32 Audio EV Board V2.0 (WM8988)
3)   外接 SD Card
4)   3.5mm 接口耳机
注:所有project都是基于keil5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
注:该demo是基于AT32F403A的硬件条件,若需要在AT32其他型号上使用,请修改相应配置即可。
注:此AT-START板不包含SD卡电路,所以需要自行外接SD卡。
注:AT-STARTUSER_KEY默认使用PA0,此demo需要将USER_KEY使用的IO修改为PC13,修改方法参考电路图《AT_START_F403A_V1.0_SCH.pdf
3.2            软解MP3的使用
1.   在SD卡根目录下建立一个“MUSIC”文件夹,并在里面存放mp3格式的音乐文件;
2.   将SD卡连接到AT-START Board相应的引脚,参考 图5;
3.   打开MP3decode project源程序,编译后下载到实验板;
4.   连接3.5mm耳机到Audio EV Board的LINE_OUT接口;
5.   按RESET复位,即可播放音乐;
6.   音乐播放过程中可通过按键(B1/USER_KEY)进行暂停/播放、音量+/-、上一首/下一首等操作。
由于AT-STARTBoard 结合Audio EV Board使用时只提供两个按键,USER_KEY和B1。要实现上述复杂的暂停/播放、音量+/-、上一首/下一首操作需要对按键进行复用,按键逻辑如下:
USER_KEY
1)   循环切换B1的功能1 — 功能5
B1
1)   功能1:暂停/播放
2)   功能2:音量+
3)   功能3:音量-
4)   功能4:上一曲
5)   功能5:下一曲
另,可以连接USART1_TX(PA9),查看打印消息,包括音乐名,MP3帧头信息,出错信息等数据.

备注:本文档仅供有需求的小伙伴们参考,如需源文档或者详细图示及操作步骤,请访问雅特力官网获取:https://www.arterytek.com/cn/support/index.jsp?index=1




您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0