打印

VS1003 DIY mp3 总是嘟嘟声...

[复制链接]
4198|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ngyg12|  楼主 | 2010-10-11 11:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
刚开始调试 VS1003 不久,参照的模块自带的程序, RAM 和 Sine 的测试都通过了.往 VS1003 送 MP3 数据, 老是嘟嘟的声音, 都弄了好久了, 看到有的贴子说是硬件问题, 我检查了连接是对的,在SPI 模式 RX 和 TEST 连接到 I0VDD0.不过有一个问题,就是 DREQ 只有1.3V 的样子, 检查了稳压芯片输出, 2.5V 和 3.3V 对了的啊! 我于是找不到头绪了, 转来看程序, 我和范例对照了很多次,感觉没有问题啊! 头疼死了,不知道是怎么回事!请大侠们指教......

贴一下我的写数据代码

/*-----------------------------------------------------------
** 函数名称: PLAYMP3MUSIC  
** 功    能: 播放一首 Mp3 .
** 参    数: filename: 歌曲文件名称(需包含文件路径)
** 返 回 值:  
** 备    注: 函数处于调试阶段.
** 创建日期: 2010 - 10 -07
------------------------------------------------------------*/
FRESULT PLAYMP3MUSIC(const char *filename)
{
  static FIL  fsrc;        // file objects
     FRESULT  res;         // FatFs function common result code      
    UINT  ByteRead;  
    BYTE  buffer[512];
int   i;

  f_mount(0, &fs_sd);
   
  /* 打开 MP3 文件*/
  res = f_open(&fsrc, filename, (FA_OPEN_EXISTING | FA_READ));

  /* 暂时放在死循环, 供调试使用 */
  for(;;)
  {
    /* 读取 MP3 文件*/
    res = f_read(&fsrc, buffer, 512, &ByteRead);   

for(i = 0;i < 16;i ++)
{
  /* 送 32 个字节*/
Send_VS_32Bytes(&buffer[(32 * i)]);
}
  }
  
  f_close(&fsrc);
   
  f_mount(0,NULL);

  return (res);

}

/*-----------------------------------------------------------
** 函数名称:Send_VS_32Bytes
** 功    能: 向 VS1003 写入 32 个字节的数据.
** 参    数: 欲写入数据的缓冲区地址.
** 返 回 值: 无.
** 备    注:
** 创建日期: 2010 - 10 -07   
------------------------------------------------------------*/
void Send_VS_32Bytes(unsigned char *Data)
{
  int i;

   /* 设置成高速模式 */
   //SetSPI_Speed(MP3_SPI, SPI_SPEED_HIGH);

   while(DREQValue == 0);
   //Delay_time(3);
   for(i = 0;i < 32;i ++)
   {
    // while(DREQValue == 0);   
    Send_VS_OneByte(*Data ++);
   }

  /* 还原成低速模式 */
  //SetSPI_Speed(MP3_SPI, SPI_SPEED_LOW);
}
/*-----------------------------------------------------------
** 函数名称: Send_VS_OneByte
** 功    能: 向 VS1003 写入数据.
** 参    数: 与写入的数据
** 备    注:
** 创建日期: 2010 - 10 -07   
------------------------------------------------------------*/
void Send_VS_OneByte(UCHAR8 Data)
{
  /* 拉低数据线 */
  VS1003_XDCS_L;  

   /* 发送数据*/
  SPIx_SenRecvONEByte(MP3_SPI, Data);

  VS1003_XDCS_H;
  VS1003_XCS_H;   
}

有错误的地方,还请大虾们指出...

相关帖子

沙发
古道热肠| | 2010-10-11 15:42 | 只看该作者
能听到音乐吗?用个比特率低的文件试试。

使用特权

评论回复
板凳
ngyg12|  楼主 | 2010-10-11 22:25 | 只看该作者
2# 古道热肠 ne

能听到, 就像看 vcd 片的时候卡了时的声音一样, 听不清, 卡起卡起的感觉, 而且有个怪问题, 有时候数据送到一些的时候, DREQ 信号就一直是低了, 我检查过硬件, 晶振两脚的 1M 电阻焊了的, Rx TEST 也和 IOVDD0  连在了一起, 就是在给 VS1003 送 MP3 数据的时候出现了问题.... 调试了几天了, 还没头绪...

使用特权

评论回复
地板
xhtxzxw| | 2010-11-12 00:05 | 只看该作者
找一个数据速率低的文件芳芳吧,最低的比如32K的,呵呵,估计是速度跟不上了。

使用特权

评论回复
5
xwj| | 2010-11-12 00:09 | 只看该作者
应该是数据速度低了,缓存空造成的。

LZ你用的什么CPU传数据?
SPIx_SenRecvONEByte是软件模拟的?
而且看你的嵌套层数很多哦,这也会多浪费很多时间的。

使用特权

评论回复
6
vlsi源合| | 2012-11-19 12:05 | 只看该作者
VS1003的  中文PDF大家可以参考下

vs1003.pdf

569.03 KB

使用特权

评论回复
7
vlsi源合| | 2012-11-19 13:42 | 只看该作者
有什么问题,可以问我,代理vlsi

使用特权

评论回复
8
vlsi源合| | 2012-11-19 13:42 | 只看该作者
电话15817427869

使用特权

评论回复
9
huangshuai0795| | 2013-4-7 18:07 | 只看该作者

使用特权

评论回复
10
jiaxinhui| | 2013-4-11 21:20 | 只看该作者
ngyg12 发表于 2010-10-11 22:25
2# 古道热肠  ne

能听到, 就像看 vcd 片的时候卡了时的声音一样, 听不清, 卡起卡起的感觉, 而且有个怪问 ...

你检测下程序,看看单片机给VS1003送的码流及时不,好像VS1003有个管脚,当送的数据解码完了,会输出一个电平,你是否用到这个管脚。

使用特权

评论回复
11
ecoren| | 2013-4-13 18:57 | 只看该作者
嘟嘟嘟

使用特权

评论回复
12
8961| | 2013-6-24 15:05 | 只看该作者

使用特权

评论回复
13
outstanding| | 2013-7-13 13:05 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:菜鸟一个望大家多多指教...

5

主题

553

帖子

5

粉丝