本帖最后由 yanggexiaosa 于 2012-9-25 08:42 编辑
买了个STM32的实验仪,由于种种原因被别人拿去用了。加上再过上1个多月就得实习了,想尽可能的多储备点知识呀。所以重新买了个ARM实验仪。但发货到收货得好多开呢,也不知道做点什么,看到上届学长留下的一个VS1003模式就想着能干点什么。
好了不费话了,MP3我花了三天的时间。实验仪到了所以就不再继续做下去了。界面特别的丑,没时间优化了望各位大大们务喷啊。
界面没什么好说的就那死样了,主要功能有顺序播放、单曲播放、随机播放、下一首、上一首、选歌等,没有实现时间进度条和能量条的显示。就三天,这三天还有课的不说。所以仍旧望海涵。
MP3移植了较为小巧的PFATFS,使用的STC11F32XE增强单片机,24Mhz晶振。可以解码320Kbps(再大的没测过,没找到这样的歌

)。由于没有实现文件写功能所以使用了24c02更新播放列表。再由于24C02只有256个字节说以只能播放16首歌。(刚开始我以为是256K的呢,算了下可以播放1.6万首歌呢,叹)后来想用STC他所谓的内部EPPROM来更新播放列表(毕竟大呀)但是移植性差。所以如果自己想搞的话可以自己实现文件系统的写就可以播放任一多的歌曲的。但我不知道有没有更好的解决方案。使用红外操控。也因为这个在操作时会有杂音,未能解决,有木有人告诉我怎么解决呢?我好在学习STM32中解决一下。代码在下面提供,有很多地方需要优化。我自己知道可以优化的地方也不少。但限于要实习了就先不管了。。
这下真不费话了,还有事呢。哈哈。上传图片
http://v.youku.com/v_show/id_XNDUzODc4NTcy.html
简单的拍了个小视频。好了算了事喽。
哇,今天看看还有人回复,是并行口,是什么控制器就没太关心了。
哈哈,我本来也自己读写文件系统的。但是走到一半总是死机,也仿真不出来,所以就放弃了。
- if(pf_mount(&Fatfs)==FR_OK)
- {
- if((pf_opendir(&dir,"Music"))==FR_OK)
- {
- // put_string("??");
- if(pf_open(ss)==FR_OK)
- {
- put_string("??");
- VS1003B_XCS_H();
- while(1)
- {
-
-
- VS1003B_XDCS_L(); //数据片选
- if( pf_read(SD_buf,512,&read_word_num)==FR_OK)
- {
- for(k=0;k<512;k++)
- {
- VS1003B_WriteDAT(SD_buf[k]);
- }
- }
- VS1003B_XDCS_H();
- }
- }//else put_string(str6);
- }
- }
复制代码=====================请问楼主,我执行到可以打印“??”,表示文件打开成功。但怎么也音乐不响。
我怀疑是不是pf_read(SD_buf,512,&read_word_num)这个有问题,我的意思是说它读一首歌曲的时候读完一个扇区,指针自动继续+1,读另一个512字节的扇区。知道这个文件结束。比如这首歌曲叫“花心“。
备注:我的Vs1003没问题,没移植pfat的时候直接读取8200扇区后面的数据能出歌曲。
粘上来老是偏移严重,抱歉了
快进、快退。。。。。lseek不灵光啊
一周热门 更多>