奈奎斯特采样定理
奈奎斯特采样定理
一、什么是采样?
现实中的温度、电压、声音、加速度等信号通常是连续模拟信号。
而 STM32 的 ADC 需要把连续信号转换成数字数据,因此 ADC 会按照一定的时间间隔不断读取信号。
例如:
模拟信号
↓
ADC 每隔 Ts 采样一次
↓
x[0] x[1] x[2] x[3] x[4] ...采样周期:
Ts = 1 / fs其中:
fs = 采样频率例如:
fs = 10 kHz表示 ADC 每秒采样:
10000 次二、奈奎斯特采样定理
对于最高频率为 fmax 的带限信号,理论上需要满足:
fs > 2 × fmax也就是说:
采样频率必须大于信号最高频率的 2 倍,才能避免采样造成的频谱混叠。
例如:
信号最高频率:
fmax = 10 kHz那么:
fs > 2 × 10 kHz
fs > 20 kHz因此采样频率至少应该大于 20 kHz。
三、为什么必须大于 2 倍?
假设一个正弦信号:
f = 1 kHz如果采样频率很高:
fs = 10 kHz那么一个周期可以得到很多采样点:
╭───╮
╭─╯ ╰─╮
───╯ ╰───
• • • • • • •采样点足够密集,可以描述原始波形。
但如果采样频率越来越低,采样点越来越少,就可能出现:
不同频率的信号产生完全相同或者无法区分的采样结果。
这就是混叠。
四、什么是混叠 Aliasing?
假设:
采样频率:
fs = 10 kHz奈奎斯特频率:
fN = fs / 2
= 5 kHz现在输入一个:
f = 8 kHz的信号。
因为:
8 kHz > 5 kHz已经超过奈奎斯特频率,所以会发生混叠。
采样后,它可能表现成:
f_alias = |f - fs|
= |8 - 10|
= 2 kHz也就是说:
真实信号:8 kHz
↓
ADC
↓
错误表现:2 kHz这就是:
8 kHz 的信号被采样系统错误地认为是 2 kHz。
五、为什么混叠无法通过软件恢复?
因为混叠之后,不同频率可能产生相同的采样数据。
例如:
8 kHz
\
\
→ 相同的采样结果
/
/
2 kHzADC 输出给 CPU 的只是这些采样点。
CPU 无法仅通过这些采样点判断:
原来的信号到底是 8 kHz 还是 2 kHz。
所以:
混叠一旦发生,后面的数字信号处理无法可靠恢复原始信号。
因此必须在 ADC 采样之前防止混叠。
六、为什么 ADC 前需要抗混叠滤波器?
实际系统通常是:
传感器
↓
模拟低通滤波器
↓
ADC
↓
DMA
↓
RAM
↓
CPU处理这个模拟滤波器叫:
Anti-Aliasing Filter,抗混叠滤波器。
它的作用是:
在 ADC 采样之前,衰减高于奈奎斯特频率的信号。
例如:
fs = 10 kHz
奈奎斯特频率:
fs / 2 = 5 kHz希望:
0 ~ 5 kHz
↓
保留
> 5 kHz
↓
尽可能滤除这样进入 ADC 的信号就不会因为高频成分过多而产生严重混叠。
七、奈奎斯特频率
奈奎斯特频率:
fN = fs / 2例如:
fs = 20 kHz
fN = 10 kHz因此:
采样频率:
fs = 20 kHz
奈奎斯特频率:
fN = 10 kHz两者不要混淆:
fs → 每秒采多少次
fs / 2 → 理论上可唯一表示的最高频率边界八、为什么实际采样率通常大于 2 倍?
采样频率通常是5~10倍
fs > 2fmax 是理论条件。
实际工程不会简单地把:
fs = 2fmax作为采样率。
因为实际系统还存在:
ADC误差
时钟误差
噪声
模拟滤波器过渡带
高频干扰例如:
fmax = 10 kHz理论要求:
fs > 20 kHz实际可能选择:
fs = 40 kHz或者:
fs = 50 kHz给滤波器和系统留出余量。
九、从频域理解采样
采样会使原始信号的频谱以采样频率 fs 为周期不断复制。
如果:
fs > 2fmax频谱副本之间不会发生重叠:
[频谱] [频谱] [频谱]因此可以通过滤波器把原始频谱分离出来。
如果:
fs < 2fmax频谱副本会重叠:
[████████]
[████████]
↑
重叠频谱重叠就是:
混叠 Aliasing。
十、STM32 ADC 中怎么用?
假设一个传感器的有效信号最高频率:
fmax = 2 kHz理论最低采样率:
fs > 2 × 2 kHz
fs > 4 kHz实际可以选择:
fs = 10 kHz那么:
采样周期:
Ts = 1 / 10000
= 100 μs奈奎斯特频率:
fN = fs / 2
= 5 kHz完整采集链:
传感器
↓
抗混叠低通滤波器
↓
STM32 ADC
↓
10 kHz采样
↓
DMA
↓
RAM数组
↓
CPU / FreeRTOS
↓
数字信号处理十一、采样频率和 ADC 分辨率不是一回事
这两个概念必须区分。
采样频率
决定:
时间上采得够不够密。
例如:
10 kSPS
100 kSPS
1 MSPSADC 分辨率
决定:
电压幅值分得够不够细。
例如:
8 bit
10 bit
12 bit
16 bit所以可以简单记:
采样频率 → 时间方向
ADC位数 → 幅值方向例如:
STM32 12 bit ADC
采样率 100 kSPS表示:
每秒采样 100000 次
每个采样值用 12 bit 表示十二、奈奎斯特采样定理总结
最核心的公式:
fs > 2fmax其中:
fs = 采样频率
fmax = 信号最高频率奈奎斯特频率:
fN = fs / 2如果:
fmax < fs / 2理论上可以避免混叠。
如果:
fmax > fs / 2就可能发生:
Aliasing
混叠实际 ADC 系统通常采用:
确定信号带宽
↓
选择足够高的采样率
↓
ADC前增加抗混叠滤波器
↓
ADC采样
↓
DMA搬运
↓
数字信号处理最终记住:
采样频率决定能不能正确表示信号;ADC 分辨率决定每次采样的幅值能表示得多精细。

