STM32内部DAC播放WAV音频文件

2019-12-10 18:22发布

用STM32的DAC播放WAV,WAV文件放在SD卡中。现在已经能实现播放,在网上下的8位采样的声音文件播放完全没有问题,但是播放16位的文件时,因为DAC最高位数是12位,所以我读取数据后只取高12位送去DAC,但发现放出来的杂音非常大,很大的哒哒哒的背景声,我也尝试了取低12位播放,效果更糟。请问下有什么办法可以播放16位的文件么,或者可以用什么软件将16位的WAV转成12位以下的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
71条回答
liber730
1楼-- · 2019-12-13 18:36
找这方面资料,关注
Excellence
2楼-- · 2019-12-13 22:59
 精彩回答 2  元偷偷看……
苹果520
3楼-- · 2019-12-14 00:21
not_at_all 发表于 2011-7-14 22:10
虽然WAV解码都是那个样子  不过给你对比一下吧!
用8位PWM作为DAC
这是WAV解码部分

可否共享下代码,或者提供下思路。谢谢 了大虾~~
苹果520
4楼-- · 2019-12-14 02:39
版主可否提供源代码~~~~~~~~
hncjs
5楼-- · 2019-12-14 05:31
不错看   
jianfengxixi
6楼-- · 2019-12-14 08:04
我也遇到过同样的问题
wav格式的文件中的振幅是有符号的,直接把高12位送DAC就会出现楼主的情况
下面以双声道16位为例说明:
假设读取的数据为0xff3500a7,则左声道为0x00a7,右声道为0xff35
显然右声道是一个负数,= - 0xcb , 如果直接送DAC ,这与原来的振幅相差就大了,就会出现楼主的情况
解决方法:把每一个读取的数据加上0x80008000

有符号数:0x8000--0xffff--0x0000--0x7fff
              +0x8000
无符号数:0x0000--0x7fff--0x8000--0xffff

一周热门 更多>