欢迎光临~啄木鸟电子科技

新闻

音频信号采样完整流程

音频信号采样完整流程

音频属于模拟交流信号:20Hz‑20kHz,交变、有正负电压,不能直接丢给单片机ADC(单片机ADC大多只能采0~VREF正电压,不能采负半周)。
核心两件事:

  • ①信号偏置抬直流;
  • ②ADC参数匹配音频带宽;
  • ③采样率、位深选择;
  • ④硬件电路;
  • ⑤软件处理。


1、音频基础参数

  • 人耳音频:20Hz ~ 20kHz
  • 奈奎斯特采样定理:采样率 $Fs>2\times f_{max}$ 音频最高20kHz → 采样率至少**≥40kHz**,常用标准:语音:8kHz、16kHz
  • 音乐:44.1kHz、48kHz
  • 位深:8bit /10bit /12bit /16bit;bit越高动态范围越大。
  • STM8 ADC:10bit,最高ADC时钟4MHz,很难稳定跑到44.1k;做音频采样STM8不适合。 STM32(F1/F4):12bit,配合DMA,可以做到44.1K采样。

2、最关键硬件:音频交流信号抬直流偏置

麦克风/音频输出是交流信号,上下摆动,存在负电压。单片机ADC只能输入 0 ~ VREF(0‑3.3V),负电压会直接损坏ADC引脚。

标准偏置电路(单电源3.3V)


把交流信号叠加在直流中点 VCC/2 =1.65V
静态:输出直流1.65V;音频信号在1.65V上下摆动。 电路结构:
两个等值电阻 R1=R2=10kΩ,一端接3.3V,一端GND,中间节点产生1.65V直流偏置。
隔直电容C(1‑10μF):音频输入经过电容耦合,叠加到1.65V偏置点。
再接RC滤波:R=1k,C=100nF,接到ADC输入引脚。
公式: 静态ADC直流值 = Vcc/2 =1.65V 音频信号就在 0~3.3V之间摆动,无负电压。
❗不要直接把麦克风输出接ADC引脚,负半周会造成采样失真甚至烧毁IO。

麦克风前置


  • 驻极体麦克风需要偏置供电+运放放大,麦克风输出毫伏级,幅值太小,ADC分辨不出,需要运放放大到几百毫伏~1V级别。


3、ADC配置要点(音频采样)

  1. 采样时间要短 音频是高频信号,不能用长采样周期; STM32:采样周期选 1.5 / 7.5周期,保证能跟上44.1kHz。
  2. 必须DMA 音频连续采样,禁止CPU循环读取ADC,会丢采样点。DMA循环搬运ADC结果到缓冲区。
  3. 参考电压:稳定3.3V,最好加0.1uF去耦电容;
  4. 模拟地与数字地单点共地,减少电源噪声。

4、软件流程

  1. DMA循环采集ADC原始值;
减去直流中点值:

以3.3V系统,中点1.65V;12位ADC:中点raw值 = 2048

int16_t audio_sample = (int16_t)adc_raw - 2048;

把0‑4095无符号ADC值转换成有符号音频样本:正负代表声波上下振动。 3. 缓冲区做乒乓缓存(ping‑pong buffer):DMA半满/满中断,一缓冲区采集,另一缓冲区处理; 4. 可选:滤波、压缩、编码(PCM),保存音频数据。

5、STM8为什么不适合音频采样

STM8S ADC最大时钟4MHz;单次转换需要14个ADC时钟周期。 单次转换时间:14/4M = 3.5μs → 理论最大采样率 ~285kHz。 但没有硬件DMA,完全靠CPU读取,中断开销巨大,跑44.1k容易丢点;适合直流、低频传感器,不适合音频。

音频采样建议硬件:STM32F103 / F4 / GD32,带DMA。

6、两种工程方案对比

方案A:MCU+ADC直接采样PCM

  • 优点:成本低;
  • 缺点:需要运放偏置放大;MCU负担重;适合简单语音采集。

方案B:专用音频ADC芯片(PCM1808等)I2S接口

  • I2S硬件接口,专门传输音频;MCU只接收数据流,不用处理模拟偏置;音质好。

    STM32自带I2S外设,做音频优先选I2S音频芯片。

7、常见踩坑

  1. 没有隔直电容、没有直流偏置:负半周削波,采样全是噪声;
  2. 信号幅值太小:ADC数值几乎不动,需要运放放大;
  3. 不使用DMA:大量采样点丢失,声音卡顿失真;
  4. 电源噪声:模拟地没有处理,采样出来满底噪;
  5. 采样率不满足奈奎斯特,发生混叠,产生奇怪杂音。

如果你需要,我可以给: 1)运放麦克风偏置放大完整原理图说明; 2)STM32 DMA+ADC乒乓缓存音频采样示例代码; 3)或者I2S音频采集简单示例。

联系我们

联系人:客服在线

手机:全R:13903011251

电话:李R:13530006400

邮箱:729986191@qq.com

地址: GUANGDONG PROVINCE