ngyg12 发表于 2010-10-10 10:36:45

VS1003 的 RAM 和 Sine 测试问题...请教大虾!

最近在调试 VS1003 模块, 硬件是买的现成的模块, 感觉应该没有什么问题吧!以前也没做过类似的音乐方面的!所以觉得程序可能有问题.

我在初始化,和读写寄存器都没有问题, 写进去多少读出来也是多少! 初始化后读出来的缺省值和芯片手册的一样.问题就出现在 RAM 和 Sine 的测试上,

RAM 有时候测试正常,即返回值是 807F 但有时候全是 0, 不过正常的几率要大一点,但是 正弦测试就不是这样了, 几率很小, 偶尔能有声音, 并且这个声音是在我单步执行到 发送正弦测试命令后,并且马上退出调试它才会有声音出来,不会在调试程序的时候出来!觉得甚是奇怪,望大虾们指点...



/*-----------------------------------------------------------
** 函数名称: VS1003RAMTest
** 功    能: VS1003 的 RAM 测试.
** 参    数: 无
** 备    注:
** 创建日期: 2010 - 10 -07
------------------------------------------------------------*/
UINT VS1003RAMTest(void)
{
   UINT regvalue = 0, temp;
   
   temp =Read_VS_REG(SPI_MODE);

   /* 使能 SDI 测试 */
   Send_VS_Command(SPI_MODE, 0x0820);

   while(DREQValue == 0);

   VS1003_XDCS_L;
   SPIx_SenRecvONEByte(MP3_SPI, 0x4d);      
   SPIx_SenRecvONEByte(MP3_SPI, 0xea);      
   SPIx_SenRecvONEByte(MP3_SPI, 0x6d);      
   SPIx_SenRecvONEByte(MP3_SPI, 0x54);      
   SPIx_SenRecvONEByte(MP3_SPI, 0x00);      
   SPIx_SenRecvONEByte(MP3_SPI, 0x00);
   SPIx_SenRecvONEByte(MP3_SPI, 0x00);
   SPIx_SenRecvONEByte(MP3_SPI, 0x00);
   Delay_time(1000);       
   VS1003_XDCS_H;       

   regvalue = Read_VS_REG(SPI_HDAT0);

   /* 还原寄存器内容 */
   Send_VS_Command(SPI_MODE, temp);

   return (regvalue);

}

/*-----------------------------------------------------------
** 函数名称: VS1003SineTest
** 功    能: VS1003 的正弦测试.
** 参    数:
** 备    注:
** 创建日期: 2010 - 10 -07
------------------------------------------------------------*/
void VS1003SineTest(void)
{
        UINT temp;
   
    temp =Read_VS_REG(SPI_MODE);

        /* 使能 SDI 测试 */
    Send_VS_Command(SPI_MODE, 0x0820);

    while(DREQValue == 0);

    VS1003_XDCS_L;
    SPIx_SenRecvONEByte(MP3_SPI, 0x53);      
        SPIx_SenRecvONEByte(MP3_SPI, 0xef);      
        SPIx_SenRecvONEByte(MP3_SPI, 0x6e);      
        SPIx_SenRecvONEByte(MP3_SPI, 0x30);      
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);      
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        Delay_time(500);
           VS1003_XDCS_H;//应该能听到一个单一频率的声音吧.

    while(DREQValue == 0);

    //退出正弦测试
        VS1003_XDCS_L;
        SPIx_SenRecvONEByte(MP3_SPI, 0x45);
        SPIx_SenRecvONEByte(MP3_SPI, 0x78);
        SPIx_SenRecvONEByte(MP3_SPI, 0x69);
        SPIx_SenRecvONEByte(MP3_SPI, 0x74);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        SPIx_SenRecvONEByte(MP3_SPI, 0x00);
        Delay_time(500);
        VS1003_XDCS_H;

       /* 还原寄存器内容 */
        Send_VS_Command(SPI_MODE, temp);

}

上面是我的测试程序.

ngyg12 发表于 2010-10-10 15:34:59

感觉坛里做过 VS1003 的有很多啊!怎么都没有位热心的啊?给个建议也好啊!.............

ngyg12 发表于 2010-10-11 10:52:19

问题已经解决

zqy517 发表于 2010-10-11 12:45:28

是怎么样解决的呢?晕~~~就简单“问题已经解决 ”

ngyg12 发表于 2010-10-12 10:10:22

回复【2楼】ngyg12
-----------------------------------------------------------------------

测试前加了个硬件复位...呵呵

FZK374470412 发表于 2012-9-19 15:31:10

我的程序跟楼主的差不多问题是在正弦测试前我软硬都复位了就是没声音啊..................

FZK374470412 发表于 2012-9-23 15:03:49

我的问题也解决了   是模块有问题...............................
页: [1]
查看完整版本: VS1003 的 RAM 和 Sine 测试问题...请教大虾!