搜索
bottom↓
回复: 7

VS1003的DREQ为什么一直是低的,正弦测试正常,MP3测试时DREQ一直是低的,附程序

[复制链接]

出0入0汤圆

发表于 2010-5-24 13:32:59 | 显示全部楼层 |阅读模式
VS1003的DREQ为什么一直是低的,正弦测试正常,MP3测试时DREQ一直是低的,初始化通过,播放测试数据时DREQ一直低

uchar buffer [512];
void VS1003B_PortInit(void)
{
    VS1003B_RST_PORT   |= BIT(VS1003B_RST);   
    VS1003B_DREQ_PORT  |= BIT(VS1003B_DREQ);
        VS1003B_XDCS_PORT  |= BIT(VS1003B_XDCS);
        VS1003B_XCS_PORT   |= BIT(VS1003B_XCS);
         
    VS1003B_DREQ_DDR   &= ~BIT(VS1003B_DREQ);
        DDRD               |= BIT(VS1003B_XCS);
        DDRD               |= BIT(VS1003B_XDCS);
        DDRE               |= BIT(VS1003B_RST);                                                        
}
/****************************************************************************
* 名称:void VS1003B_WriteCMD(uint8 addr, uint16 data)
* 功能:向VS1003写16位命令
* 入口参数:无
* 出口参数:无
****************************************************************************/
void VS1003B_WriteCMD(uchar addr,uint dat)
{
        SPI_LOW();
        VS1003B_XDCS_H();
        VS1003B_XCS_L();
       
        Write_Byte_SPI(0x02);
        Write_Byte_SPI(addr);
        Write_Byte_SPI(dat>>8);
        Write_Byte_SPI(dat);
       
        VS1003B_XCS_H();
        SPI_HIGH();
}
/****************************************************************************
* 名称:void VS1003B_ReadCMD(uint8 addr)
* 功能:读寄存器,参数 地址 返回内容
* 入口参数:无
* 出口参数:无
****************************************************************************/
uint VS1003B_ReadCMD(uchar addr)
{
        uint  temp;
       
        SPI_LOW();       
        VS1003B_XDCS_H();
        VS1003B_XCS_L();
       
        Write_Byte_SPI(0x03);
        Write_Byte_SPI(addr);
        temp = Read_Byte_SPI();
        temp <<= 8;
        temp += Read_Byte_SPI();
       
        VS1003B_XCS_H();
        SPI_HIGH();
        return temp;
}

/****************************************************************************
* 名称:void VS1003B_WriteDat(uhar dat)
* 功能:写数据
* 入口参数:无
* 出口参数:无
****************************************************************************/

void VS1003B_WriteDat(uchar dat)
{
        SPI_HIGH();
       
        VS1003B_XDCS_L();
        VS1003B_XCS_L();

        Write_Byte_SPI(dat);

        VS1003B_XCS_H();
}
/****************************************************************************
* 名称:void VS1003B_SoftReset(void)
* 功能:软件初始化
* 入口参数:无
* 出口参数:无
****************************************************************************/
void VS1003B_SoftReset(void)
{
        SPI_HIGH();
        VS1003B_WriteCMD(0x00,0x0804);                /* reset */
        delayms(200);
}
/****************************************************************************
* 名称:uchar  VS1003B_Init(void)
* 功能:功能初始化
* 入口参数:无
* 出口参数:成功否
****************************************************************************/
uchar  VS1003B_Init(void)
{
        VS1003B_PortInit();
        SPI_LOW();
       
        VS1003B_XCS_L();
        VS1003B_XDCS_H();
        VS1003B_RST_L();
        delayms(100);
        VS1003B_RST_H();                          //使能芯片
        delayms(100);


        while( (PINE & BIT(VS1003B_DREQ) ) == 0);
        VS1003B_WriteCMD(0x0,0x0804);
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);
        VS1003B_WriteCMD(0x2,0x7a00);         //内置低音/高音增强
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);
        VS1003B_WriteCMD(0x3,0x9800);    //4.5倍频率
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);
        VS1003B_WriteCMD(0x5,0xbb81);
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);
        VS1003B_WriteCMD(0xb,0x0000);    //音量最大
       
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        SPI_HIGH();//提高速度,全速运行

        return 1;
}       
/**************************************************************************************************
**Name: VS1003B_Test(void)
**Function:test       
**Input:       
**Output:       
**************************************************************************************************/       
void VS1003B_Test()
{
        VS1003B_RST_L();       
        delayms(1);
        VS1003B_RST_H();          //硬件复位               
        VS1003B_SoftReset();  //软件复位                                                               
        Write_Byte_SPI(0xff);                                                        //发送一个字节的无效数据,启动SPI传输
       
        VS1003B_XCS_L();
        VS1003B_XDCS_H();
        VS1003B_RST_H();
                                                                          
        VS1003B_WriteCMD(0x00,0x0820);                                //enter vs1003 test model
       
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);                                   //wait for DREQ Highlevel
         //向vs1003发送正弦测试命令:0x53 0xef 0x6e n 0x00 0x00 0x00 0x00
         //其中n = 0x24, 设定vs1003所产生的正弦波的频率值,具体计算方法见vs1003的datasheet

        VS1003B_WriteDat(0x53);          
        VS1003B_WriteDat(0xef);          
        VS1003B_WriteDat(0x6e);          
        VS1003B_WriteDat(0X24);          
        VS1003B_WriteDat(0x00);          
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
    VS1003B_WriteDat(0x00);
        delayms(2000);//程序执行到这里后应该能从耳机听到一个单一频率的声音

       
                 //退出正弦测试
        VS1003B_WriteDat(0x45);
    VS1003B_WriteDat(0x78);
        VS1003B_WriteDat(0x69);
        VS1003B_WriteDat(0x74);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
       
                VS1003B_WriteCMD(0x00,0x0820);                                //enter vs1003 test model
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);       
        VS1003B_WriteDat(0x53);          
        VS1003B_WriteDat(0xef);          
        VS1003B_WriteDat(0x6e);          
        VS1003B_WriteDat(0X74);          
        VS1003B_WriteDat(0x00);          
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
    VS1003B_WriteDat(0x00);
        delayms(2000);//程序执行到这里后应该能从耳机听到一个单一频率的声音

       
         //退出正弦测试
        VS1003B_WriteDat(0x45);
    VS1003B_WriteDat(0x78);
        VS1003B_WriteDat(0x69);
        VS1003B_WriteDat(0x74);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
       
                VS1003B_WriteCMD(0x00,0x0820);                                //enter vs1003 test model
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);       
        VS1003B_WriteDat(0x53);          
        VS1003B_WriteDat(0xef);          
        VS1003B_WriteDat(0x6e);          
        VS1003B_WriteDat(0X44);          
        VS1003B_WriteDat(0x00);          
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
    VS1003B_WriteDat(0x00);
        delayms(2000);//程序执行到这里后应该能从耳机听到一个单一频率的声音
       
         //退出正弦测试
        VS1003B_WriteDat(0x45);
    VS1003B_WriteDat(0x78);
        VS1003B_WriteDat(0x69);
        VS1003B_WriteDat(0x74);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
       
                VS1003B_WriteCMD(0x00,0x0820);                                //enter vs1003 test model
        while( (PINE & BIT(VS1003B_DREQ) ) == 0);       
        VS1003B_WriteDat(0x53);          
        VS1003B_WriteDat(0xef);          
        VS1003B_WriteDat(0x6e);          
        VS1003B_WriteDat(0X74);          
        VS1003B_WriteDat(0x00);          
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
    VS1003B_WriteDat(0x00);
        delayms(2000);//程序执行到这里后应该能从耳机听到一个单一频率的声音
         //退出正弦测试
        VS1003B_WriteDat(0x45);
    VS1003B_WriteDat(0x78);
        VS1003B_WriteDat(0x69);
        VS1003B_WriteDat(0x74);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_WriteDat(0x00);
        VS1003B_XDCS_H();
}   
void MP3_TEST()
{
      ulong     i = 0;
          uchar    n = 0;
          uint count = 0;
          VS1003B_Init();
          //VS1003B_Test();
          //FAT32_ReadSector(7673+i,buffer);
         //SD_write_sector(15714+i,buffer);
                                 while(count < 4800)
                                   {
                                     
                                          while( (PINE & BIT(VS1003B_DREQ) ) == 0);
                                           // {
                                                         for(n=0;n<32;n++)
                                {     
                                   VS1003B_WriteDat(vsBeepMP3[count]);
                                                                   count++;
                                }
                                                // }
                                        }
}

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-5-24 18:01:49 | 显示全部楼层
自己顶

出0入0汤圆

发表于 2010-12-3 11:49:06 | 显示全部楼层
回复【1楼】tianqing324  天庆
-----------------------------------------------------------------------

楼主,你的问题解决了吗?我也碰到了同样的问题,搞不清为什么DREQ老为低。。。。不会是芯片烧坏了吧。。。。

出0入0汤圆

发表于 2011-11-20 12:44:55 | 显示全部楼层
我的也是同样地情况  求解?

出0入0汤圆

发表于 2013-4-26 13:05:57 | 显示全部楼层
我也遇到这种问题了。是不是芯片是假的呀!我的板子以前焊过VS1003B的芯片,这次买的新芯片,焊上去都,DREQ就一直为低。也上拉了。

出0入0汤圆

发表于 2013-5-2 00:59:21 | 显示全部楼层
ST_ATMEL_NXP 发表于 2013-4-26 13:05
我也遇到这种问题了。是不是芯片是假的呀!我的板子以前焊过VS1003B的芯片,这次买的新芯片,焊上去都,DRE ...

我的也是,换了芯片也不行,我的主控芯片是msp430

出0入0汤圆

发表于 2013-5-2 08:41:40 | 显示全部楼层
ubuntu1110 发表于 2013-5-2 00:59
我的也是,换了芯片也不行,我的主控芯片是msp430

我昨天测试了新买的3片,其中有一片DREQ是可以拉高的,一片晶振不起振,一片DREQ一直是低电平。我估计是买到假芯片了。

出0入0汤圆

发表于 2013-5-2 13:22:12 | 显示全部楼层
ST_ATMEL_NXP 发表于 2013-5-2 08:41
我昨天测试了新买的3片,其中有一片DREQ是可以拉高的,一片晶振不起振,一片DREQ一直是低电平。我估计是 ...

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

本版积分规则

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

GMT+8, 2024-8-27 00:18

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

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