之前一直在搞uIP的移植,没有顾得上这块。这是我做的多功能STC51试验板上最后测试的一个主要模块了,之前其他模块的测试都很顺利。像外扩的SRAM,MMC卡,DM9000A还有CH375都是一次pass的。所以测试VS1003也没太当回事,不就是个SPI读写嘛!按照Datasheet设置好SPI的速率、相位、时钟急性等,然后就可以读写VS1003的SCI寄存器。程序写好后烧到片子里可不像我想象的那样了,首先是读VS1003的任何寄存器返回的都是0000,向任意寄存器写数据,然后回读都是错的,再读第二遍又全变成0。起初我以为是SPI的相位、时钟急性设错了,于是就改变设置。可是把SPI的四种设置都试了一遍还是一样的结果,该试的都试了,这下我可没招了。
后来,查网上的资料,说VS1003的SPI时序需要注意,如果调不好数据是乱得。于是我试着在每次SPI发送8bit数据之间加了一点延时,其他的地方没变。再试验,果然成功了,读0x00单元内容为0x0800,和数据手册上说的一样了,又试了写寄存器也没有问题了。
最后,在前面成功的基础上,做了Sine Test(正弦波音频输出测试)。步骤是:先将0x00寄存器的第5位置1,让VS1003进入SDI测试状态,然后将Sine Test测试命令发到SDI(0x53,0xef,0x6e,0x7e,0,0,0,0),这时耳机里传来了刺耳的尖叫声(VS1003默认将输出音量设为最大值),害得我赶紧把耳机摘下来了。不过对VS1003的控制已经成功了,所以还是很高兴的。
用户412121 2013-1-29 14:59
用户377235 2013-1-28 23:58
用户423588 2012-9-25 17:52
用户1661673 2012-8-17 09:38