OpenEdv-开源电子网

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

STM32F103ZET6+VS1003+CH375制作的MP3播放器相关问题

[复制链接]

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2014-8-15
在线时间
47 小时
发表于 2016-12-16 11:18:05 | 显示全部楼层 |阅读模式
通过参考战舰的例程,现在整个系统已经搭建好了,并且可以完成读取U盘中的音乐并且播放的功能,但是在显示歌曲名的时候播放高码率的歌曲(eg:320kbps)就会出现卡顿的现象,感觉就是VS1003断奶情况。感觉上是显示歌曲名占用的时间太长,屏蔽以后果然不卡。请问怎么才可以在播放的时候显示歌曲名的时候不出现卡顿的情况,下面这个是播放音乐的代码,请高手指点迷津。[mw_shl_code=c,true]u8  mp3_play_song(u8 *pname,u8 *fn)
{
   FIL* fmp3;
   u16 br;
   u8 res,rval;
   u8 *mp3_buf;
   u16 i=0;
   u8 key,j=0;
   u8 pause_Flag=0;
       
   rval=0;
   fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
   mp3_buf=(u8*)mymalloc(SRAMIN,512);           //开辟512字节的内存区域
   if(mp3_buf==NULL||fmp3==NULL) rval=0xFF;//内存申请失败
   if(rval==0)
   {
                 VS_Soft_Reset();               //软复位  
                 VS_Set_All();                //设置音量等信息
                 VS_Reset_DecodeTime();        //复位解码时间          
     res=f_open(fmp3,(const TCHAR*)pname,FA_READ);//打开文件
           if(res==0) //打开成功
           {
                         VS_SPI_SpeedHigh();        //高速               
                         while(rval==0)                                   //读出512个字节
                         {                                                       //btr是用户要读的数据量,br是实际读取的数据量
                                res=f_read(fmp3,mp3_buf,512,(UINT*)&br);        //这样当判断到br==0时,文件读完
                                i=0;       
                                do
                                {                                  
                                 if(!pause_Flag&&VS_Send_MusicData(mp3_buf+i)==0)  //给VS1003发送音乐数据
                                  {               
                                          i+=32;
                                  }
                                  else
                                  {
                                                 printf("其他检测允许...\n");
                                                 key=KEY_Scan(0);//不支持连按0
                                                 switch(key)
                                                 {
                                                                case KEY0_PRES:
                                                                                 printf("按键key0..\n");
                                                                                 rval=1;        //下一曲
                                                                                 break;
                                                                case KEY1_PRES:
                                                                                 printf("按键key1..\n");
                                                                                 rval=2;        //上一曲
                                                                                 break;
                                                                case KEY2_PRES:                //暂停
                                                                                         printf("暂停播放..\n");
                                                                                 rval=0;
                                                                                 pause_Flag=~pause_Flag;
                                                                                 break;
                                                 }
                                        }               
                                 mp3_msg_show(fmp3->fsize,fn);  //显示信息                                         
                         }while(i<512);                 
                               
                        if(br!=512||res!=0)
                         {
                                  printf("读完了..\n");
                                        rval=0;
                                        break;        //读完了
                         }                  
                        }
                 f_close(fmp3);
          }else rval=0xFF;//出现错误
   }
   myfree(SRAMIN,mp3_buf);
   myfree(SRAMIN,fmp3);
   return rval;
}[/mw_shl_code]




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-8-18
在线时间
63 小时
发表于 2016-12-16 16:40:58 | 显示全部楼层
把显示歌曲名搞成DMA刷屏就可以
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2014-8-15
在线时间
47 小时
 楼主| 发表于 2016-12-17 10:24:40 | 显示全部楼层
feisheng168 发表于 2016-12-16 16:40
把显示歌曲名搞成DMA刷屏就可以

屏幕接口就是普通的IO口,没有DMA功能,刷不了吧。
回复 支持 反对

使用道具 举报

7

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-8-18
在线时间
63 小时
发表于 2016-12-21 08:52:41 | 显示全部楼层
王朝代号 发表于 2016-12-17 10:24
屏幕接口就是普通的IO口,没有DMA功能,刷不了吧。

屏没有,你想办法让把spi写DMA,试试涮
VS1003
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-2-7
在线时间
1 小时
发表于 2017-2-7 15:28:43 | 显示全部楼层
请问,怎么用F103作U盘的主机啊,使用CH375芯片 怎么用??
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-7-9
在线时间
9 小时
发表于 2017-2-16 15:02:20 | 显示全部楼层
楼主能把工程发来参考一下吗
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2014-8-15
在线时间
47 小时
 楼主| 发表于 2017-3-23 22:10:15 | 显示全部楼层
zk159669 发表于 2017-2-7 15:28
请问,怎么用F103作U盘的主机啊,使用CH375芯片 怎么用??

F103不带OTG功能,不能作为主机。需要外挂CH375才可以实现。
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-5-2
在线时间
3 小时
发表于 2017-5-10 11:57:38 | 显示全部楼层

优势STM32F4系列、STM32F2系列、STM32F1系列 用到 加我 270129716
主营ST MCU优势STM32F4、2系列 STM32H7系列Q:3073924495 TEL 13168746997
回复 支持 反对

使用道具 举报

15

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2016-2-24
在线时间
155 小时
发表于 2017-10-31 16:00:31 | 显示全部楼层
你好,请问CH375的资料在哪里找的。看了好几天数据手册,搞不懂啊,纠结!!!
回复 支持 反对

使用道具 举报

头像被屏蔽

0

主题

207

帖子

0

精华

禁止发言

积分
276
金钱
276
注册时间
2019-3-4
在线时间
4 小时
发表于 2019-3-26 08:12:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-4-5
在线时间
1 小时
发表于 2020-4-5 22:53:46 来自手机 | 显示全部楼层
你好,我也正在做这个,可以分享一下你的代码吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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