八 音频——C语言生成正弦波并用 I2S 输出( 二 )


波形
将上述数据用散点图绘制出来如下图
I2S 输出 数据通路
sram/flash -> I2S master SDATAO -> AP SDATAI
USB 麦克风
对于 USB 麦克风,如果采样率为 16KHz,那么 1s 内有 16000 个点,1ms 内有 16 个点,其他采样率类似,如果是双声道,数据量需要乘以 2。
对于全速设备的等时端点来说,1ms 来一次中断,所以将对应采样率的点数通过 USB 等时端点发送给主机即可 。
short buf_mono_16KHz[] = {0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539};short buf_mono_32KHz[] = {0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, 0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, };short buf_mono_48KHz[] = {0, 4276, 8480, 12539, 16383, 19947, 23169, 25995, 28377, 30272, 31650, 32486, 32767, 32486, 31650, 30272, 28377, 25995, 23169, 19947, 16383, 12539, 8480, 4276, 0, -4276, -8480, -12539, -16383, -19947, -23169, -25995, -28377, -30272, -31650, -32486, -32767, -32486, -31650, -30272, -28377, -25995, -23169, -19947, -16383, -12539, -8480, -4276,};short buf_mono_96KHz[] = {0, 2143, 4276, 6392, 8480, 10532, 12539, 14492, 16383, 18204, 19947, 21604, 23169, 24635, 25995, 27244, 28377, 29387, 30272, 31028, 31650, 32137, 32486, 32696, 32767, 32696, 32486, 32137, 31650, 31028, 30272, 29387, 28377, 27244, 25995, 24635, 23169, 21604, 19947, 18204, 16383, 14492, 12539, 10532, 8480, 6392, 4276, 2143, 0, -2143, -4276, -6392, -8480, -10532, -12539, -14492, -16383, -18204, -19947, -21604, -23169, -24635, -25995, -27244, -28377, -29387, -30272, -31028, -31650, -32137, -32486, -32696, -32767, -32696, -32486, -32137, -31650, -31028, -30272, -29387, -28377, -27244, -25995, -24635, -23169, -21604, -19947, -18204, -16383, -14492, -12539, -10532, -8480, -6392, -4276, -2143, };
软件测试 波形测试
频谱分析
上述代码中,将数组的幅值修改为? 2 15 -2^{15} ?215

八  音频——C语言生成正弦波并用 I2S 输出

文章插图
得到的正弦波数组为
short test_buf_96_1db[] = {0, 1071, 2138, 3196, 4240, 5266, 6269, 7246, 8191, 9101, 9973, 10802, 11584, 12317, 12997, 13621, 14188, 14693, 15135, 15513, 15824, 16068, 16242, 16347, 16383, 16347, 16242, 16068, 15824, 15513, 15135, 14693, 14188, 13621, 12997, 12317, 11584, 10802, 9973, 9101, 8191, 7246, 6269, 5266, 4240, 3196, 2138, 1071, 0, -1071, -2138, -3196, -4240, -5266, -6269, -7246, -8191, -9101, -9973, -10802, -11584, -12317, -12997, -13621, -14188, -14693, -15135, -15513, -15824, -16068, -16242, -16347, -16383, -16347, -16242, -16068, -15824, -15513, -15135, -14693, -14188, -13621, -12997, -12317, -11584, -10802, -9973, -9101, -8191, -7246, -6269, -5266, -4240, -3196, -2138, -1071, };
该正弦波数组对应的 FFT 为
对于数字音频,根据 dBFS 的计算公式为:理解dB
d B = 20 ? l o g 10 s a m p l e 65535 dB = 20 * log_{10}{\frac{}{65535}} dB=20?log10??
由上公式可以算出两者相差 6dB 。
对比两次频谱分析,差值也为 6dB( ? 8 ? ? 2 {-8 - -2} ?8??2) 。
通过测量二者的 RMS 也可以看出二者相差 6dB 。
AP 仪器测试
AP 一起测试时,输入源选择数字音频接口即 I2S,并配置 AP 端 I2S 格式和 MCU 端格式一致
波形测试
FFT 测试
THD+N 测试
测试数据
频率测试
测试数据