欢迎来到天天文库
浏览记录
ID:35214457
大小:25.00 KB
页数:3页
时间:2019-03-21
《在vs1003上实现wma格式音乐的播放》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、在VS1003上实现wma格式音乐的播放今天晚上我在我做的mp3上试验了播放wma音乐。vs1003手册上说可以解码吗mp3wma和midi格式的音乐。试验发现播放wma音乐可以像播放mp3那样播放,只要把wma文件数据送给vs1003就可直接播放。刚开始在从正在播放的wma音乐转入下一首音乐会出现不能播放的问题。wma格式不像mp3格式那样容易播放,因此不能播放的原因是其不能正确结束当前播放的数据帧。后来查datasheet发现可以通过设置SCI_MODE的SM_OUTOFWAV位来结束wma的播放。由于我的程序没有
2、判断当前播放的音乐是什么类型音乐的程序。所以我有找了个变通的方法,就是复位。我用的是软件复位,通过设置SCI_MODE的SM_RESET位来实现。即在播放每一首歌前复位一下vs1003就可解决wma歌曲的切换。按手册上的要求复位前最好向VS1003填充2048个0且这些数据要根据DREQ引脚的请求送给芯片。另外复位后还要延时约1.35ms芯片才能恢复到先前的工作频率。接下来就可以发送你的mp3或wma数据了。不过这种方法只能整首的播放wma音乐,不能快进。如要快进VLSI网站上有示例代码。现在我的mp3可以播放mp3和
3、wma两种格式的音乐了,至于midi有空再研究。不知阿永第三版的mp3板是否支持wma,如果没有可以考虑把它加上去,不复杂的,只要按我上面的方法就可。今天早上我又把vs1003的midi功能做出来了。不过在播放midi之前要把SMF1格式的midi转成SMF0格式的midi文件。在应用手册上的网址http://www.gnmidi.com/下载转换程序GN1:0转换。将转换后的文件拷到sd卡中按播放mp3及wma的方式播放即可。但要注意在从正在播放的midi曲子跳出来,在复位前就不要填充2048个零了如果填充了将会花很
4、长时间才能进入下一首歌的播放,因为midi需要的数据量很小。同样如果按暂停键,你也会等一段时间让vs1003把内部已有的数据处理完。播放出来的音乐没有在电脑上播放的效果好,类似于手机上的midi音乐。我做的播放器的图片(在通用板上手工焊的上传一下我写的程序里面包含了SD卡的驱动,完整的FAT16操作程序,及VS1003的程序。整个程序花了我半个月时间。其中SD卡驱动只包含了初始化,读一扇区,写一扇区的功能。FAT16部分本来是针对我的毕业设计做的,现在顺便做了个mp3,所以其中有好多函数是不须要的。但是有需要做文件系统
5、的可以参考一下。这部分含有,创建文件,删除文件,创建目录,删除目录,重命名,打开文件,写文件,显示目录内容等。另外为了配合mp3的操作多添加了几个函数。但是写文件部分做的不完善。不支持长文件名的创建。在主程序中放置了播放mp3的操作,同时注释掉了一些关于文件系统的函数。如果把mp3的播放函数去掉,把原来的文件系统函数加上,可以直接使用。显示用串口调试工具显示,播放mp3时会显示文件名的短文件名项,初始化的时候会显示初始化信息。在用作fat16操作时可以像普通dos操作一样。比如显示根目录内容可以输入dir具体信息可通
6、过输入help查看帮助。关于这个mp3的原理图我就不画了总共几个脚我用文字描述一下。SD卡的cs接m32的SS引脚其它的MISOMOSISCK就不用说了VS1003的XCS接 PB0XRESET接PB1DREQ接 PB2XDCS接 PB3其它几根SPI数据线按标准接PLAY/STOP键接PD5PREV键接 PD4NEXT键接 PD3V- 接 PD2V+ 接 PD6如须更改可在程序中修改VS1003的电源是这样接的,3.3V接IO电源,模拟电源用3.3串接一个1N4007,核电源在1N4007后接一个快
7、恢复管1N5819。其它的按VS1003手册给的接法就行了。如果要手工在通用板上焊VS1003的话,建议先给VS1003各个脚上好锡,然后焊好四周的8个脚用作固定,可以用电阻引脚之类的东西。然后用细的漆包线,可以从小变压器上拆,把头上的漆用刀子刮掉上上锡。接着用普通的烙铁,记住烙铁不能沾锡,仔细焊上然后把线引到附近固定后接到你要的地方就行了。VS1003有很多电源脚内部是连在一起的,如果想偷懒的话可以只焊一根,或者只焊重要的脚就可以了,我上面做的mp3就是这样做的,工作没问题。不然48个脚要我焊焊上一天呢。以下是程序,
8、可以播放mp3,wma,及SMF0格式的midi音乐。不过没有快进与快退功能。FAT只支持FAT16还有我的程序编译环境是winavr,我是在avrstudio里编译的,调试也是在avrstudio里进行的。优化级别设成2,不然在7.3728M的晶振下播放高数据率的音乐会有点卡(写的程序不好)。再上传个添加了多一点相应注释的程序,
此文档下载收益归作者所有