单片机项目:驱动VS1003模块

  VS1003共有16个16位的寄存器,地址分别为0x0–0xF;除了模式寄存器(MODE,0x0)和状态寄存器(STATUS,0x1)在复位后的初值分别0x800和0x3C外,其余的寄存器在VS1003初始化后的值均为0。
         初始化SPI所有对VS1003的操作将通过SPI总线来完成。在默认情况下,数据位将在SCLK的上升沿有效(被读入VS1003),因此需要在SCLK的下降沿更新数据;并且字节发送以MSB在先。VS1003的SPI总线的输入时钟最大值为CLKI / 6 MHz,
其中CLKI(内部时钟)=XTALI×倍频值
         通过SPI总线对VS1003进行初始化了。
初始化的一般流程如下:
     硬复位,xReset = 0;
     延时,xDCS、xCS、xReset置1;
     等待DREQ为高;
     软件复位:SPI_MODE = 0x0804;
     等待DREQ为高(软件复位结束);
    设置VS1003的时钟:SCI_CLOCKF = 0x9800,3倍频;
    设置VS1003的采样率:SPI_AUDATA = 0xBB81,采样率48k,立体声;
    设置重音:SPI_BASS = 0x0055;
    设置音量:SCI_VOL = 0x2020;
    向vs1003发送4个字节无效数据,用以启动SPI发送。

全面测试:
    察看芯片供电是否正常:一般3.3v
    模拟部分是否正常:VS1003的所有DVDD、AVDD管脚以及xReset、TEST(Pin 32)接+3.0V ,然后测量RCAP在应在1.3V左右,否则芯片模拟部分未正常工作。 检查SCI命令是否正确写入:给音量控制寄存器SCI_VOL循环写入最高值和最低值,正常情况下能从耳机听到滴滴的声音,具体步骤如下: 
     ●拉低xCS; 
     ●设置音量最高:SCI_VOL = 0x0000; 
     ●拉高xCS; 
     ●等待500ms,这个时间控制在0.5到1s之间,太大太小可能都无法听到; 
     ●拉低xCS; 
     ●设置音量最低:SCI_VOL = 0xFFFF; 
     ●等待500ms,道理同上; 
     ●拉高xCS; 
     ●循环,否则以上步骤无法识别。
 
可以对SCI的读写做进一步的测试:
     ●拉低xCS; 
     ●写音量控制寄存器:SCI_VOL = 0xA2F5; 
     ●适当延时,等待DREQ为高; 
     ●读音量控制寄存器,看读回的值是否与写入的一致,如果不为0xA2F5的话说明SCI读写有问题。
  
正弦测试(SDI测试)
        正弦测试属于芯片内部的测试功能,如果写SDI总线无误的话可以从耳机里听到单一频率的正弦音(可以通过命令更改频率),强烈建议大家对此项步骤测试时不要将耳塞直接塞入耳中,因为系统不同可能导致声音大小会不同,有可能极其刺耳。正弦测试步骤如下: 
     ● 进入VS1003的测试模式:SPI_MODE = 0x0820; 
     ● 等待DREQ为高; 
     ● xDCS拉低(xCS置1),选择vs1003的数据接口; 
     ● 向VS1003发送正弦测试命令:0x53 0xEF 0x6E 0x30 0x00 0x00 0x00 0x00; 
     ● 延时500ms; 
     ● 退出正弦测试,发送命令:0x45 0x78 0x69 0x74 0x00 0x00 0x00 0x00; 
     ● 延时500ms; 
     ● 循环。
至此,VS1003的驱动任务已经完成。
具体流程如下: 
     1)打开一个指定的MP3文件:CH375FileOpen(); 
     2)读一个扇区数据:CH375FileRead(); 
     3)发32个字节的数据到VS1003; 
     4)检测DREQ,当DREQ为高时发下一个32个字节的数据; 
     5)是否发完512个字节,否,则回到3); 
     6)是否发完打开的mp3文件,否,则回到2); 
     7)关闭打开的文件:CH375FileClose( )。 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值