搜索
bottom↓
回复: 3

VS1003正弦测试求助

[复制链接]

出0入0汤圆

发表于 2009-11-4 22:40:58 | 显示全部楼层 |阅读模式
在 章其波  的程序上做了修改, 只是想测试一下VS1003是否能正常工作.  使用的是M32
初始化成功, 但正弦测试不发音

初始化代码如下:
unsigned char VS1003B_Init()
{
        unsigned char retry;
        PORT_INI();                        /* Prot Initialize */

        VS1003B_XRESET_L();        /* A hardware reset */
        _delay_ms(20);
        VS1003B_XRESET_H();

        VS1003B_SPI_Low();        /* Low initialize spi clock */
        _delay_ms(20);

        retry=0;

        while(VS1003B_ReadCMD(0x03) != CLOCK_REG)        /* set PLL register */
        {
                VS1003B_WriteCMD(0x03,CLOCK_REG);
                if(retry++ >10 )return 1;
        }

        _delay_ms(20);
       
        VS1003B_WriteCMD(0x05,0x000a);
       
        retry=0;
        while(VS1003B_ReadCMD(0x0b) != 0xfefe)        /* set Volume to minimum */
        {
                VS1003B_WriteCMD(0x0b,0xfefe);
                if(retry++ >10 )return 1;
        }

        VS1003B_WriteCMD(0x05,0xac45);                        /* Soft start */

        retry=0;
        while(VS1003B_ReadCMD(0x0b) != DEFAULT_VOLUME)        /* Set volume to default value */
        {
                VS1003B_WriteCMD(0x0b,DEFAULT_VOLUME);
                if(retry++ >10 )return 1;
        }

        retry=0;
        while(VS1003B_ReadCMD(0x00) != 0x0800)        /* set mode register */
        {
                VS1003B_WriteCMD(0x00,0x0800);
                if(retry++ >10 )return 1;
        }

        _delay_ms(1);

        retry=0;
        while(VS1003B_ReadCMD(0x02) != DEFAULT_BASS_TREMBLE)        /* set bass/tremble register */
        {
                VS1003B_WriteCMD(0x02,DEFAULT_BASS_TREMBLE);
                if(retry++ >10 )return 1;
        }
        _delay_ms(20);

        VS1003B_SoftReset();        /* A soft reset */

        _delay_ms(20);

        VS1003B_SPI_High();                /* High SPI clock, for internal pll has been works now */
        return 0;
}


正弦测试代码如下:
void VS1003_Test(void)
{
        //VS1003_HwRst();                                        
        VS1003B_SoftReset();                                                               
        VS1003B_WriteByte(0xff);       
        VS1003B_XCS_H() ;
        VS1003B_XDCS_H();
        VS1003B_XRESET_H();
                                                                                                //delay100ms                                          
        VS1003B_WriteCMD(0x00  ,0x0820);        //enter vs1003 test model
        while ((VS1003B_DREQ_PIN & (1<<VS1003B_DREQ_BIT))== 0);                           //wait for DREQ Highlevel

        VS1003B_WriteByte(0x53);          
        VS1003B_WriteByte(0xef);          
        VS1003B_WriteByte(0x6e);          
        VS1003B_WriteByte(0x7e);          
        VS1003B_WriteByte(0x00);          
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
    VS1003B_WriteByte(0x00);
          VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        //程序执行到这里后应该能从耳机听到一个单一频率的声音
         
         //退出正弦测试
        VS1003B_WriteByte(0x45);
    VS1003B_WriteByte(0x78);
        VS1003B_WriteByte(0x69);
        VS1003B_WriteByte(0x74);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003B_XDCS_H();
       
        //再次进入正弦测试并设置n值为0x44,即将正弦波的频率设置为另外的值
        VS1003B_WriteByte(0x53);          
        VS1003B_WriteByte(0xef);          
        VS1003B_WriteByte(0x6e);          
        VS1003B_WriteByte(0x44);          
        VS1003B_WriteByte(0x00);          
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
       
        //退出正弦测试
        VS1003B_WriteByte(0x45);
        VS1003B_WriteByte(0x78);
        VS1003B_WriteByte(0x69);
        VS1003B_WriteByte(0x74);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003B_WriteByte(0x00);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
        VS1003_Delay_Nmicrosecond(50000);
}   


一直听不到声音,请问这是怎么回事啊?

谢谢先

出0入0汤圆

发表于 2009-11-5 08:42:44 | 显示全部楼层
uchar VS1003B_Test(void)
{
        uchar retry;
       
        SPI_SetSpeedLow();                                                                        //设定SPI低速
        SPI_ByteRW(0xFF);                                                                        //启动SPI

    XCS_L();
    XDCS_H();

        Delay_MS(100);
   
        retry=0;
        while(VS1003B_ReadCMD(MODE) != 0x0820)
        {        VS1003B_WriteCMD(MODE,0x0820);
                if(retry++ > 10)        return 1;
        }
       
    while(!VS1003B_NeedData());
       
        XCS_H();
        XDCS_L();

        SPI_ByteRW(0x53);          
        SPI_ByteRW(0xef);          
        SPI_ByteRW(0x6e);          
        SPI_ByteRW(0x24);          
        SPI_ByteRW(0x00);          
        SPI_ByteRW(0x00);
        SPI_ByteRW(0x00);
        SPI_ByteRW(0x00);

        Delay_MS(5000);

           SPI_ByteRW(0x45);
    SPI_ByteRW(0x78);
        SPI_ByteRW(0x69);
        SPI_ByteRW(0x74);
        SPI_ByteRW(0x00);
        SPI_ByteRW(0x00);
        SPI_ByteRW(0x00);
        SPI_ByteRW(0x00);

        XDCS_H();
        SPI_SetSpeedHigh();
   
    return 0;
}

出0入0汤圆

发表于 2012-9-23 16:30:05 | 显示全部楼层
主要检查你的硬件和软件复位后  是不是成功了  读出相应寄存器看与文档的初始值是不是一样(很重要!)   还有就是 正弦测试应该在while(1)里  这样容易听得到

出0入4汤圆

发表于 2013-9-17 20:21:45 | 显示全部楼层
FZK374470412 发表于 2012-9-23 16:30
主要检查你的硬件和软件复位后  是不是成功了  读出相应寄存器看与文档的初始值是不是一样(很重要!)    ...

请问我的VS1003b为什么Xrest引脚接高电平芯片就发热(手册低电平是复位,但不能一直复位啊,正常情况得接高电平啊)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 11:08

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

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