vs1003调试心得

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

网上搜到很多关于VS1003的调试过程,但是基本上是基于单片机C程序的控制,最近我们采用了FPGA+VS1003的方案,调试了半个月,终于调通,今天不谈具体代码怎么实现,主要和大家分享调试过程中遇到的一些问题,希望对后来的朋友有帮助。首先考虑的还是硬件问题,注意几个点即可:1.电源的选用,参考datasheet(DS)相关章节即可,采用推荐值就可以;2.外部时钟建议还是使用12.288MHZ,可以方便后期CLKF的配置;3.注意GBUF引脚“一定不能”直接接地,必须通过阻容串联接地;4.TEST引脚注意需要上拉5.UART管脚不使用也需要上拉如果硬件正确,通电以后GBUF,LEFT/RIGHT管脚大概有1.25Vdc左右的电压。那么开始调试,VS1003的SPI总线分为SCI和SDI两种模式,SCI主要用于对1003内部寄存器进行读写配置,比如工作模式配置,低音增强等等,用于对VS1003进行初始化。SDI主要用于传输MP3等音频文件数据。首先强调,时钟、数据的相位一定要把握恰当了,无论SCI或者SDI,都建议先保持SI数据,SCLK时钟上升/下降沿的位置最好是在数据稳定时,这样利于VS1003采样准确。例如我们在先前调试时候因为数据都是在时钟上升沿同步打出,那么VS1003最好设置为下降沿采样(SCI_MODE相关bit可以设置)则是比较好的方式。读写速度:在复位以后、CLKF寄存器配置之前,1003内部时钟默认为1X模式,外部时钟是多少,内部时钟就是多少。所以根据DS里所说在配置寄存器的时候的速率建议不超过:读操作:1/6倍内部频率,写1/4倍内部频率,可以更慢但别过快。(无论SCI或者SDI,当然这是建议,根据实际情况可以做大胆尝试)对VS1003进行初始化需要注意:1.每个寄存器被置位了以后都需要有等待时间,这个在DS中也有说,需要做一定延时,检测DREQ管脚,置位后DREQ拉低,直到DREQ拉高以后才可以进行下一次SCI的操作。2.初始化的顺序建议为,硬复位--软复位--工作模式设置(SCI_MODE)--声音大小设置(VOL)--其他设置--内部时钟倍频设置(CLKF);为什么将CLKF放最后?一是它的响应时间相对较长,二是配置它以后即可以采用高速时钟传送SDI数据了。寄存器配置完以后还需要在SDI上发送4字节的0以启动SPI传输,请看初始化注意的第6点;3.工作模式(SCI_MODE)设置需要注意,如果后期做SINETEST,则相应位置必须置1,进入测试模式才可以。CS、DCS共享片选的设置也请和您实际电路匹配,SDINEWMODE也置1(我们的时序是根据NEWMODE来跑的,如果不用也可以,请自行研究其时序)。声音VOL:0x0000是最大声,0xffff是直接关掉模拟部分供电,戴耳机的请注意了别伤害到了耳朵。4.CLKF请注意,建议先不设置倍频,在单频状态下如果能听见MP3播出声音了(即使播放可能有卡顿或者很慢)再来做调试不迟。首先确保能发声.5.如果写入寄存器数据和读出该寄存器的值一致,恭喜,SCI基本算调试成功了,建议使用VOL寄存器,可以随意读写。6.初始化寄存器结束以后,deactiveSCI,开启SDI,在SDI通道上发送4字节的0,以启动SDI。注意此时使用SDI的时序,而非SCI时序。SDI测试1.MP3文件请采用128Kbps,44100HZ采样率,并且是CBR(定比特速率)的文件来进行测试,这样能尽量是系统最小化,减少前期调试工作量。2.你需要有相应的存贮介质来保存MP3文件,例如SD卡,FLASH。发送的时候直接按照MP3的二进制文件发送就可以,我们用UE32打开MP3可以看到MP3文件都是以0x490x440x330x03...开头的,那么我们SDI数据则按照“01001001010001000011001100000011...”的顺序发送即可,请注意,如果你修改了SCIMODE中MSB,LSB发送到顺序话,请做顺序上的处理。另外请注意保证数据发送无误码,如果有误码,DREQ很有可能被挂死,只有硬复位才能恢复,一定注意了。这个一方面是硬件保证,另一方面可以做一些数据缓存,避免出现毛刺。3.当完成了SCI测试以后,首先进行SINETEST,来确定SDI以及VS1003内部固件的完好性,可以参照官方的APPNOTE来完成,这里不再赘述。4.播放MP3测试:注意DREQ的使用,官方解释的是只要DREQ为高,则VS1003至少可以接收32字节的数据,所以请一定在32字节以后检测DREQ的状态,如果为低,则一定要做以下几个操作:拉高XDCS,停止SCLK和SI的发送,等到其拉高以后再操作。另外DREQ可能在任一时刻变低,这个是这个芯片内部架构决定的,是正常的(提一个小问题,既然DREQ可以再任一时刻变低,说明了其内部FIFO是bit对齐还是字节对齐?答案不给了,希望对你们测试有启发);我们目前使用的是FPGA平台,DREQ是并行检测的,所以在检测到DREQ拉低以后,我们将当前字节剩余bit发完就不再发送数据了,直到DREQ拉高。5.XDCS的使用,个人感觉XDCS并不是单纯的片选,按我们常规理解,片选ACTIVE以后,则表示激活了该芯片地址空间可以进行读写。但是VS1003不同,我们测试过程中,为了操作方便操作,每次SDI传输都发送4个字节,如果XDCS不在我们4字节以后拉高一次,长期保持为低,感觉VS1003会失去同步,不会发出声音,如果在4字节以后拉高一次,则可以听到声音。感觉很奇怪,这个XDCS更像是SYNC同步信号,而不是片选。可能测试还不够充分,希望有测试充分的同学能说一下。因此建议大家把两种方式都测一下,一是保持为低,直到DREQ变低以后再拉高。强烈建议:开始用4字节为一次传输的数据量,后期再慢慢加大一次传输的数据量直到一次32字节(或者更大)。可以参考我们的时序,这是测试通过了的。附图见后。6.此时应该能放音乐了,如初始化调试第4点所讲,1x频率的模式下可能播放的音乐有点像慢动作,别急,初始化的时候把CLKF的设置加进去,2.0,3.0倍试试就会有明显改善。时序图如下所示,可以给大家作为参考,目前这个时序是完全能放出声音的,2X倍频以后声音很清晰,祝大家成功。再次提醒,注意SCI/SPI的速度,可以慢一点,后期再大胆做高速测试。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功