专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
【STM32F103】VS1053播放有杂音
2019-10-15 22:07
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
5137
4
1206
本帖最后由 yuanchuang 于 2016-12-17 15:27 编辑
我是用原子的代码改的,具体如下
【探索者F4 资料盘(A盘)9,增值资料1,ALIENTEK 产品资料6,ATK-VS1053 MP3模块2,程序源码(库函数版本,适合Mini V3开发板)扩展实验4 MP3播放器实验】
我用STM32F103的板子接VS1053模块,播放的时候出现了周期性的杂音(用苹果的耳机听的),具体我会上传录音。
实物连接图:
请问是什么情况。。。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
yuanchuang
2019-10-16 03:28
正点原子 发表于 2016-12-17 16:45
感觉像是你的发送速度不够,数据发送速度。看下程序的具体运行流程吧
[mw_shl_code=applescript,true]void VS_SPI_SpeedHigh(void)
{
SPI1_SetSpeed(SPI_BaudRatePrescaler_8);//设置到高速模式
}
[/mw_shl_code]
VS1053板子晶振是12.288 3倍频 所以clk就是大于36M的,,根据数据手册写入操作时允许clk/4 也就是9M多,,
STM32F1的SPI1速度是72M,,那么8分频,就是9M,SPI速度应该是到极限了呀。
难道是SD卡速度??
设置函数在这
[mw_shl_code=applescript,true]void SD_SPI_SpeedHigh(void)
{
SPI1_SetSpeed(SPI_BaudRatePrescaler_2);//设置到高速模式
}[/mw_shl_code]
[mw_shl_code=applescript,true] if(res==0)//打开成功.
{
VS_SPI_SpeedHigh(); //高速
while(rval==0)
{
SD_SPI_SpeedHigh();
res=f_read(fmp3,databuf,4096,(UINT*)&br);//读出4096个字节
VS_SPI_SpeedHigh();
i=0;
do//主播放循环
{
if((VS_Send_MusicData(databuf+i)==0)&&(pause==0))//给VS10XX发送音频数据
{
i+=32;
}else
{
// key=KEY_Scan(0);
// switch(key)
// {
// case KEY0_PRES:
// rval=KEY0_PRES; //下一曲
// break;
// case KEY1_PRES:
// rval=KEY1_PRES; //上一曲
// break;
// case WKUP_PRES: //暂停/播放
// pause=!pause;
// break;
// default:
// break;
// }
mp3_msg_show(fmp3->fsize);//显示信息
}
}while(i<4096);//循环发送4096个字节
if(br!=4096||res!=0)
{
rval=0;
break;//读完了.
}
}
f_close(fmp3);
}[/mw_shl_code]
最后都这样,怕SD卡速度不够,先I设置为2分频(36M)进行读取数组,然后设置为9M发送数据给VS1053
加载中...
查看其它4个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
[mw_shl_code=applescript,true]void VS_SPI_SpeedHigh(void)
{
SPI1_SetSpeed(SPI_BaudRatePrescaler_8);//设置到高速模式
}
[/mw_shl_code]
VS1053板子晶振是12.288 3倍频 所以clk就是大于36M的,,根据数据手册写入操作时允许clk/4 也就是9M多,,
STM32F1的SPI1速度是72M,,那么8分频,就是9M,SPI速度应该是到极限了呀。
难道是SD卡速度??
设置函数在这
[mw_shl_code=applescript,true]void SD_SPI_SpeedHigh(void)
{
SPI1_SetSpeed(SPI_BaudRatePrescaler_2);//设置到高速模式
}[/mw_shl_code]
[mw_shl_code=applescript,true] if(res==0)//打开成功.
{
VS_SPI_SpeedHigh(); //高速
while(rval==0)
{
SD_SPI_SpeedHigh();
res=f_read(fmp3,databuf,4096,(UINT*)&br);//读出4096个字节
VS_SPI_SpeedHigh();
i=0;
do//主播放循环
{
if((VS_Send_MusicData(databuf+i)==0)&&(pause==0))//给VS10XX发送音频数据
{
i+=32;
}else
{
// key=KEY_Scan(0);
// switch(key)
// {
// case KEY0_PRES:
// rval=KEY0_PRES; //下一曲
// break;
// case KEY1_PRES:
// rval=KEY1_PRES; //上一曲
// break;
// case WKUP_PRES: //暂停/播放
// pause=!pause;
// break;
// default:
// break;
// }
mp3_msg_show(fmp3->fsize);//显示信息
}
}while(i<4096);//循环发送4096个字节
if(br!=4096||res!=0)
{
rval=0;
break;//读完了.
}
}
f_close(fmp3);
}[/mw_shl_code]
最后都这样,怕SD卡速度不够,先I设置为2分频(36M)进行读取数组,然后设置为9M发送数据给VS1053
一周热门 更多>