嵌入式系统课程设计总结报告

上传人:芳黎 文档编号:91099126 上传时间:2019-06-22 格式:DOCX 页数:14 大小:461.96KB
返回 下载 相关 举报
嵌入式系统课程设计总结报告_第1页
第1页 / 共14页
嵌入式系统课程设计总结报告_第2页
第2页 / 共14页
嵌入式系统课程设计总结报告_第3页
第3页 / 共14页
嵌入式系统课程设计总结报告_第4页
第4页 / 共14页
嵌入式系统课程设计总结报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《嵌入式系统课程设计总结报告》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计总结报告(14页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统课程设计报告课程名称: 嵌入式系统课程设计 项目名称: 基于ARM实现MP3音乐盒 专 业: 一、 设计内容基本功能:预存四首歌曲,实现循环播放;每个按键对应一首歌曲。 拓展功能:通过按键简单演奏音乐,类似钢琴; 实现两个模式的切换,切歌模式和音量加减模式。二、 设计思路基础功能:将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传到内核。内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据)被解码后送到DAC发出声音。将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一首音乐,通过地址的递增和循环来实现音乐的自动

2、循环播放。按键对曲目的控制,可通过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文件地址的控制。将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。另外,我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。使用SPI1总线将TFT显示屏连接到内核,显示按键功能、当前曲目、当 前模式等信息。由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同模式的选择和按键的复用。拓展功能:基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调

3、制波激励扬声器,从而使扬声器发出一定频率的声音。所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不同按键与不同扬声器发生频率的对应。然后使一个按键的按下与松开均进入中断,且分别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加功能表现地更自然。三、 硬件配置基础功能:(1)SD卡:存储音频数据配置方法:根据开发板原理图,配置方法如下图所示(2)VS1053解码芯片:将输入的比特流解码后送入DAC配置方法:音频解码模块与开发板接线方式:/5V-5V/GND-GND/XRST-PG8/MISO-PA6/MOSI-PA7/SCLK-PA5/DREQ-P

4、G7/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)VS10

5、53 进行软件复位;(3)使用 FATFS 读取音频文件数据;(4)发送文件件,每次发送 32 个字节,直到音频文件发送完成。3.对TFT显示屏进行基础设置拓展功能:1. 按键初始配置:对所用到的按键进行相应的IO口配置,且完成按键中断的中断通道配置。2. 中断通道的中断子程序:由于会不只一个键配置在同一个中断通道中,所以中断通道的中断子程序首先进行对按下按键的识别。然后读取与按键相对应的IO口电平,若为低电平(=下降沿=按下键),则对定时器进行数据配置,并打开定时器;若为高电平(=上升沿=松开键),则关闭定时器。3. 定时器的中断子程序:定时器产生中断时,定时器继续工作,且翻转与扬声器相连的

6、IO口的输出电平。五、 采用的技术、技巧、功能模块介绍基础功能:(1)技术和技巧音乐播放模块的过程中,我们分为两个功能,其中有切歌功能,即四个按键对应于四首歌,另外一个就是可以实现模式切换的功能,该功能包括两种模式,即切歌模式和音量加减模式,其中有一个按键来实现两个功能之间的切换,在切歌模式中,另外的三个按键对应三首歌曲,音量加减模式中,两个键分别对应于音量加和音量减。播放歌曲的主要步骤为,首先对模块进行一系列的初始化,并在显示屏上显示每个按键对应的歌曲或音量加减的功能,设置初始音量为230,然后对SD卡进行读取数据的操作,并找到对应的存放歌曲的文件夹MUSIC,对文件中MP3文件名称读取并存

7、储,同时记录文件的地址,然后跳转到音乐播放的函数,该函数中对按键进行扫描并跳转到所按下按键对应的功能,从而实现音乐的播放和音量的加减。在切歌功能中,我们通过对所扫描的歌曲文件进行排序,并将四个按键对应到所排的序号中,所以当我们扫描到哪个按键按下的时候,就在其后面赋予一个返回值,返回该按键对应音乐的序号,通过返回值我们可以在主函数中得到该序号所对应歌曲的地址,通过该地址我们可以实现对音乐文件名称的读取,以及音乐数据的解码,从而实现在LCD显示屏上显示音乐的名称和播放音乐这些功能。(2)功能模块1)解码模块本次实验音乐的播放主要是通过读取SD卡的中的mp3文件,再将其输送至VS1053解码器中进行

8、解码,从而实现音乐的播放。其中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、发送endFill

9、Byte7:0中的值最少2052个字节;4、设置SCI_MODE的SM_CANCEL位;5、发送endFillByte7:0中的值最少32个字节;6、读取SCI_MODE,如果SM_CANCEL位依然是设置的,则跳到步骤5;如果SM_CANCEL始终没有被清除,在发送2048个字节之后,执行软件复位;7、这首歌曲现在已经成功被发送了。HDAT0和HDAT1都应该包含0来表明现在已经没有正在解码的格式了。现在返回步骤1。(二)取消播放在播放音乐时,当用户想跳到下一首,可通过取消当前的歌曲播放来实现,它用下列步骤来实现:1、发送一个音频文件的部分到VS1053;2、设置SCI_MODE的SM_CA

10、NCEL位;3、继续发送音频文件,但要在发送32字节的数据之后检查SM_CANCEL,如果它还是被设置,则重新进行步骤3。如果SM_CANCEL始终没有被除,在发送2048个字节之后,执行软件复位;4、当SM_CANCEL被清除,读取附加的参数值endFillByte;5、发送 endFillByte7:0中的值,共计2052个字节;6、HDATO和HDAT1都应该包含0来表明现在已经没有正在解码的格式了,你现在可以开始发送下一个音频文件了。2)SD卡SD卡中用于存放我们需要播放的mp3文件,音乐文件放在一个叫MUSIC的文件夹,在播放时通过对SD卡中的文件夹进行扫描匹配,来得到播放音乐的正确

11、路径。本次实验SD卡的操作模式为SD卡模式,即通过SDIO进行通信,允许4线的高速数据传输。SD卡的引脚排序如下: SD卡模块引脚图以下为SD卡在正常工作时的三个过程,包括初始化和读写数据。(一)SD卡初始化过程:1、初始化与SD卡连接的硬件条件(MCU的SPI配置,I0口配置);2、上电延时(大于74个CLK);3、复位卡(CMD0),进入IDLE状态;4、发送CMD8,检查是否支持2.0协议;5、根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等);6、取消片选,发送8个CLK,结束初始化在完成了初始化之后,就可以开始读写数据了(二)从SD卡中读取数据SD卡读

12、取数据,这里通过CMD17来实现,具体过程如下:1、发送CMD17;2、接收卡响应R1;3、接收数据起始令牌0XFE;4、接收数据;5、接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉;6、禁止片选之后,发多8个CLK;(三)向SD卡中写数据1、发送CMD24;2、接收卡响应R1;3、发送写数据起始令牌OXFE;4、发送数据;5、发送2字节的伪CRC;6、禁止片选之后,发多8个CLK3)LCD显示屏本次实验中我们用的是TFTLCD显示屏,该模块主要用来显示当前播放的歌曲,切歌时每个按键对应的歌曲,以及音量增减时加减音量所对应的按键。LCD模块原理图实验中对TFTLCD模块的使

13、用主要有以下几个过程(一)设置STM32F103与TFTLCD模块相连接的I0口要让TFTLCD模块显示,首先得初始化TFTLCD模块与STM32F103相连的I0以便控制TFTLCD,这里我们用使用的是STM32F103的FSMC (二)初始化 TFTLCD模块初始化I0口,接着就是对 TFTLCD进行配置,首先就是要对LCD复位,由于模块的复位引脚是接在SI32F103复位上的,所以直接按下开发板复位键即可,然后就是初始化序列,即向LCD控制器写入一系列的设置值,初始化完成之后,LCD即可正常使用。(三)将要显示的内容写到TFTLCD模块内这一步需要对照:设置坐标写GRAM指令写GRA来实

14、现,但是这个步骤,只是一个点的处理,如果我们想要显示字符或数字,就必须要多次使用这个步骤,从而达到显示字符或数字的目的,因此我们设计一个函数来封装这些过程(实现字符或数字的显示),之后只调用该函数,就可以实现字符或数字的显示。4)按键模块本次实验通过按键来实现切歌和音量的加减拓展功能:(1)技术和技巧通过读取与按键相对应的IO口电平,来判别按键是按下还是松开。(2)功能模块1.按键初始配置: 第一部分,对IOC8口(8号按键)初始化;第二部分,将中断分配在8号中断通道,且是下降沿与上升沿均触发中断;第三部分,将5至9号中断通道优先级均设为0。类似的还有IOC9口,IOC10口,IOC11口,10至15号中断通道。2.中断通道的中断子程序: if(EXTI_GetITStatus(EXTI_Line8)=1),判别是否是8号键触发中断。if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8)=0),判别8号键是否是按下触发中断。TIM_TimeBaseStructure.TIM_Period=1915;TIM_TimeBaseStructure.TIM_Prescale

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑规划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号