2024年5月2日发(作者:)

ELECTRONICS WORLD

技术交流

基于STM32的多功能音乐播放器设计

以音乐播放器为研究对象,提出一种基于STM32的音乐播放器

的硬件和软件的设计方法,系统以STM32F103ZET6为控制核心,

音频解码芯片VS1053B实现音频数据解码,挂载FATFS文件系统实

现对SD卡中的音频文件进行读取,利用FFT快速傅里叶变换将音频

信号转为频谱,加入了一个小型GUI显示界面配合OLED显示屏,

实时的将界面、播放状态以及频谱生动的展示出来,此外还加入了

蓝牙音频功能,通过手机蓝牙即可连接播放器播放音乐。实验表

明,该音乐播放器连接耳机能流畅播放多种格式的音乐文件,具有

多功能、高性能、低功耗、操作方便、稳定可靠等特点。

引言:音乐可能是人类史上最古老、最具普遍性以及感染力的

艺术形式之一。音乐能提高人的审美能力,净化人们的心灵,树立

崇高的理想。不论时代怎么发展,人们的生活娱乐都离不开音乐。

因此,设计一款简单实用,多功能化的音乐播放器完全可以符合人

们的爱好及需求。本文介绍一种基于STM32F103处理器的SDIO接

口模块及外围音频解码芯片实现一个SD卡的音乐播放器,它读取

存储在SD卡里的音频格式文件,并通过立体声音解码芯片输出,

能进行频谱显示,还可以通过手机蓝牙与其连接播放音乐等功能。

1.系统硬件电路设计

基于STM32F103VET6微控制器所设计的MP3播放器,主要包

括:存储模块、蓝牙音频模块、音频解码模块、显示模块。系统

方案设计的系统框图如图1所示。主控制器芯片,利用其SDIO接口

不断读取SD卡音频文件送入缓存区;使用了三组SPI接口,第一组

SPI接口将读取的音频数据流送至音频解码芯片VS1053进行解码,

第二组SPI接口连接了字库存储芯片,用于显示歌曲名等,第三组

SPI接口连接OLED显示屏幕实现人机交互以及显示歌曲信息和频

谱等;使用了一个定时器、一个DMA以及一个ADC通道实时快速

采集音频输出,并利用FFT将其从时域转换为频域;使用通用IO控

制蓝牙以及音频切换芯片和键盘。控制键盘用以选择曲目、控制音

量、控制频谱显示等功能。

1.1 STM32F103ZET6主控芯片

本系统采用的是由ST公司推出的基于Cortex-M3内核的ST-

M32F103ZET6增强型32位低功耗ARM处理器。其工作频率为

72MHz,内置高速存储器,丰富的增强型I/O端口和联接到2条

APB总线的外设。包含2个基本定时器、4个通用定时器、2个高级

定时器、2个DMA控制器(共12个通道)、3个12位ADC、1个12

位DAC,还包含标准和先进的通信接口:3个SPI、5个串口、1个

USB、1个SDIO接口、2个IIC、1个CAN、1个FSMC接口以及112个

通用IO口。STM32较市场上同种类的单片机具有超级的价格、超多

的外设、优异的实时性能、杰出的功耗控制、极低的开发成本等优

绵阳职业技术学院 罗金生 王荣海 李 岷 刘 成

势。高达512K字节的闪存和64K字节的大容量SRAM以及丰富的外

设接口满足大型程序的设计要求。

图1 系统框图

1.2 Micro SD存储卡

本设计选择Micro SD卡作为音乐存储卡。由于它体积小、数

据传输速度快、可热插拔、存储容量大、价格便宜等特点,被广

泛地于便携式装置上使用。STM32控制器目前最高支持v2.0定义

的SD卡。使用前应确定SD卡为FAT32文件格式,同时将*.MP3,

*.WAV,*.WMA,*.FLAC,*.OGG,*.MIDI,*.AAC等格式的音

频文件复制到SD卡中的MUSIC目录。使用STM32F103的SDIO接口

访问SD卡。SD卡主要引脚和功能有:CLK信号为HOST给DEVICE

的时钟信号。CMD信号:双向的信号,用于传送命令和反应。

DAT0-DAT3信号:四条用于传送的数据线。VDD信号:电源信

号。VSS1,VSS2:电源地信号。

1.3 VS1053音频解码芯片

VS1053是一款利用SPI通讯的音频解码模块,支持大部分的

音频文件的解码播放和编码保存,是单片Ogg Vorbis/MP3/AAC/

WMA/MIDI音频解码器,及IMA ADPCM编码器和用户加载的Ogg

Vorbis编码器。它包含了一个高性能、有专利的低功耗DSP处理器

内核VS_DSP4、工作数据存储器、供用户应用程序和任何固化解

码器一起运行的16KiB指令RAM及0.5KiB多的数据RAM、串行的

控制和输入数据接口、最多8个可用的通用I/O引脚、一个UART、

并有一个优质的可变采样率立体声ADC和立体声DAC、和跟随的

一个耳机功放及一个公共电压缓冲器。主控制器通过SPI接口将读

取的音频数据流送至VS1053进行解码音频数据流,VS1053自动解

码并输出。

1.4 OLED显示

OLED由于同时具备自发光、广角度、耗电低、反应速度快、

123

ELECTRONICS WORLD

技术交流

对比度高和厚度薄等优异特性,被认为是下一代的平面显示器新兴

应用技术。

选用128×64分辨率的OLED显示屏来进行实时显示当前的

播放信息。播放信息主要显示歌曲名字、歌曲总时间和已播放时

间、歌曲码率、歌曲总数量、当前播放歌曲序列和当前音量等。

主控制器与显示屏采用SPI接口串行连接,D0为时钟信号线、D1

为串行数据线、RES为复位引脚、DC为数据/命令的选择线、CS是

芯片的片选信号。

1.5 字库存储

本设计采用GBK字库,由于字库较大,所以存储到外部

FLASH芯片W25Q128里,用于显示歌名等信息。W25Q128是华邦

公司推出的大容量SPI FLASH产品,W25Q128的容量为128Mbit。

支持多达10W次擦写周期,具有20年的数据保存期限,工作电压为

2.7~3.6V。主控制器与W25Q128通信采用标准SPI方式。

1.6 蓝牙音频

蓝牙音频是依靠蓝牙传输协议进行音频传输,不需要用数据线或

音频线连接,更精简,更清爽。本设计使用的是蓝牙4.0立体声音频模

块,保证音质的同时节约了成本。1、2引脚为VCC和GND,3、4引脚

为左右声道,5脚是MUTE输出开关,6脚为状态指示灯,7脚为控制开

关,主控使用2个通用I/O读取状态并进行控制。

1.7 音频切换

由于VS1053和蓝牙的音频输出共用一个耳机接口,为了避免

相互干扰,保证音质,加入了模拟通道切换芯片74HC4052,实现

本地MP3和蓝牙音频之间的输出切换。74HC4052是一块带有公共

使能输入控制位的2路四选一模拟开关电路。每一个多路选择开关

都有四个独立的输入/输出(Y0到Y3)、一个公共的输入/输出端

(Z)和选择输入端(A)。公共使能输入控制位包括两个选择输

入端A0、A1和一个低有效的使能输入端E。74HC4052主要应用于

模拟多路选择开关、数字多路选择开关及信号选通。

2 FATFS文件系统以及FFT概述

2.1 FATFS文件系统

FATFS是一个为小型嵌入式系统设计的通用FAT(File Allocation

Table)文件系统模块。FATFS的编写遵循ANSI C,并且完全与磁盘

I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低

成本的微控制器中,如AVR,8051,PIC,ARM,Z80,68K等等。

为了存储和管理音乐文件,对于SD卡这类大容量设备,本例

选用FATFS文件系统记录存放的物理地址和剩余空间。编写SD卡驱

动,移植FATFS文件系,编写MP3驱动程序和应用程序,就可以利

用STM32读取存储在SD卡上MP3数据文件,然后送入VS1053进行

解码并进行正常的播放。

2.2 FFT(快速傅里叶变换)的作用

非周期性连续时间信号x(t)可以在频域表示出来,音乐信号

也可以在频域直观的表示出来。在人耳能听到的频率范围(20-

20KHz)中。根据采样定理设置采样频率为10KHz,来采集这

0-5KHz的音频信号。显示是使用的OLED屏,分辨率为128*64,在

124

x轴方向上最多显示128个点,所以本例把采样点数设置为256个点,

因为FFT计算出来的数据是对称的,我们只取一半,128个点刚刚好。

设置定时器采样频率为10KHz,去触发ADC转换,再使用DMA搬运,

最后使用stm32cubemx去配置这些硬件,生成基础代码。

2.3 UCGUI图形用户界面

uCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任

何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制

器的图形用户接口,它适用单任务或是多任务系统环境,并适用

于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它

的设计架构是模块化的,由不同的模块中的不同层组成,由一个

LCD驱动层来包含所有对LCD的具体图形操作,uCGUI可以在任

何的CPU上运行,因为它是100%的标准C代码编写的。uCGUI能

够适应大多数的使用黑白或彩色LCD的应用,它提供非常好的允

许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少

RAM的窗口管理体。

3 系统软件设计

(1)初始化OLED显示、按键、蓝牙、字库芯片、SD卡、

VS1053音频解码芯片、音频切换芯片、FFT相关资源、GUI显示、

FATFS文件系统等。初始化程序如下所示:

(2)检查字库是否完整,不完整则从SD卡更新字库,并开始音

乐播放器任务调度。

(3)如果开启了频谱显示,FFT使用定时器2周期性经过DMA利

用ADC通道高速采样256点并存储在缓冲区,使用STM公司提供的

DSP库中的函数【void cr4_fft_256_stm32(void *pssOUT, void *ps-

sIN,uint16_t Nbin)】实现FFT转换。

4 实现效果

通电运行,0.96寸OLED屏幕上显示主菜单功能选择界面,选

择进入相应功能,音乐为本地MP3,自动读取并顺序播放内存卡里

面的歌曲并显示播放状态,可通过键盘实现切换频谱显示界面、

上一首、下一首、加音量和减音量等操作,可以实现最高256Kbps

ELECTRONICS WORLD

技术交流

个系统具有高性能、低功耗、操作方便、稳

定可靠等特点。

参考:杨明极,陈方县,吴学君,嵌

入式系统中SD卡的FAT32文件系统的设计:

电声技术,2010,4(04):36-39;叶桂锐,

基于Android平台的音乐播放系统歌词匹

配功能的设计与实现:电脑知识与技术,

2017(21):68-70;张琦,基于Android的音

乐播放器设计与实现:电子技术与软件工

程,2017(14):40;邢方诚,王素珍,宗卫

华,王涛,ATmega328p的音频信号最小系

图2 实物效果图

统播放器设计:单片机与嵌入式系统应用,

2016(6):25-27;何冰,一种基于单片机的MP3音频播放器设计:电

子设计工程,2016(6):142-144;张学慧,朱爱珍,基于STM32的

嵌入式MP3播放器的研究:电子世界,2012(8):22-24;高云红,

刘志群,基于STM32的多功能音频播放器的设计:福建电脑,

2012(12):108-110;杨丽娟,张白桦,叶旭桢,快速傅里叶变换FFT

及其应用:光电工程,2004(S1):1-3;程望斌,郑仁伍,阳均,

等.基于STM32的MP3播放器的设计:湖南理工学院学报:自然科学

版,2017(3):50-53。

的高音质歌曲的流畅播放;蓝牙为蓝牙音频模式,进入后打开蓝

牙,蓝牙进入等待配对模式,配对完成后即可开始播放。实物如

图2所示。

5 结语

本文提出了一种基于STM32的多功能音乐播放器的设计方案,

并对该设计的各部分功能设计方法进行了详细介绍。该方案对于需

要嵌入式媒体播放器的工业控制、车载播放器等行业具有一定的研

究价值。方案设计中涉及FATFS文件管理系统、GUI图形用户界面

和快速傅里叶变换(FFT)对嵌入式的设计具有一定的参考性。整

作者简介:罗金生(1986—),四川绵阳人,硕士研究生,助教,

研究方向:物联网技术、嵌入式技术。

(上接第122页)

由本文提出的串脉冲调频调制技术设计的500W高压脉冲电源

已成功的运用到北京工业大学阴极材料发射测试课题高压电源中,

电源一直在稳定可靠的工作中。

参考:K,ICH,E,

Wavelength-modulation spectroscopy using a frequency-doubled cur-

rent-modulated diode laser:Applied Physics B,2002(74):569-575;

Sakugawa.T,Matsumoto.Y,t capacitor charge using

resonant MOSFET inverter:Pulsed Power Conference(PPC),2011:1398-

1401;梁国忠,梁作亮.激光电源电路:兵器工业出版社,1992;波尔

科夫(И·В·Волков),[苏]巴枯连柯(В·М·Вакуленка)

著,激光器的电源:科学出版社,1980:132-137;王志强等译.开关电

源设计:电子工业出版社,2005;Sakugawa.T,Matsumoto.Y,Itoh.

t capacitor charge using a resonant MOSFET inverter:Pulsed

Power Conference(PPC),2011:1398-1401;SitiZulaikhaNgah Demon,

Abdul RahmanTamuri, Voltage Switch Mode Power

Supply For Laser System:2009 International Conference for Technical

Postgraduates(TECHPOS),2009:1-4;陈洪海,胡宝共,聂凤明,

等.YAG 脉冲激光电源硬件电路的设计:电子设计工程,2011,

19(4):85-87;李鹤轩.电力电子技术的发展动向:新技术新工艺,

2005(6):10-12;曾忠,王慧贞.谐振充电式脉冲激光电源的研制:电

力电子技术,2001,35(1):19-20;Lowery,Thomas, David.

Applying PWM-inverter Power to Low-voltage Induction Motors:Why

Should Engineers Be Conference Record of Annual

Conference of Electrical Engineering Problems in the Rubber and

Plastics Industries(1993):114-119;黄赞武.高频开关电源设计:中国

农业大学硕士论文,2000:36-42。

作者简介:

初智慧(1993—),男,硕士研究生,主要研究方向:集成电路与

片上系统。

高旭(1987—),女,博士,讲师,主要研究方向:光电位移精密

测量技术。

揣雅惠(1986—),女,博士,讲师,主要研究方向:红外透明导

电膜。 

梁伟【通信作者】(1969—),男,博士,副教授,主要研究方

向:激光与物质相互作用及脉冲源研究。

125