本帖最后由 muyichuan2012 于 2022-5-17 08:52 编辑
音乐播放器----AT_SURF案例22 20220517更新
1 已实现MP3软件解码
2 已实现WAV软件解码
3 已实现FLAC软件解码
4 已实现APE软件解码
简介
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 格式的音乐播放,在使用时需要将音乐文件放在SD 卡根目
录MUSIC 文件夹下。
资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\audio
硬件设计
本案例使用的硬件资源有TFT LCD 液晶显示屏、PCA9555 IO 扩展芯片、WM8988、SD 卡、按键,
对应的引脚如下:
表2. PCA9555 资源使用
编号 PIN Name 引脚功能 备注
1 IO0_2 功放电源开关 -
表3. 硬件资源使用
编号 PIN Name
1 PH2 I2C2 SCL
2 PH3 I2C2 SDA
3 PB12 I2S2_WS
4 PB13 I2S2_CK
5 PB14 I2S2_SDIN
6 PB15 I2S2_SDOUT
对应的电路原理如下:
图62. WM8988 跳线原理图
图63. WM8988 跳线原理图
软件设计
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 *)"sdcard init error"); while(1); } /* 初始化IO 扩展芯片 */ pca9555_init(PCA_I2C_CLKCTRL_100K); /* 初始化按键 */ key_init(); /* 初始化滑动变阻器 */ variable_resistor_init(); /* 初始化音频芯片 */ audio_init(); /* 播放音乐 */ music_play(); while(1) { } }
下载验证
上电后自动寻找SD 卡里的音乐文件进行播放
使用按键“KEY1”、”KEY2”进行歌曲切换
使用滑动变阻器进行音量控制
将歌曲信息显示在LCD 屏上
|