OpenEdv-开源电子网

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

SD卡 I2S播放WAV文件 出现歌曲伴随噪声

[复制链接]

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2015-5-7
在线时间
28 小时
发表于 2015-5-7 10:43:20 | 显示全部楼层 |阅读模式
5金钱
我利用F103的文件系统读取SD卡里的wav文件(有符号16bit 双通道 44. 1K),通过I2S传输数据出现噪声但能听到歌曲。
是利用I2S中断里发送WAV数据,在主循环里开了个双缓冲的数组AB  不断通过文件系统读取4096字节放进。发现中断里的wav数据只有在我右移2位以上才会放出歌曲,并且噪声伴随。左移的位数越多只是声音越低。如果不右移则播放仅仅是 滋滋滋  哒哒哒的声音。
主循环:
[mw_shl_code=c,true]if(mf_open("0:music/nizhang.wav",0x01)==0) { wav_read_A(); flag_A=1; } while(1) { switch(flag_A) { case 1:wav_read_B();while(flag_A==1); break; case 0:wav_read_A();while(flag_A==0); break; } } [/mw_shl_code]
I2S中断:
[mw_shl_code=c,true]if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_TXE) == SET) { if(flag_A) { switch(count) { case 0: tmp = Wave_A[i++]; tmp = (tmp|(Wave_A[i++]<<8))>>2; SPI_I2S_SendData(SPI2, tmp);count++; break; case 1: tmp = Wave_A[i++]; tmp = (tmp|(Wave_A[i++]<<8))>>2; SPI_I2S_SendData(SPI2, tmp); count=0; break; } } if(flag_A==0) { switch(count) { case 0: tmp = Wave_B[i++]; tmp = (tmp|(Wave_B[i++]<<8))>>2; SPI_I2S_SendData(SPI2, tmp);count++; break; case 1: tmp = Wave_B[i++]; tmp = (tmp|(Wave_B[i++]<<8))>>2; SPI_I2S_SendData(SPI2, tmp); count=0; break; } } } if(i>=sizeof(Wave_A)) { switch(flag_A) { case 1: flag_A=0; break; case 0: flag_A=1; break; } i=0; }[/mw_shl_code]

如果我播放8bit的44k音频数据则是正常的,但是8bit数据在I2S发送数据时候左移则声音增大,不过只能左移到4位,超过4位后也是出现哒哒哒的声音。希望各路懂播放wav的人来帮帮忙

最佳答案

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

过去很久的帖子啦,好像是硬件问题。画了板子就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2015-5-7
在线时间
28 小时
 楼主| 发表于 2015-5-7 10:43:21 | 显示全部楼层
过去很久的帖子啦,好像是硬件问题。画了板子就好了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-8 00:09:43 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2015-4-29
在线时间
26 小时
发表于 2016-6-5 18:11:13 | 显示全部楼层
问题解决了吗,我准备做相同的东西,可否将解决方案分享一下
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-9-26
在线时间
8 小时
发表于 2016-6-5 22:47:53 | 显示全部楼层
没遇到过,帮顶
回复

使用道具 举报

9

主题

92

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1134
金钱
1134
注册时间
2014-7-25
在线时间
176 小时
发表于 2016-6-6 11:24:12 | 显示全部楼层
是硬件问题吧??
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2015-7-23
在线时间
31 小时
发表于 2016-6-6 17:29:18 | 显示全部楼层
硬件问题可能吧,之前我也遇到过噪声,把数据线跟电源线分开试试
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-8-31
在线时间
8 小时
发表于 2018-5-24 11:42:38 | 显示全部楼层
楼主,我也在做这个方案,声音一直是滋滋滋的,能分享下代码吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 15:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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