16Khz采样频率,12Bit采样精度,经过ADPCM压缩解压缩算法后,听到一些低噪,通过硬件排除(一声道直接将mic经过运放后到耳放输出,判断进入AD的声音OK),认为问题来之AD采样内部噪声。
优化思路:
1、ADC经过16KHz的Timer进行DMA到SampBuf[32];
2、在DMA中断,将SampBuf每相邻两个数据进行一次均值滤波,那么32个数据可以求31次,所以
===> 增加一个16bit的变量PreSamp,用于存储SampBuf[32-1],将最后的数据保存,用于衔接后一次DMA中断的第一组均值的第一个数据,即PreSamp,SampBuf[0];
新增变量为静态变量,初值设为0即可。这样数据才会连续,不会出现每32个数据丢一个数据的bug;
3、将数据编解码;
4、启动DAC DMA的Timer中断,进行数据传输;
5、OK
附:均值滤波算法(计算结果存储为整数型适用)
static uint16_t EndSampVal = 0;
#if 0
PsamBuff[0] = (int16_t)(((EndS