基于STM32 的多功能MP3 设计
2019-04-26张丽梅甘伯青易施光
文/张丽梅 甘伯青 易施光
随着经济发展和生活水平的提高,人们对于精神层面艺术享受的要求也越来越高。音乐作为一种老少皆宜、雅俗共享的艺术形式,吸引着成千上万的听众。
传统音乐文件在计算机上传播时,主要通过音乐播放软件进行播放,使音乐文件无法脱离计算机进行播放,给音乐欣赏带来不便。自1998年韩国世韩(Seahan)公司推出的第一款MP3 播放器面世以来,MP3 播放器就迅速地占领了消费电子产品市场。可是,自2005年之后,MP3 发生了巨大的变化,其销量迅速下降。而等到具备更多的功能的MP5 的面世后,MP3 面临更大的挑战,几乎被挤出了消费电子市场,MP5 一旦价格降下来,取代MP3 只是时间的问题。MP3 播放器的面临的严峻挑战及其技术的发展,使得人们对MP3播放器的要求越来越高。此外,嵌入式系统和人机交互技术的出现,成为了消费电子产品新的增长点,新的消费电子产品层出不穷,集成了MP3 的功能以及其它功能的新产品越来越受到消费者的青睐。基于以上背景,本设计基于STM32 平台,移植UCOSIII 嵌入式操作系统和GUI 嵌入式应用图形支持系统,形成一个完善的有人机交互接口的实时嵌入式系统,在这个平台上,采用STM32F405RGT6 高性能ARM 处理器作为核心控制芯片设计一个集成多种功能、实现人机交互的多功能MP3,该设计可以实现音频播放、图片浏览、电子书、娱乐游戏等多种功能。这种拥有MP3 的功能及其他功能、同时实现人机交互的嵌入式电子产品,将会在市场上受到消费者的青睐,具有实际应用价值和潜在的市场需求。
1 多功能MP3的总体设计
本文采用STM32F405RGT6 作为核心控制芯片,系统主要由电源、无线遥控、人机交互、FAT 文件系统、音频解码、功率放大以及音效处理等几个部分组成。该设计的主系统是由MCU 控制各部分协调运行,无线遥控部分通过LC12S 模块实现,FAT 文件系统采用SD卡存储,解码芯片VS1053 实现音频的解码,LN4890 芯片实现音频功率放大,整个设计主要由2.0 寸TFT 触摸屏控制输入和输出,人性化地实现人机交互的功能。
2 硬件设计
2.1 系统的主控部分
使用STM32F405RGT6 芯片作为系统主控芯片,该主控芯片是由意法半导体公司设计的一款32 位微处理器,内核是高性能的的Cortex-M4,这是一款高性能、低功耗、低成本的单片机。该芯片在软件和引脚方面对STM32 系列产品都有较好的兼容性,工作频率可达168 MHz。其FSMC 采用32 位多重AHB 总线矩阵,总线访问速度提高。
2.2 SD卡模块
本设计采用SD 卡存储FAT 文件系统,SD 卡使用的驱动模式是SPI 模式,可以通过驱动核心控制器上的SPI 接口访问SD 卡。本设计的SD 卡挂接在高性能控制器STM32F405的SPI1 上 面,STM32F405 的SPI 口 在168 MHz 主频的条件下,SPI 最高通信速率可以到37.5 MHz,足够播放任何格式的音频文件了。
2.3 液晶模块
使用2.0 寸TFT-LCD 液晶作为显示显示界面,LCD 与CPU 的接口初始化完成后,就可以对液晶屏的控制芯片进行控制,通过配置内部寄存器,实现液晶屏的扫描方式、横/竖屏显示以及像素点的颜色的确定。液晶的触摸屏是电阻式触摸屏,通过四导线制控制器XPT2046 控制。XPT2046 芯片内含逐步逼近型A/D 转换器,执行两次A/D 转换后,XPT2046 可以检测出被按的屏幕位置,进而返回相应的指令,用户可通过返回的指令控制执行相应的操作。
2.4 LC12S无线模块
本设计使用的LC12S 无线模块工作时处于免费的ISM 频段,工作频段为2.4GHz ~2.5 GHz。该模块具有成本造价低廉,易用性好,灵活性高,无线通讯的可靠性高等优势,支持串口透传,提供有通信协议,使用时无需了解复杂的无线通信知识,只需要了解串口通信。本设计由STC15W408AS 控制的无线模块发送数据,MCU 控制的无线模块接收数据,实现无线通信的开发。
2.5 VS1053解码模块和LN4890功放模块
VS1053 是继VS1003 后荷兰VLS 工公司出品的又一款高性能音频解码芯片,可以实现对MP3/OGG/WMA/FLAC/WAV/AAC/IVIID 等音频格式的解码,同时还可以支持ADPCM/OGG 等格式的编码,性能相比以往的VS1003提升了不少。解码电路如图1所示。
VS1053 工作时通过DREQ 引脚的高低电平控制是否写入数据,当DREQ 引脚电平为高时,MCU 向VS1053 发送32 Byte 的数据;反之,VS1053 则不写入数据。接收数据后,通过配置内部寄存器,实现频谱分析以及音量调节,处理后的数据通过LN4890 音频放大器,实现音频功率放大,进而驱动喇叭。
3 系统软件设计
要实现本设计的功能,要做的准备工作是在SD 卡内新建多个文件夹,分别用于存放音频文件、字库文件、图片文件以及游戏文件。做完这些工作后,把液晶屏驱动、触摸屏驱动、SD 卡驱动、VS1053 驱动、LC12S 无线模块驱动等驱动程序添加到工程中,通过UCOSIII实时操作系统调度整个程序的运行。
表1:LC12S 收发测试数据
表2:VS1053 和LN4890 收发测试数据
图1:VS1053 解码电路图
图2:程序流程图
3.1 GUI及UCOSIII操作系统
图3:音频播放界面
图4:频谱显示界面
软件系统以STEMWIN 的GUI(Graphical User Interface)为图形支持系统,以UCOSIII为操作系统。STEMWIN 是ST 和Segger 公司联合开发的嵌入式GUI 方案。UCOSIII 操作系统是Micrium 公司开发的一种可剥夺、可固化、可裁剪的微型的实时操作系统,具有任务调度、任务通信、内存管理、中断管理、定时管理等特性。
3.2 音频播放功能设计
音频播放功能是本设计的主要功能,通过处理FTA 文件系统和驱动SD 卡,得到音频文件数据,由解码芯片VS1053 实现音频的解码,由LN4890 功放模块实现音频功率放大。
音频播放支持MP3/WAV 文件;支持歌词显示、频谱显示、播放模式切换;支持音频左右切换、快进播放以及后台播放。本设计频谱分析的主要工作由VS1053B 来执行,通过写入频谱分析的处理代码,就能够让VS1053 在初始化后执行频谱分析的功能,CPU 需要做的就是在播放音频时,读取频谱分析的结果并实时分析处理,最终在液晶屏上实时显示,实现频谱显示的效果。
3.3 其它功能设计
本设计的其它功能包含电子书阅读、图片浏览、游戏娱乐、秒表计时、计算机以及设置功能。
电子书阅读、图片浏览和游戏娱乐功能在文件数据的读取与音乐播放功能一样,但是所读取的文件属性不一样。电子书阅读支持TXT 文件、C 文件、H 文件、LRC 歌词文件;图片浏览则支持BMP 文件。电子书阅读与图片浏览功能不需要做额外的数据处理,直接把读取的数据送给TFT-LCD即可实现相应功能。游戏娱乐功能要通过STC15W408AS 控制的无线模块控制游戏的选择和运行。设置功能结合带日历功能的RTC 时钟和TFT-LCD 实现,控制触屏控制,更改时间和日期以及查看内存和CPU 使用情况。计算机功能通过控制触摸屏,实现加减乘除运算。秒表计时通过控制重置、开始/暂停、计次三个触摸屏按键,实现秒表计时的功能。
3.4 主程序流程图
软件部分的设计主要是对解码芯片VS1053、LC12S 无 线 模 块、2.0 寸TFT-LCD以及SD 卡等各个硬件模块进行配置,对FAT文件系统的文件是否读取成功的判断,以及TFT-LCD 显示信息、控制输入输出的程序。程序流程如图2所示。
4 测试验证
为了产品质量的保证,进行了如下的测试:
4.1 LC12S无线模块测试
实验结果:如表1所示,STC15W408AS控制的LC12 模块正常发送数据,STM32 控制的LC12 模块正常接数据,可控制游戏运行。
4.2 VS1053和LN4890音频功放测试
实验结果:如表2所示,VS1053 正常执行音频解码、音量调节以及频谱分析的工作,LN4890 音频功放正常实现音频功率放大,本设计功能的实现正常。音频播放界面如图3所示,频谱显示界面如图4所示。
5 结束语
本设计实现多功能MP3,能够正常实现音频播放、图片浏览、电子书阅读、游戏娱乐、计算机、秒表计时和设置功能,该设计具有操作简单、稳定性高、音质好、能耗低等优点,具有实际应用价值和潜在的市场需求。