网上搜到很多关于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)设置需要注意,如果后期做SINE TEST,则相应位置必须置1,进入测试模式才可以。CS、DCS共享片选的设置也请和您实际电路匹配,SDINEWMODE也置1(我们的时序是根据NEWMODE来跑的,如果不用也可以,请自行研究其时序)。声音VOL:0x0000是最大声,0xffff是直接关掉模拟部分供电,戴耳机的请注意了别伤害到了耳朵。
4. CLKF请注意,建议先不设置倍频,在单频状态下如果能听见MP3播出声音了(即使播放可能有卡顿或者很慢)再来做调试不迟。首先确保能发声.
5. 如果写入寄存器数据和读出该寄存器的值一致,恭喜,SCI基本算调试成功了,建议使用VOL寄存器,可以随意读写。
6. 初始化寄存器结束以后,deactive SCI,开启SDI,在SDI通道上发送4字节的0,以启动SDI。注意此时使用SDI的时序,而非SCI时序。
SDI测试
1. MP3文件请采用128Kbps,44100HZ采样率,并且是CBR(定比特速率)的文件来进行测试,这样能尽量是系统最小化,减少前期调试工作量。
2. 你需要有相应的存贮介质来保存MP3文件,例如SD卡,FLASH。发送的时候直接按照MP3的二进制文件发送就可以,我们用UE32打开MP3可以看到MP3文件都是以"0x49 0x44 0x33 0x03..."开头的,那么我们SDI数据则按照“0100 1001 0100 0100 0011 0011 0000 0011...”的顺序发送即可,请注意,如果你修改了SCIMODE中 MSB,LSB发送到顺序话,请做顺序上的处理。另外请注意保证数据发送无误码,如果有误码,DREQ很有可能被挂死,只有硬复位才能恢复,一定注意了。这个一方面是硬件保证,另一方面可以做一些数据缓存,避免出现毛刺。
3. 当完成了SCI测试以后,首先进行SINE TEST,来确定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的速度,可以慢一点,后期再大胆做高速测试。
第二篇:设备调试心得
50000吨半潜船设备调试的工作方法
摘本文主要阐述了黄船公司建造的50000吨半潜船的发电机的调试,和上建的内通系统,二氧化碳,机舱水雾等系统的调试工作及其中出现的问题和改进方案。要
关键词
1前言50000吨发电机配电板航行信号灯二氧化碳内通系统当代国内外的船舶业都在迅猛发展中。设备调试,作为船舶建造中最后一关,也是最重要的一个环节,怎样利用合理的工作方法,在质量第一的基础上提高各系统调试的效率就显得尤为重要。50000吨是亚洲最大,世界先进的半潜船。在该船的现场调试过程中,我总结了一些系统调试的工作方法,包括:电站系统、广播、声力电话、自动电话、子母钟、航行信号灯、二氧化碳系统、火灾报警系统、以及负责了机舱水雾等系统。2各系统调试中遇到的问题和改进方案
2.1电站系统的调试
作为一艘中压电力推进的半潜船,该船的电站系统配备了四台主柴油发电机组、一台停泊柴油发电机组、两套中压配电板及两套低压主配电板、一套应急配电板。相比之下,该船电站系统比较繁琐和复杂。
2.1.1柴油发电机组及配电板的调试工作
柴油发电机组,作为机舱的核心设备,有着监测报警点繁多,控制系统复杂,管路交错的特点。
作为船上核心设备,如何把柴油机上这几百个监测点理清楚,如何知道这条管是做什么用的,试验过程中先做什么,再做什么,对于提高调试效率是至关重要的。所以,电站及动力系统的试验,对于调试人员的要求是比较高的。
所以,在试验开始之前,要深入机舱,熟悉各个传感器的位置及功能,要先将各个测点号标明位置,至少做到心中有数。这样,在试验过程中,包括对外报验的过程中,才能事半功倍。
2.1.2配电板的调试工作
配电板的调试前,一定要先熟悉随机资料及内部原理,这样,在试验中,才不会盲目而无从下手。熟悉了随机资料,查线对线工作才能得心应手。
在调试过程中,要特别注意各个开关信号之间的联锁。尤其这艘50000吨半潜船配备了两块中压配电板,两块低压主配电板和一块应急配电板,各个开关的联锁信号更多繁杂而且繁多。因为联锁是为了考虑设备的安全而设计的功能,所以,这方面的调试,要格外细心。其次,是柴油发电机组的并联运行试验。根据常规的试验方法,是先做柴油发电机组的单机特性试验,再做并联运行试验。但实际的调试中,当功能试验都已经完成之后,可以先试着并联运行,可以大概看出哪台机组的特性和其它几台存在差异,之后的调试,就会更有针对性,这样,可以少走些弯路,提高电站的调试效率。
最后,是自动电站的调试工作,自动电站的调试,一定要在整个手动和半自动电站的试验都完善的情况下来做。50000吨的自动电站和其它船相比,不同的是,它的PMS程序是监测系统来完成的,如果手动和半自动功能未试完,直接试自动功能的话,中间可能会遇到很多问题。
2.2广播系统的调试工作
由于该系统分布的比较散,在调试的过程中,首先我们要把广播机柜和所有的喇叭对完线,遇到有问题的逐个逐个的排除,直至所有的喇叭对完线,检查好以后把电源送上。因广
播机柜有个自动检测整个系统的功能,如有哪个喇叭有故障的,绝缘低的都能检测的出来,检测出来以后把有问题的逐个逐个的排查完,直至该系统能构成一个完整的回路系统。
2.3二氧化碳系统的调试工作
50000吨半潜船上,该系统调试前,用水做了试压,管路内部通了水。在报验过程中,按要求,是要用空气做畅通性。这样一来,就要求把管路里的水全部吹干。假设一条管路上有十个探头的话,就要把另外九个用螺丝堵死,然后吹剩下的那个。由于管路多,探头分布机舱各个位置,这样,一个一个来吹,给后续的工作添加了很大的难度。所以,有很多地方,需要工艺的改进。比如,最初在做管路密性的时候,就应该用气体来做,这样就可以为后续的调试工作节省更多时间,并有助于提高工作效率。
2.4其余系统的调试工作
声力电话系统、自动电话系统、火灾报警等系统,同以上提到的二氧化碳系统一样,有一个共同点,调试起来较为简单,但是分布比较广泛,几乎遍布全船各个位置。对这些系统调试之前,最重要的是,要对整个系统有一个清晰的认识,对于50000吨这么大的船来说,更要有一个清楚的了解。比如:这个探头按装在什么位置,那部电话装在哪个房间等,这就要求对设备的布置有一个宏观的认识,试验过程中才不会到处乱撞,同时,也会起到事半功倍的效果。
子母钟,航行信号灯,以及机舱水雾的调试过程中,我付出努力的同时,也加深了对这些系统的认识和了解。
3、小结
以上是根据50000吨电力推进半潜船的现场调试经历所写,50000吨是技术含量及高的一艘中压电力推进半潜船。能参与这条世界先进的半潜船建造,是我的荣幸,对我自身,更是极大的提高,接触之前从未调试过的中压系统,我学到了很多。但这个过程中,出现的技术,工艺等方面的问题,也值得我去深思。希望在后续船舶的建造过程中,这些不足之处能够得到改进。对我自己而言,经后,我会继续抱着谦虚的态度去钻研和学习各方面的知识,与黄船共进步!