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条回答
jianfengxixi
2019-12-14 08:04
我也遇到过同样的问题
wav格式的文件中的振幅是有符号的,直接把高12位送DAC就会出现楼主的情况
下面以双声道16位为例说明:
假设读取的数据为0xff3500a7,则左声道为0x00a7,右声道为0xff35
显然右声道是一个负数,= - 0xcb , 如果直接送DAC ,这与原来的振幅相差就大了,就会出现楼主的情况
解决方法:把每一个读取的数据加上0x80008000

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

一周热门 更多>