STM32
直播中

李泽坚

7年用户 1342经验值
私信 关注
[问答]

如何去实现一种基于STM32的MP3播放器设计呢

基于STM32的MP3播放器是由哪些部分组成的?
如何去实现一种基于STM32的MP3播放器设计呢?

回帖(1)

刘先睿

2021-11-11 11:01:44
  前言
  MP3全称是MPEG Layer 3,狭义的讲就是以MPEG Layer 3标准压缩编码的一种音频文件格式,是一种高质量音乐压缩标准,给音频产业带来了具大的冲击,采用MP3压缩的数据量可以缩小到1/12,音质却没有多少损失,近乎于CD的音质。我们都知道传统音乐文件在网络上传播时,主要用Winamp等播放软件进行播放,使MP3音乐无法脱离计算机进行播放,给音乐欣赏带来不便,而由于人们对MP3音乐的较小数据量和高质量的播放效果所吸引,开始想办法将MP3音乐播放功能单独分离出来,这样就产生了MP3播放器。它的记录媒介是芯片或SD卡,无需转动部件,彻底摆脱了磁带和光碟的束缚,因而抗震和节电性能更好。随着MP3播放器技术的发展,人们对MP3播放器的要求也越来越高,制造商在MP3播放器的选型设计开发和功能等领域等方面做了很多努力,便携式多功能MP3播放器的应用也越来越具有实际应用价值和潜在的市场要求,各大公司纷纷推出了自己的MP3播放器产品,IC供应商也提供了众多的MP3解码芯片及其解决方案,这使得MP3播放器的研制与生产变得更加容易,成本也大大降低,市场更加广阔。以前的MP3播放器大部分都是基于ARM公司最新Cortex-M3内核的STM32系列微控制器,利用该处理器内置的SPI接口对SD存储卡进行控制,并对MP3音频文件进行硬解码或者软解码实现MP3的播放,并使用LCD显示歌词、调节音量等,还有的扩展了USB连接,使MP3播放器可以直接从PC上拷贝音频文件等。
  主题
  1、常用模块
  MP3播放器一般设计方案是以微控制器为主控芯片,比如STM32,从SD卡中读取音乐文件的数据,送音频解码芯片进行解码,通过数模转换器将解出来的数字信号转换成模拟信号,再把转换后的模拟音频放大,低通滤波后送到耳机。有的还加入了USB连接,PC机可通过USB接口直接对SD卡进行读写操作,以方便拷贝音频文件。下面先来介绍一下几个常用模块。
  1.1、STM32微处理器
  Cortex M3是ARM公司最新推出的基于ARM v7体系架构的处理器核, 具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。ARM v7架构采用了Thumb 2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的, 并且保持了对现存ARM解决方案完整的代码兼容性。Thumb 2技术比纯ARM代码少使用31%的内存, 减小了系统开销, 同时能够提供比Thumb技术高出38%的性能。在中断处理方面,Cortex M3集成了嵌套向量中断控制器NVIC ( Nested Vectored Interrupt Controller )。NVIC是Cortex M3处理器的一个紧耦合部分,可以配置1~240个带有256个优先级、8级抢占优先权的物理中断,为处理器提供出色的异常处理能力。同时,抢占、尾链、迟到技术的使用,大大缩短了异常事件的响应时间。Cortex M3异常处理过程中有硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。此外Cortex M3还具备高度集成化的特点,大大减小了芯片面积,内部集成了许多紧耦合系统外设,合理利用了芯片空间, 使系统满足下一代产品的控制需求。STM 32系列是基于Cortex M3核的微控制器,它在Cortex M3内核的基础上扩展了高性能的外围设备。
  1.2、音频编解码器
  现在的MP3播放器有采用VS1053音频编解码芯片作为音频文件的硬件解码方案,VS1053能解码MP3、WMA、WAV等格式的音频文件,并且还能进行ADPCM编码,包含一个低功耗,高性能的DSP处理器,VS1053采用SPI的通信方式,通过判断DREQ来控制数据传输,如果此引脚为高电平则发送数据,如果为低电平则停止发送数据,因为音频编解码芯片自带立体DAC输出,如果解码成功,可以用示波器从LEFT和RIGHT引脚测得波形,并能够直接驱动耳机。当然也有使用VS1003音频编解码芯片的,它内部包含1个高性能、低功耗的DSP处理核,1个工作内存,1片可供用户程序使用的5. 5KB RAM,1个串行SPI总线接口,1个高质量的采样频率可调的过采样DAC以及1个16位的采样ADC。无论是选择VS1003还是VS1053,MP3播放过程是STM32通过SPI接口将数据从SD卡中取出, 然后通过SPI接口送至解码芯片VS1003/VS1053解码播放。
  1.3、TFT液晶显示模块
  一般传统的显示屏都是使用LCD1602或LCD12864,由于它们像素和图片显示效果不佳,后来MP3播放器都采用了TFT-LCD,它的显示驱动芯片一般采用ILI9320,其有320*240的分辨率,供电电压2.5~3.3V,16位数据接口,高的对比,高亮度,低功耗模拟电阻式触摸屏。
  1.4、SD卡模块
  一般MP3播放器系统需要大容量的存储器来保存音乐、图片、汉字字库等文件,而EEPROM的容量不足以满足MP3播放器系统的需求,所以在MP3播放器设计中需要添加一个SD卡模块。SD卡即安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,如今己在各种嵌入式设备上得到了广泛的应用,它具有外观小巧安全性高数据传输率快存储容量大等优点。
  2、系统硬件设计
  MP3播放器的主要功能是播放常见的所有音频文件,如MP3、WMA、WAV文件,可控制音量增减,通过LCD显示歌曲名字和播放状态等,有的实现了读卡器功能,PC机可通过USB接口直接对SD卡进行读写操作,以方便拷贝音频文件,当MP3播放器插入到USB接口时,系统执行USB通讯功能。下面分别介绍传统MP3播放器系统的存储模块SD卡、解码芯片VS1003/VS1053与ST M 32的硬件连接情况。
  2.1、SD卡与STM32的连接
  一般使用STM32内部接口SPI与SD卡进行通信,具体的硬件引脚连接情况如下:
  一个普通IO口,低电平有效,连接到 SD卡的片选引脚CD/DATA3。SPI在和SD卡进行通信时,需要将这个普通IO口拉低才能对SD卡进行操作。
  STM32内部接口SPI的主输出从输入(MOSI)信号线。这里STM32是主设备, SD卡是从设备。数据流的传输方向是从STM32传输给SD卡。该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。
  STM32内部接口SPI的时钟(SCLK )信号线。可设置SPI的时钟频率来调整读取SD卡数据的快慢。
  STM32内部接口SPI的主输入从输出(MISO)信号线。数据的传输方向是从SD卡传输给STM32,主要返回SD卡的一些状态、内部寄存器值等。
  另一个普通IO口,用于检测SD卡是否完全插入。当SD卡完全插入时,这个IO口为低电平, 否则为高电平。
  2.2、音频编解码芯片与STM32的连接
  常规的设计是使用STM32内部接口SPI与音频编解码芯片进行通信,这里的音频编解码芯片可以是VS1003或者VS1053等,下面以这两款芯片来介绍其引脚连接情况。VS1003或者VS1053的中断请求引脚。当VS1003/VS1053内部数据已处理完毕,需要新的数据时,DREQ拉高。STM32根据这个信号来给VS1003/VS1053发送新的数据流。SCLK连接到STM32内部接口 SPI的时钟(SCLK)信号线。SO连接到STM32内部接口SPI的主输入从输出( MISO)信号线。这里STM32是主设备,音频编解码芯片是从设备。数据流的传输方向是从音频编解码芯片传输给 STM32。主要用于读取音频编解码芯片的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。SI连接到STM32内部接口SPI的主输出从输入(MOSI)信号线。这里STM32是主设备,音频编解码芯片是从设备。数据流方向是从STM32传输给音频编解码芯片,主要传输给音频编解码芯片一些控制命令、MP3/WMA数据流等。音频编解码芯片的片选CS是低电平有效,如果拉低该引脚,那么通过SPI传输的是控制信号。控制信号包括读写音频编解码芯片的内部寄存器、对音频编解码芯片进行初始化、设置左右声道音量等。DCS也是低电平有效,如果拉低该引脚,那么通过SPI传输的是数据信号。比如在向音频编解码芯片传输MP3/WMA的数据流时需要拉低该引脚。RESET引脚是低电平有效, 拉低该引脚则硬件复位音频编解码芯片。
  3、系统软件设计
  采用STM32为控制器方案的软件由集成开发工具MDK专业版开发,它具有强大的编译、 链接和调试功能。基本工作过程大致为是STM32通过一个SPI从SD卡中读取MP3/WMA文件,将所读取的数据流通过另一个SPI发送到音频编解码芯片中解码播放,如果有USB通信功能,PC机可通过USB总线读写SD卡的内容,传送MP3/WMA等文件,LCD显示屏用于显示MP3的文件名、 播放状态。由于STM32的一个SPI读取SD卡文件的速度远超过音频编解码芯片播放数据流的速度,因此音频编解码芯片在播放来自STM32的另一个SPI的数据流期间, 这个SPI能从SD卡中读取下次播放所需的数据,不会产生声音不连续的情况。由于使用了2个SPI接口,相互之间无干扰,且提高了文件系统的效率, 因此本系统能得到非常高品质的音乐。
  开机后首先检测硬件资源及软件资源,实现系统自检,自检完成后,自动加载功能菜单,并在触摸屏上显示,然后再根据用户在触摸屏上的选择,进行相应的操作。MP3播放器的核心功能是实现音频播放,这需要获得相应的音乐文件数据,根据文件的存储格式并结合SD卡读取驱动,得到相应的文件数据,每次读取多少个字节,当已经初始化完成并等待接收数据,DREQ引脚为高电平时,将读到的数据以每次32字节的速度送入到音频编解码芯片的RAM中,音频编解码芯片会自动去处理这些数据并得到模拟音频信号。
  总结
  上面介绍了一种基于STM32利用SPI读取SD卡里面的音频文件,在送音频编解码芯片硬解码,播放MP3音乐。但是这些设计只是做到了一个最基本的MP3播放器,主要功能有播放解码芯片支持的所有音频文件,如MP3、WMA、WAV文件,控制音量增减,通过LCD显示歌曲名字和播放状态等。现在音乐手机、PAD大行其道,他们都具备MP3播放功能,如果MP3播放器不改进,肯定是要被淘汰的。基于以上分析,MP3播放器最好设计成一个多功能的,比如是集音乐播放﹑电子图书、计算器、数码相框、照相机、FC游戏机、收音机、记事本、3D效果、手写画笔、录音机、USB连接和TOM猫等众多功能为一体的MP3播放器,实现触摸控制,良好的用户界面,让用户有更多功能可以体验。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分