基于STM32音乐播放器的设计与实现
第一章 引言
1.1 课题背景及意义
随着生活水平的提高,人们现在追求更多的个性化的享受和需求,而音响就是在这 种条件下的时代产物。20世纪50年代,我国声学工业的主要产品是电子管式中短波收音机。改革开放后,随着国家的开放,中国与外国之间的交流日益频繁。许多中国人回国和探亲访友的礼物通常是一套大型音响或立体声录音机。80年代的立体声收录机普遍繁琐,技术含量不高。
进入新世纪以来,随着城市现有土地资源的紧张,房地产开发商在开发新的楼盘时更注重的是空间的搭配合 理性以及尽可能的满足现代人追求的精品生活方式,家居风格也随之发生转变。这时候迷你音乐播放器横空出世,应时而生。在最近几年里娱乐已成为个人电脑消费中的最大应用,它主要分布在音乐,多媒体,游戏,电影,这一切都与视听分不开的,用电脑组成家庭影院已成为一种潮流趋势,很多人认为音乐播放器只要能发声就行,但实际上不管是家庭影院还是个人电脑,购买 时都会配上音乐播放器,假如没有了音乐播放器,多媒体只能是一句空话。微型音乐播放器外观新颖、体积小、灵活性好,深受年轻人的喜爱。
虽然国内的大型音响设备状况不是很好,但是迷你音乐播放器确 是个例外,市场发展前景不容小觑。出于市场需求,造型美观,性能优异的音乐播放器更受消费者青睐。因此要求音乐播放器具备基本的性能:
抗干扰、音质好、体积小、功率大。新的迷你音乐播放器有其他额外的工作能量,例如,它可以在音乐播放器中。这些都是笔筒、花瓶、便携皮带和一些漂亮的小饰品,它们不仅容易实现,而且成本低。
因此,便携式的以其较小的体积和较好的音质受到广大消费者的青睐,但现有的播放器往往是将解码器和存储器一体化的。虽然这样的设计使得音乐播放器便于携带,但也寻在着一些问题:一是存储空间固定,不能扩展更大内存,二是不利于音乐播放器在其他领域的应用。因此,将播放器和存储器进行分离,是未来音乐播放器发展的方向。
1.2 音乐播放器的进化史
  自古以来,音乐就离不开人们的生活。作曲家把音乐作为表达情感的载体。渐渐地,音乐在科技上的演奏需要由载体来进行。从留声机、磁带/收音机,到DVD、MD、电脑,再到现今的手机,我们的音乐神器正随着社会的变化而不断创新、不断进化。了解音乐神器的演变历史,有助于探索音乐神器的未来走向。留声机,如图1-1所示。
图1-1
对于留声机,我们大多数情况下,只能在电视电影作品中见到了,但在音乐神器的进化过程中,留声机在历史上的地位不容忽视。
1857
年?法国发明家史葛(史葛)发明了声学振荡器,它是最早的原始记录器,被后人视为留声机的鼻祖。到了1987年,爱迪生制造出人类史上第一部留声机,此后留声机一度成为当时人们最爱的音乐神器,立体声唱片也随之出现。
在留声机之后,人们发现磁带可以存储声音,于是收音机变成音乐播放器。除了支持磁带播放音乐之外,电台的出现也让收音机拥有了无线广播音乐收听的功能。因而很长一段时间里,收音机成为最受人们欢迎的消费品。
19世纪之初的时候,一个叫做Greenleaf?Whittier?皮卡德人制造了世界上第一台矿石收音机。到了19世纪20年代,电子管收音机开始增长。1954年11月,世界上第一台超小型晶体管收音机开始接受新技术和新技术的奖励。收音机确实取代了留声机,音乐播放器完成了进化。收音机,如图1-2所示。
                        图1-2
VCD/DVD/MD的时代,如图1-3所示。
图1-3
收音机之后,在1972年发行CD(激光唱片)之后,人们开始可以通过CD看到歌手一边表演一边唱歌,能够播放影音CD一度成为无数孩童心仪的音乐神器,CD对音乐产业发展做出了巨大贡献,明星唱片发行量成绩的考量,依然指的是唱片CD的发行数量。当年很多人就是伴随着CD一起长大。
MP3
在介绍当今流行的三种主流音乐播放产品时,手机的便于携带是其成为主流产品的重要原因。而在十年之前,MP3因其方便携带、音质OK、储存量大而深受年轻一代喜爱。但在音乐播放器的演变和互联网的发展过程中,MP3之前的主流音乐播放器只能是过去的历史。那时候,MPMAN推出了世界上第一款F10 MP3音乐播放器;在2002年9月,世界上第一个WMA编码MP3诞生了,MP3将完全支持多种音频格式。自03年以来,MP3开始流行,年轻人都希望拥有MP3。
第二章    方案设计
2.1 设计任务与思路
2.1.1设计任务
本设计是将STM32软件硬件相结合的设计课题。要求设计一个以丰富居民生活日常娱乐生活为主的便携式音乐播放器:使用5V电压的USB接口供电、支持OGG/MP3/WMA/WAV/FLAG(需要加载Patch)/M
IDI/AAC等多种音频格式解码、支持SD卡播放。
2.1.2设计思路
整个音乐播放器的设计主要由STM32微控制器、VS1053高性能解码器、SD卡、按键复位和选择电路设计和电源、程序下载接口等电路设计部分组成,整个系统由STM32单片机进行控制,多种外设协调工作。
2.2硬件设计
本设计功能简介开机后,先初始化各种外设,然后检测字库是否存在,如果检测无问题,则开始循环播放 SD 卡 MUSIC 文件夹里面的歌曲(必须在 SD 卡根目录建立一个 MUSIC 文件夹,并存放歌曲在里面),在 TFTLCD液晶显示屏上显示歌曲名字、播放时间、歌曲总时
间、歌曲总数目、当前歌曲的编号等信息。KEY0用于选择下一首歌曲,KEY2用于选择上一首歌曲,KEY-UP和KEY1用于调整音量。DS0 还是用于指示程序运行状态,DS1 用于指示 VS1053正在初始化。
本设计所需硬件如下:
STM32单片机,SPI 闪存电路设计,SD高速存储卡,按键部分电路设计,TFTLCD液晶显示屏电路设计,USB下载串口、电源部分电路设计,VS1053高性能解码芯片电路设计,TDA1308功放芯片,HT6872D类IC功放,电源指示灯DS0、DS1电路设计。
2.3 器件选择与系统框图
系统可以实现对MP3/OGG/WMA/FLAC/WAV/AAC/MIDI 等多种音频格式的解码,同时还可以支持 ADPCM/OGG 等格式的编码,特别是对于320KB的MP3数据流,必须反应非常快,才能实现音乐的流畅播放。因此在选择核心处理器时,拥有丰富的RAM内存是我们优先考虑的标准,而32位处理器中,STM32微控制器自带RAM闪存,性能优越,而且价格相对较为,因此便宜出于成本的考虑,我们选用STM32F103RCT6作为微控制器。
SD卡以其价格低,体积小,易于扩展内存等优势,并且单片机微控制器中也集成了SD控制器,所以本设计采用SD卡作为储存媒介是最好的选择。系统框图如图2-1所示。
                    图2-1
第三章硬件设计
3.1 STM32微控制器电路设计
    STM32F103是STM32系列芯片中,专为嵌入式应用设计的处理器,具有备高性能、低功耗、价格低等特点。ARM Cortex-M0、M0+、M3、M4和M7内核(ST的产品组合包含一个全面的范围)。ST还将这个范围进行了扩大,包括一个超低功耗 MCU。根据内核体系架构,将其划分为不同的产品。
主流产品(STM32 F0、STM32 F1、STM32 F3)、超低功耗产品(STM32 L0、STM32 L1、STM32 L4、STM32 L4+)、高性能产品(STM32 F2、STM32 F4、STM32 F7、STM32 H7)。
我们使用的STM32 F103系列是一个具有32位CORTEX-M3内核的高性能处理器。它具备以下优点:
内存:集成了32-512KB的闪存。64-KB的SRAM存储器。
时钟、复位和电源管理:2.6V的电源和I/O接口的驱动电压。上电复位(POR)、掉电复位(PDR)和可编程电压检测器(PVD)。自带4-16MHz的晶振,8MHz的RC振荡电路,内部40千赫RC振荡电路,用于CPU时钟的PLL,用来校准RTC的32kHz的晶振。
低功耗:具有睡眠、停止、待机3种低功耗模式。
调试模式:串行调试(SWD)和JTAG接口。慢性病医保
DMA:12通道DMA控制器。支持定时器,ADC,DAC,SPI,IIC和UART等多种外设。
3位12位美国电平A/D转换器(16通道):A/D测量范围:0-3。双采样和保持能力。在芯片还上集成有温度传感器。
2通道12位D/A转换器:STM32 F103XC,STM32 F103XD,STM32 F103XE独具特。高达112个快速I/O端口:根据不同型号,有26, 37, 51个、80个和112个I/O端口,这些端口都可以映
射到16个外部中断向量。除了模拟输入以外,其他都可以在5V内接受输入。多达11个定时器:4位16位定时器,每个定时器有4个IC/OC/PWM或脉冲计数器。2个16位6通道高级控制定时器:最多6个通道可用于PWM输出。2看门狗定时器(独立看门狗和窗口看门狗)。SyBar定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。具备13个通信接口:2个IIC接口(SMBus/PMBus)。5个USAT接口(ISO7816接口,LIN,IrDA兼容性,调试控制)。3个18 Mbit/s速率的SPI接口,两个和IIS复用。CAN接口(USB 2.0全速接口。SDIO接口。)
ECOPACK封装:STM32 F103XX系列微控制器是用ECOPACK形式进行封装的。                                                                                                             
该设计采用STM32 F103RCT6作为MCU,其资源包括:48 KB SRAM、256KB的FLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(12个通道)、3个SPI、2个IIC、5个串行端口、1个USB、1个CAN、3个12 ADC、12位。DAC,1 SDIO接口和51个通用IO端口。该芯片性价
比极高。如图3-1。
图3-1
图3-1中的BooT1用来建立STM32的启动模式,与之相对应的启动模式如表3.1所示:
表3.1
BOOT0 BOOT1 启动模式 说明
0    X 用户闪存存储器 用户闪存存储器,也就是FKASH启动
  1    0    系统存储器 系统存储器启动,用于串口下载
  1    1    SRAM启动 SRAM启动,用于在SRAM中调试代码
通常(标准ISP下载步骤),如果我们想用串行端口下载代码,首先必须配置BOOT0到1,BOOT1 0,然后按下复位按钮,最后在程序下载后下载BOOT0到GND,这样用户代码可以在每次重置后发货。可以看出,该标准ISP步骤仍然繁琐,跳线跳变,手动复位,因此我们专门设置了一个按键下载电路。这里使用标准的JTAG连接,但是STM32具有SWD接口,SWD可以用2行(SWCK和SWDIO)
下载和调试代码,这类似于我们使用的串行下载代码,并且可以更快地调试。因此,我们建议在进行产品设计的时后,可以预留出SWD,来下载和调试代码,并丢弃JTAG。STM32的SWD接口与JTAG共享,只要连接到JTAG,就可以使用SWD,JLink V8/JLink V7/ULIK2和ST-Link都支持,则可以使用SWD模式。如图3-2。
图3-2
3.2 SPI闪存芯片电路设计
W25Q64是华邦公司推出的一款大容量SPI闪存产品。W25Q64的容量为64 MB,即8M字节,该系列也是W25Q80/16/32。W25Q64将2M的容量划分为128个块(BLOCK),每块为64K字节,每个块被划分为16个扇区(扇区),每个扇区具有4K字节。W25Q64的最小擦除单元是扇区,即每次必须擦除4K字节。以这种方式,我们需要为W25Q64创建至少4K的缓冲区,这需要更高的SRAM要求,并且要求芯片必须具有4K以上的SRAM才能良好地工作。
在本设计
中,STM32开发板板载了SPI闪存芯片。SPI闪存(即SPI NOR FLASH)是NOR闪存的一种,一次传输一位位数据。它的特点是接口简单,速度慢,但在一般的语音应用场合和小程序存储场合都有广泛的应用。STM32开发板包含SPI闪存芯片W25Q64,其容量为8M字节。其原理图如图3-3所示。
图3-3
W25Q64还采用SPI1接口,F-CS与PA2相连。由于SD卡也是采用的SPI模式通信,SD卡的SPI接口也是连接到了STM32的SPI1上,SD_CS接在PA3上,因此需要根据不同的片选信号分时复用,防止在使用一个器件的时候产生干扰。
3.3 SD卡电路设计
3.3.1 SD卡的操作模式
许多微型控制器操作系统需要大容量存储设备来存储数据。目前,常用的U盘、F闪存芯片、SD卡等都有。它们具有优势,综合比较,最适合单片机系统就是SD卡,它不仅可以做到很大的容量(32GB),而且支持SPI接口,便于移动,而且有几种大小的尺寸可供选择(标准SD卡大小,TF卡大小等)满足不同的应用需求。只要4个IO端口就可以扩展到最大32GB以上的外部存储器,容量从几十M到几十G的选择规模,更换也非常方便,编程也是简单的,是大容量外部存储器的首选。
SD卡一般支持2种操作模式:通过SDIO通信;SPI通信。
主机可以选择上述任何一种模式与SD卡通信。SD卡的引脚排序如图3-3-1所示。
图3-4
SD卡的SPI模式允许通过SPI接口与SD卡进行通信,难度相对较低,尽管这种模式与SDIO通信模式相比丢失了速度。奚梦瑶资料
SD卡的引脚功能描述如表3.3所示。
                        表3.3
引脚 1 2 3 4 5 6 7 8 9
SD卡模式 CD/
DAT3 CMD VSS VCC CLK VSS DAT0 DAT1 DAT2
SPI模式 CS MOSI VSS VCC CLK VSS MISO NC NC
SD卡只能使用3。3V IO电平,因此就要求单片机必须能够支持3.3V 的 IO 端口输出。注意:在SPI模式下,CS/MoSI/MISO/CLK需要加上10~100K的上拉电阻。SD卡的命令格式如表3.4所示。
表3.4
字节1 字节2--5 字节6
南京旅游景点推荐
7 6 5        0 31                  0 7          1 0教师节给老师的祝福语大全
0 1 command 命令参数      CRC 1
SD卡的指令是6个字节,字节1的最高2位被固定到01,下6是命令号(例如,CMD16,1000B是16 0x10,完整的CMD16,第一字节是01010000,或0x10+0x40)。字节2~5是命令参数,有些命令没有参数。
字节 6 的高七位为 CRC 值,最低位恒定为 1。
SD卡的命令较为复杂,总共有12类,分为class0~class1,下面我们来介绍一下我们常用的命令,如表3.5所示。
表3.5
铿锵有力的意思命令 回应 参数 描述
CMD0(0X00) NONE R1 复位SD卡
CMD8(0X08) VHS+Check pattern R7 发送接口状态命令
CMD9(0X09) NONE R1 读取卡特定数据寄存器
CMD10(0X0A) NONE R1 读取卡标志数据寄存器
CMD16(0X10) 块大小 R1 设置块大小(字节数)
CMD17(0X11) 地址 R1 读取一个块的字数
今年五一高速免费时间CMD24(0X18) 地址 R1 写入一个块的字数
CM

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。