本帖最后由 muyichuan2012 于 2024-11-7 09:41 编辑
AT32F437音乐播放器 可解码MP3、WAV、APE、FLAC 音频格式
4.22.1 简介
AT32 SUFR 板载了一颗型号为WM8988 的音频编解码芯片,WM8988 是一款低功耗、高质量的立
体声编解码器,专为便携式数字音频应用而设计。该芯片集成了到2 个立体声耳机或线路输出端
口,对外部组件要求大大降低。
WM8988 可以作为主机或从机运行,支持各种时钟频率,包括12 或24MHz USB 设备,或标准
256fs 速率,如12.288MHz 和24.576MHz。支持不同的音频采样率,如96kHz,48kHz、
44.1kHz。
WM8988 可在1.8~3.6V 的电源电压下工作,采用非常小而薄的4x4mm COL 封装,非常适合手持和
便携使用系统。
例程中实现了从SD 卡里面读取歌曲,然后经过软件解码后,将音频数据发送到WM8988 芯片实现
音乐的播放。目前实现了MP3、WAV、APE、FLAC 格式的音乐播放,在使用时需要将音乐文件放
在SD 卡根目录MUSIC 文件夹下。
4.22.2 资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\audio
4.22.3 硬件设计
本案例使用的硬件资源有TFT LCD 液晶显示屏、PCA9555 IO 扩展芯片、WM8988、SD 卡、按键,
对应的引脚如下:
对应的电路原理如下:
4.22.4 软件设计
1) 音频测试
初始化TFT LCD
初始化SD 卡
初始化WM8988 音频芯片
播放音乐
将音乐信息显示在LCD 屏上
通过按键控制歌曲切换、播放、暂停
使用滑动变阻器进行音量控制
2) 代码介绍
main 函数代码描述
int main(void)
{
/* 初始化系统时钟 */
system_clock_config();
/* 初始化中断优先级分组 */
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
/* 初始化延时函数 */
delay_init();
/* 初始化LCD */
lcd_init(LCD_DISPLAY_VERTICAL);
/* 显示信息 */
lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"Audio Test");
/* 初始化文件系统 */
if(file_system_init() != SUCCESS)
{
lcd_string_show(10, 55, 300, 24, 24, (uint8_t *)"sd card init error");
while(1);
}
/* 初始化IO 扩展芯片 */
pca9555_init(PCA_I2C_CLKCTRL_100K);
/* 初始化按键 */
key_init();
/* 初始化滑动变阻器 */
variable_resistor_init();
/* 初始化音频芯片 */
audio_init();
/* 播放音乐 */
music_play(&audio_info);
while(1)
{
}
}
下载验证
上电后自动寻找SD 卡里的音乐文件进行播放
使用按键“KEY1”、”KEY2”进行歌曲切换,使用JoyStick 的“确认”键暂停或者播放音乐
使用滑动变阻器进行音量控制
将歌曲信息显示在LCD 屏上
B站视频效果
源码下载地址:https://www.arterytek.com/file/download/2210
AT32F435_437_Firmware_Library/ project / at_surf_f437 / examples / audio 文件夹里 |