搜索
bottom↓
回复: 6

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

[复制链接]

出0入0汤圆

发表于 2010-10-10 10:36:45 | 显示全部楼层 |阅读模式
最近在调试 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);

}

上面是我的测试程序.

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-10-10 15:34:59 | 显示全部楼层
感觉坛里做过 VS1003 的有很多啊!怎么都没有位热心的啊?  给个建议也好啊!.............

出0入0汤圆

 楼主| 发表于 2010-10-11 10:52:19 | 显示全部楼层
问题已经解决

出0入0汤圆

发表于 2010-10-11 12:45:28 | 显示全部楼层
是怎么样解决的呢?晕~~~就简单“问题已经解决 ”

出0入0汤圆

 楼主| 发表于 2010-10-12 10:10:22 | 显示全部楼层
回复【2楼】ngyg12
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2012-9-19 15:31:10 | 显示全部楼层
我的程序跟楼主的差不多  问题是在正弦测试前我软硬都复位了  就是没声音啊..................

出0入0汤圆

发表于 2012-9-23 15:03:49 | 显示全部楼层
我的问题也解决了   是模块有问题...............................
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 02:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表