OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7641|回复: 8

VS1053 SD卡播放MP3音乐问题

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
发表于 2014-10-11 10:08:45 | 显示全部楼层 |阅读模式
5金钱
RAM测试通过了, 0x83FF
主函数只做正弦测试的话(如下)
while(1)
{
VS_Sine_Test();  // 正弦测试;
}
会听到滴滴的声音 一直响 。这表明正弦测试已经通过了吗?

其他函数都是移植原子哥
然后我的播放函数,都是参考原子哥的,但是我改了一些,不知到行不行,如下:

void MP3_Play(u8* pname)
{
  FIL fmp3;
  u16 br;
  u16 i=0;      
  u8 databuf[4096];                  
 
  VS_Restart_Play();                      
  VS_Set_All();
  VS_Reset_DecodeTime();
  resvs=f_typetell(pname);
  resvs=f_mount(0,&fatfs);
                                                           
  resvs=f_open(&fmp3,(const TCHAR*)pname,FA_READ);
        
  if(resvs != FR_OK)
  { return; }
  while(1)
  {
    resvs=f_read(&fmp3,databuf,4096,(UINT*)&br);
    vsset.mvol=230;
    VS_Set_Vol(vsset.mvol);
    do{
       if(VS_Send_MusicData(databuf+i)==0)
       {
        i+=32;
       }
      }while(i<4096);
  }
}
SD卡是可以读出来数据的,我查看了databuf
resvs=f_read(&fmp3,&databuf,4096,(UINT*)&br); 
主函数在做了一系列初始化后只执行:
while(1)
{
MP3_Play("0:/MP3/abc.mp3");
}

那到最后问题来了:
播放不出来声音。


最佳答案

查看完整内容[请看2#楼]

FIL fmp3;    u8 databuf[4096];   这两个,放全局变量.   vsset.mvol=230;     VS_Set_Vol(vsset.mvol); 这两个,放while外面.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-10-11 10:08:46 | 显示全部楼层
FIL fmp3; 
  u8 databuf[4096];  

这两个,放全局变量.

  vsset.mvol=230;
    VS_Set_Vol(vsset.mvol);
这两个,放while外面.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-11 10:28:17 | 显示全部楼层
真心求解!.
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-11 11:21:41 | 显示全部楼层
意见或建议都可以啊,看过的讨论一下啊。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-13 09:00:02 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
好的 ,谢谢, 我在调一调。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-13 09:21:31 | 显示全部楼层
回复【5楼】mr_kp1:
---------------------------------
麻烦下原子哥在问一下。
用战舰开发板下载《实验44 音乐播放器实验》
然后主函数执行mp3_play();可以播放没问题 
但是用

u8 mp3_play_song("0:/MUSIC/ztj.mp3")
就不行 。

我是新手  希望指点一下



回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-13 09:29:45 | 显示全部楼层
回复【6楼】mr_kp1:
---------------------------------
加了复位就好了。我在好好看看程序吧之前都没好好看
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-13 10:04:17 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我就问最后一个问题:

FIL* fmp3;

fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));

这句是 申请sizeof(FIL)大小的内存,

我加上这句没问题,不加就不行,在战舰开发板上的,但是我现在想用F4的一块板子控制一个音频解码的板子,没有移植你写的malloc.c,
我需要怎么给这个
fmp3 分配内存呢? 如果直接定义成全局变量不会自动给他分配内存吗?
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-10-13 13:16:13 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
哈哈,终于都调好使了,研究了原子哥的程序好长时间。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 05:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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