毕业设计 基于STM32的MP3播放器设计与实现(提供MDK完整源码).docVIP

毕业设计 基于STM32的MP3播放器设计与实现(提供MDK完整源码).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
毕业设计 基于STM32的MP3播放器设计与实现(提供MDK完整源码)

本文将介绍一个利用STM32处理器实现简易MP3 Player的设计实例,这个综合应用实例有助于读者了解STM32、SPI接口、SD卡、TIMER、中断、FAT文件系统、USB等的应用。 这里提供了两种设计方案,第一种方案是简易声波播放器,仅使用STM103V100评估板,令计时器TIM4工作在PWM模式下,将wav格式的声波文件从SD卡中读出,由TIM4产生不同频率的方波通过低通滤波器和放大器送喇叭,如图1所示;第二种方案则是简易MP3播放器,还需要使用额外的解码芯片,将MP3格式的文件从SD卡读出,然后送解码芯片解码播放,如图2所示。本节将先介绍SD卡、FAT16文件格式、VS1003编解码器等关键部分,然后再分别给出两种设计方案的软件设计。 图1 简易声波播放器方案 图2 简易MP3 Player方案 1 SD卡的结构及读写方法 STM103V100评估板有SD连接器,其使用SPI总线与STM32处理器连接,如图3所示。 图3 SD连接器与STM32处理器SPI连接图 SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。SD卡内部结构及引脚如图4所示。 图4 SD卡内部结构及引脚 SD卡主要引脚和功能为: ????????? CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率; ????????? CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡; ????????? DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。 ???? SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。 -------------- 表1 SPI命令格式 Byte 1/ Byte2-5/Byte 6 7,6,5,0/31,0/7,0 0,1/Command/Command Argument/CRC,1 ------------------------------------ 下面分别给出读写SD卡的两个函数: ????????? 读取SD卡函数u8 MSD_ReadBlock(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead); /***************************************************************** * Function Name : MSD_ReadBlock * Description??? : Reads a block of data from the MSD. * Input????????? : - pBuffer : pointer to the buffer that receives the data read *??????????????????? from the MSD. *????????????????? - ReadAddr : MSDs internal address to read from. *????????????????? - NumByteToRead : number of bytes to read from the MSD. * Output???????? : None * Return???????? : The MSD Response: - MSD_RESPONSE_FAILURE: Sequence failed *??? ??? ???????????- MSD_RESPONSE_NO_ERROR: Sequence succeed *****************************************************************/ u8 MSD_ReadBlock(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead) { ? u32 i = 0; ? u8 rvalue = MSD_RESPONSE_FAILURE; ? /* MSD chip select low */ ? MSD_CS

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档