嵌入式系统课程设计报告
- 格式:docx
- 大小:508.60 KB
- 文档页数:11
嵌入式系统课程设计报告
课程名称:嵌入式系统课程设计
项目名称:基于ARM实现MP3音乐盒
专业:电子科学与技术
一、设计内容
基本功能:预存四首歌曲,实现循环播放;
每个按键对应一首歌曲。
拓展功能:通过按键简单演奏音乐,类似钢琴;
实现两个模式的切换,切歌模式和音量加减模式。
二、设计思路
基础功能:
将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传到内核。内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据)被解码后送到DAC发出声音。
将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一首音乐,通过地址的递增和循环来实现音乐的自动循环播放。按键对曲目的控制,可通过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文件地址的控制。将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。
另外,我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。使用SPI1总线将TFT显示屏连接到内核,显示按键功能、当前曲目、当前模式等信息。
由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同模式的选择和按键的复用。
拓展功能:
基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调制波激励扬声器,从而使扬声器发出一定频率的声音。
所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不同按键与不同扬声器发生频率的对应。
然后使一个按键的按下与松开均进入中断,且分别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加功能表现地更自然。
三、硬件配置
基础功能:
(1)SD卡:存储音频数据
配置方法:
根据开发板原理图,配置方法如下图所示
(2)VS1053解码芯片:将输入的比特流解码后送入DAC
配置方法:
音频解码模块与开发板接线方式:
//5V---5V
//GND--GND
//XRST--PG8
//MISO--PA6
//MOSI--PA7
//SCLK--PA5
//DREQ--PG7
//XCS--PE6
//XDCS--PG6
(3)TFT显示屏
(4)外放音响
拓展功能:
PC机一台;
P4 2.06CPU/40GHD/512M RAM以上配置,STM32F103 开发板一套;
外接扬声器一个
四、设计步骤或流程图
基础功能:
1.初始化
包括单片机本身的初始化和VS1053的初始化
(1)初始化STM32 的IO 口和SPI;
(2)VS1053 进行存储器测试;
(3)初始化设置音频输出,设置音频输入要设置成VS1053;
(4)VS1053 进行正弦波测试;
(5)VS1053 进行一些基本设置,包括音效模式等。
2.输入音频文件数据
(1)通过 FATFS 打开音频文件;
(2)VS1053 进行软件复位;
(3)使用 FATFS 读取音频文件数据;
(4)发送文件件,每次发送 32 个字节,直到音频文件发送完成。
3.对TFT显示屏进行基础设置
拓展功能:
1. 按键初始配置:对所用到的按键进行相应的IO口配置,且完成按键中断的中断通道配置。
2. 中断通道的中断子程序:由于会不只一个键配置在同一个中断通道中,所以中断通道的中断子程序首先进行对按下按键的识别。然后读取与按键相对应的IO口电平,若为低电平(=下降沿=按下键),则对定时器进行数据配置,并打开定时器;若为高电平(=上升沿=松开键),则关闭定时器。
3. 定时器的中断子程序:定时器产生中断时,定时器继续工作,且翻转与扬声器相连的IO口的输出电平。
五、采用的技术、技巧、功能模块介绍
基础功能:
(1)技术和技巧
音乐播放模块的过程中,我们分为两个功能,其中有切歌功能,即四个按键对应于四首歌,另外一个就是可以实现模式切换的功能,该功能包括两种模式,即切歌模式和音量加减模式,其中有一个按键来实现两个功能之间的切换,在切歌模式中,另外的三个按键对应三首歌曲,音量加减模式中,两个键分别对应于音量加和音量减。
播放歌曲的主要步骤为,首先对模块进行一系列的初始化,并在显示屏上显示每个按键对应的歌曲或音量加减的功能,设置初始音量为230,然后对SD卡进行读取数据的操作,并找到对应的存放歌曲的文件夹MUSIC,对文件中MP3文件名称读取并存储,同时记录文件的地址,然后跳转到音乐播放的函数,该函数中对按键进行扫描并跳转到所按下按键对应的功能,从而实现音乐的播放和音量的加减。
在切歌功能中,我们通过对所扫描的歌曲文件进行排序,并将四个按键对应到所排的序号中,所以当我们扫描到哪个按键按下的时候,就在其后面赋予一个返回值,返回该按键对应音乐的序号,通过返回值我们可以在主函数中得到该序号所对应歌曲的地址,通过该地址我们可以实现对音乐文件名
称的读取,以及音乐数据的解码,从而实现在LCD显示屏上显示音乐的名称和播放音乐这些功能。
(2)功能模块
1)解码模块
本次实验音乐的播放主要是通过读取SD卡的中的mp3文件,再将其输送至VS1053解码器中进行解码,从而实现音乐的播放。其中VS1053通过串行数据接口SDI和串行控制接口SCI进行通信。
VS1053引脚分配图 VS1053封装图
VS1053中重要的几个引脚如下:
1)VS_MISO:SPI 输入线
2) VS_MOSI:SPI 输出线
3) VS_SCK:SPI 时钟线
4) VS_XCS:器件片选
5) VS_XDCS:数据片选和字节同步
6) VS_DREQ:数据请求,输入总线。
7) VS_RST:复位端
实验中VS1053主要实现播放一个完整的音乐文件和取消播放这两个功能
(一)播放一个完整文件
1、发送音频文件到VS1053;
2、读取附加参数endFillByte的值;
3、发送endFillByte[7:0]中的值最少2052个字节;
4、设置SCI_MODE的SM_CANCEL位;
5、发送endFillByte[7:0]中的值最少32个字节;
6、读取SCI_MODE,如果SM_CANCEL位依然是设置的,则跳到步骤5;如果
SM_CANCEL始终没有被清除,在发送2048个字节之后,执行软件复位;
7、这首歌曲现在已经成功被发送了。HDAT0和HDAT1都应该包含0来表明现在已经没有正在解码的格式了。现在返回步骤1。
(二)取消播放