OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 995|回复: 8

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

[复制链接]

  离线 

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2014-8-15
在线时间
36 小时
发表于 2016-12-16 11:18:05 | 显示全部楼层 |阅读模式
正点原子公众号
通过参考战舰的例程,现在整个系统已经搭建好了,并且可以完成读取U盘中的音乐并且播放的功能,但是在显示歌曲名的时候播放高码率的歌曲(eg:320kbps)就会出现卡顿的现象,感觉就是VS1003断奶情况。感觉上是显示歌曲名占用的时间太长,屏蔽以后果然不卡。请问怎么才可以在播放的时候显示歌曲名的时候不出现卡顿的情况,下面这个是播放音乐的代码,请高手指点迷津。
[C] 纯文本查看 复制代码
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;
}





回复

使用道具 举报

  离线 

7

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2015-8-18
在线时间
61 小时
发表于 2016-12-16 16:40:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

3

主题

16

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

  离线 

7

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

1

主题

10

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

3

主题

16

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

  离线 

0

主题

27

帖子

0

精华

新手上路

Rank: 1

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

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

使用道具 举报

  离线 

4

主题

25

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-23 23:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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