2、嵌入式系统选型:主控芯片选型(STM32/ESP32)、ADC选型(高速ADC)、显示屏选型(TFT-LCD/OLED)

好,咱们开始聊硬件选型。做频谱仪,说白了就是跟信号打交道。主控芯片、ADC、显示屏,这三样东西决定了你的仪器能看多远、看多清、看得爽不爽。我这些年折腾下来,踩过的坑不少,今天把经验掰开揉碎了讲给你听。

2.1 主控芯片选型:STM32 vs ESP32

先说说大脑——主控芯片。市面上常见的就俩阵营:STM32 和 ESP32。很多人问我选哪个,我的回答是:看你的频谱仪要干什么活。

核心结论:STM32 适合做纯信号处理、实时性要求高的场景;ESP32 适合需要联网、Wi-Fi 传输数据的场景。

2.1.1 STM32:老牌劲旅,稳如老狗

我个人习惯用 STM32F4 或 H7 系列。为什么?因为它的 DSP 指令集和 FPU 是硬核。做 FFT 运算时,硬件浮点运算比软件模拟快一个数量级。我在项目中遇到过用 STM32F407 做 1024 点 FFT,主频 168MHz,算下来只要 0.5ms 左右。这个速度对于实时频谱显示来说,绰绰有余。

STM32 的另一个优势是外设丰富。定时器、DMA、ADC 接口,都是现成的。你想想看,频谱仪需要连续采样、连续计算、连续显示,这三件事如果都靠 CPU 轮询,那 CPU 得累死。用 DMA 把 ADC 数据直接搬到内存,CPU 只管算 FFT,这才是正解。

我的小技巧:选 STM32 时,重点关注它的 SRAM 大小。频谱仪做 FFT 需要大量内存,尤其是做 4096 点以上的 FFT。我建议至少选 256KB SRAM 的型号,否则你会被内存碎片搞疯。

2.1.2 ESP32:无线小能手,但别太贪心

ESP32 这两年火得不行。双核、Wi-Fi、蓝牙、价格便宜,确实香。但我要泼盆冷水——它的实时性不如 STM32。为什么?因为它的 FreeRTOS 调度和 Wi-Fi 协议栈会抢占 CPU 时间。你正在做 FFT 计算,突然 Wi-Fi 要发包,CPU 就被抢走了。这在频谱仪这种实时系统里,是个大问题。

不过,ESP32 也有它的用武之地。比如你要做一个远程频谱监测仪,把数据通过 Wi-Fi 传到电脑或手机上显示。这时候 ESP32 就是绝配。我记得有一次帮朋友做项目,用 ESP32 采集音频频谱,通过 WebSocket 实时推送到浏览器显示,效果出奇的好。

避坑指南:我曾经用 ESP32 做高速 ADC 采样,结果发现它的 ADC 采样率最高只有 200kHz 左右,而且精度只有 12 位。如果你需要采样 1MHz 以上的信号,ESP32 的内置 ADC 根本不够用。这时候必须外挂高速 ADC。

2.2 ADC 选型:高速 ADC 才是硬道理

ADC 是频谱仪的耳朵。耳朵不好,再好的大脑也白搭。频谱仪需要的 ADC,核心指标就两个:采样率和分辨率。

指标 说明 我的建议
采样率 决定了你能看到的最高频率(奈奎斯特定理) 至少是目标频率的 2.5 倍,建议 5 倍以上
分辨率 决定了你能看到的最小信号幅度 12 位起步,14 位更好,16 位是发烧级
信噪比(SNR) 决定了动态范围 60dB 以上才能看到 -60dB 的杂散信号

2.2.1 常见高速 ADC 芯片推荐

市面上适合嵌入式频谱仪的高速 ADC 其实不多。我列几个我用过的:

  • AD9280:8 位、32MSPS。便宜,但分辨率太低,只能看个大概。
  • AD9226:12 位、65MSPS。性价比之王,我第一个频谱仪项目用的就是它。
  • AD9640:14 位、80MSPS。性能好,但价格也感人。
  • LTC2208:16 位、130MSPS。发烧级,适合做专业仪器。

我个人习惯用 AD9226。为什么?12 位分辨率够用,65MSPS 采样率可以看 20MHz 以内的信号,价格才几十块钱。你想想看,一个入门级频谱仪,能看 20MHz 带宽,已经覆盖了 FM 广播、业余无线电、短波等大部分应用场景了。

重要提醒:高速 ADC 的布局布线非常讲究。模拟信号和数字信号要分开走,电源要加滤波,地平面要完整。我曾经因为 ADC 布局不当,导致采样数据里全是 50Hz 工频干扰,查了三天才找到原因——原来是 ADC 的模拟地和数字地没分开。

2.2.2 前端模拟电路不能省

ADC 前面必须加一级驱动电路。为什么?因为高速 ADC 的输入阻抗通常很低,而且对输入信号的共模电压有要求。我一般用 AD8138 或 THS4509 这类差分运放做单端转差分,同时提供增益和偏置调整。

// 伪代码:ADC 采样配置示例
void ADC_Init(void) {
    // 设置采样率 40MSPS
    // 配置 ADC 为单端输入模式
    // 使能内部参考电压 2V
    // 设置数据输出格式为二进制补码
}

2.3 显示屏选型:TFT-LCD vs OLED

显示屏是频谱仪的脸面。用户第一眼看到的就是屏幕上的频谱瀑布图。选不好,再好的数据也白搭。

2.3.1 TFT-LCD:大屏、彩色、便宜

TFT-LCD 是主流选择。3.5 寸到 7 寸的屏幕,分辨率从 320x240 到 1024x600 都有。我推荐用 4.3 寸、480x272 分辨率的屏幕,大小适中,显示频谱和瀑布图都够用。

TFT-LCD 的优势是色彩丰富。你可以用不同颜色表示信号强度:红色表示强信号,蓝色表示弱信号,中间用渐变过渡。这样一眼就能看出信号分布。我在项目中做过一个功能:把 -20dBm 以上的信号标成红色,-40dBm 到 -20dBm 标成黄色,-60dBm 以下标成绿色。用户反馈说比纯数字显示直观多了。

我的经验:TFT-LCD 的驱动芯片很重要。ILI9341 和 SSD1963 是常用的两款。ILI9341 适合 3.5 寸以下的小屏,SSD1963 适合 4.3 寸以上的大屏。别搞混了,否则刷新率上不去。

2.3.2 OLED:小屏、高对比、省电

OLED 的优势是每个像素自发光,对比度极高。在暗光环境下看频谱,OLED 的效果秒杀 TFT-LCD。但 OLED 也有缺点:尺寸小(通常 1.3 寸以下)、价格贵、有烧屏风险。

我建议 OLED 用在便携式频谱仪上。比如做一个手持式的 2.4GHz 频谱分析仪,用 1.3 寸 OLED 显示,电池供电,可以连续工作 8 小时。这种场景下,OLED 的低功耗优势就体现出来了。

对比项 TFT-LCD OLED
尺寸范围 1.8寸 ~ 10寸+ 0.96寸 ~ 2.4寸
色彩 16位/18位真彩色 单色/双色/有限彩色
对比度 一般(背光影响) 极高(自发光)
功耗 较高(背光常亮) 低(仅亮像素耗电)
刷新率 高(SPI/8080接口) 中(SPI接口为主)
价格 便宜 较贵

2.3.3 接口选择:SPI 还是 8080?

显示屏的接口直接影响刷新率。SPI 接口简单,但速度慢,适合小屏。8080 并口速度快,但占用引脚多。我一般这样选:

  • 3.5 寸以下小屏:用 SPI 接口,省引脚,刷新率够用
  • 4.3 寸以上大屏:用 8080 并口,否则刷新率跟不上频谱显示
  • 如果主控有 LTDC(如 STM32F429):直接用 RGB 接口,速度最快

注意:频谱仪的屏幕刷新率至少需要 30fps,否则频谱图会卡顿。我测试过,用 STM32F407 + SPI 驱动 3.5 寸屏,刷新率只能到 20fps 左右。后来换成 8080 并口,直接飙到 50fps。所以,别为了省几个引脚牺牲用户体验。

2.4 选型总结:我的推荐组合

说了这么多,给个实际方案吧。这是我最近做的一个项目配置:

  • 主控:STM32F429ZIT6(2MB Flash、256KB SRAM、带 LTDC)
  • ADC:AD9226(12位、65MSPS)
  • 显示屏:4.3寸 TFT-LCD(480x272、RGB接口、ILI9341驱动)
  • 前端:AD8138 差分运放 + 可编程增益放大器

这套配置做出来的频谱仪,可以看 0~20MHz 的信号,动态范围约 70dB,刷新率 40fps。成本控制在 200 元以内。说实话,这个性能已经可以跟一些入门级商用频谱仪掰手腕了。

嗯,选型就聊到这儿。下一章咱们开始讲硬件电路设计,包括 ADC 前端电路、电源树设计、PCB 布局要点。到时候我会把踩过的坑一个一个说清楚。