嵌入式系统课程设计汇本报告_第1页
嵌入式系统课程设计汇本报告_第2页
嵌入式系统课程设计汇本报告_第3页
嵌入式系统课程设计汇本报告_第4页
嵌入式系统课程设计汇本报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...嵌入式系统课程设计报告课程名称:嵌入式系统课程设计工程名称:基于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显示屏外放音响拓展功能:PC机一台;P42.06CPU/40GHD/512MRAM以上配置,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。〔二〕取消播放在播放音乐时,当用户想跳到下一首,可通过取消当前的歌曲播放来实现,它用以下步骤来实现:1、发送一个音频文件的局部到VS1053;2、设置SCI_MODE的SM_CANCEL位;3、继续发送音频文件,但要在发送32字节的数据之后检查SM_CANCEL,如果它还是被设置,则重新进展步骤3。如果SM_CANCEL始终没有被除,在发送2048个字节之后,执行软件复位;4、当SM_CANCEL被去除,读取附加的参数值endFillByte;5、发送endFillByte[7:0]中的值,共计2052个字节;6、HDATO和HDAT1都应该包含0来说明现在已经没有正在解码的格式了,你现在可以开场发送下一个音频文件了。2〕SD卡SD卡中用于存放我们需要播放的mp3文件,音乐文件放在一个叫MUSIC的文件夹,在播放时通过对SD卡中的文件夹进展扫描匹配,来得到播放音乐的正确路径。本次实验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卡读取数据,这里通过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模块的使用主要有以下几个过程〔一〕设置STM32F103与TFTLCD模块相连接的I0口要让TFTLCD模块显示,首先得初始化TFTLCD模块与STM32F103相连的I0以便控制TFTLCD,这里我们用使用的是STM32F103的FSMC〔二〕初始化TFTLCD模块初始化I0口,接着就是对TFTLCD进展配置,首先就是要对LCD复位,由于模块的复位引脚是接在SI32F103复位上的,所以直接按下开发板复位键即可,然后就是初始化序列,即向LCD控制器写入一系列的设置值,初始化完成之后,LCD即可正常使用。〔三〕将要显示的内容写到TFTLCD模块内这一步需要对照:设置坐标→写GRAM指令→写GRA来实现,但是这个步骤,只是一个点的处理,如果我们想要显示字符或数字,就必须要屡次使用这个步骤,从而到达显示字符或数字的目的,因此我们设计一个函数来封装这些过程(实现字符或数字的显示),之后只调用该函数,就可以实现字符或数字的显示。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_Prescaler=71;,对定时器进展数据配置,数字根据所需扬声器发声频率来定。TIM_Cmd(TIM2,ENABLE);,开启定时器。{TIM_Cmd(TIM2,DISABLE);},关闭定时器。9号按键,10号按键,11号按键类似。3.定时器的中断子程序IOE2口是与扬声器相连的口,定时器中断时,翻转此口的输出电平。心得体会本次的课程实践是培养我们综合运用所学知识,发现、提出、分析和解决实际问题、锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。在经过了长达五个星期的摸索与实验,我们终于完成了课程设计所要求的内容并且还实现了拓展功能,有了一个圆满的结果,但这其中的过程却是很曲折的。虽然在做课程设计以前我们已经系统地学习了课本上是内容,但是理论与实践往往会有一些差距,在一开场拿到课题我们还是没有头绪。经过上网查询并学习,我们首先有了系统地思路及整体的设计方向,但是在做的过程中还是遇到了很多问题。我们原本使用的是实验室开发板,音频解码模块需要三个额外的引脚,数据请求选引脚DREQ,数据片选引脚DXCS,器件片选引脚XCS,实验室的开发板有SPI可以完成与模块的通信,但是没有与上面三个端口直接相连的引脚,在我们尝试自己按照数据传输的方式配置觉察成功率较低后,我们决定更换开发板,这样也方便我们课后进展调试。在选择发声器件时,我们一开场想使用蜂鸣器来发声,后来在实现的过程中发现蜂鸣器的音调变识度很差,很难发出一个准确的音调,因此我们选择更换为扬声器,但是因为输入扬声器的信号很小,使得扬声器发出的声音也很小,我们决定使用放大器来放大声音。一开场我们选择用三级管放大,但是电路连接好后发现信号容易失真,并且使用一个放大器放大倍数也不够,我们就尝试用多个三级管,但是它们不仅电路非常复杂,要考虑到整流、滤波等等问题,经过上网查询我们发现可以直接使用一个音频放大模块来放大,tda2822m这个放大模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论