vs1003播放MP3卡的问题
这次用到的模块和上一次一样,也是STM32F103RBT6最小系统板,VS1003模块,SD卡模块,还有一个按键模块就这些。SD卡模块和stm32通信采用的是SPI接口,这里使用的是SPI1,vs1003和stm32通信也是SPI,这里使用是SPI2,sd卡模块的引脚加上电源和地也就6根,vs1003的引脚相对较多,电源地2根+SPI的4根+ XDCS和XCS+DREQ共9根。在这里我们使用了15根杜邦线将他们连接到一起 。
我在调试中有点着急,眉毛胡子一把抓,以为连接好硬件后,下载软件聚会OK的,结果没有好的情况的下依然处在这种泥潭下,毫无头绪的找毛病,改改这,动动那,在没有搞懂状况的情况下。既浪费时间又会让人恼火,仍无济于事。建议,把两者区分开,先把vs1003线拔下来,直接调试sd卡模块,这样线少,不会产生凌乱的感觉。sd卡模块是采用的SPI1,对照原理图,将mosi,miso,sck,cs一对一的重新接好,在初始化处设置断点,观察返回值是否为零。进一步调试fat初始化是否成功,按照这样的思想,同样调试vs1003.我就是这样终于vs1003正弦测试成功。
但是,两者都能正常初始化没问题的情况下,依旧有一个让人头疼的问题,就是播放卡带的问题,就像老家使用VCD播放电影时有卡带并且还有机关枪“突突”的声音,虽然能播放出来,但突突的断续却感觉不到成功的喜悦。然后参考别人的代码,翻阅手册,SPI——setspeed()改大改小,屁变化没有。那问题就出在SPI的问题上,或者是SPI1或者是SPI2,说不定两者在设置速率上都存在问题。搜索资料发现DREQ也容易出问题,我改变DREQ的引脚定义,最后还是改成悬空输入,在DREQ外加上拉电阻,还是不行,拔掉DREQ这跟线竟然播放没有变化,那肯定跟SPI的速率有关了。怀疑SPI初始化配置有问题,检查一下没问题,之前的好多例子都是用这个的。没法了,我就将MMC_SD.C的文件里所有的SPI1和设置速率跟SPI1有关的都检查一下,见过发现还真有SPI1和SPI2傻傻分不清楚的。有检查vs10xx.c文件里的SPI2的使用,结果也发现速率配置不对的问题。改完后,重新编译下载。问题竟然解决了,vs1003的解码音质真不比买来的mp3音质差。
总结,调试多模块的设备,分开调试,节省时间,vs1003能播放出音乐,但比较慢或者卡,那基本上出现在SPI的速率上,仔细检查吧
激动之余,写此分享!
vs1003MP3STM32F103RBT 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)