整合類比前端、ADC、MCU、顯示。屬於「進階」專案。


一、學習目標

  • 高速 ADC 介面
  • 類比前端設計(衰減、保護、補償)
  • 觸發系統
  • 即時顯示
  • 完整訊號鏈

二、規格

項目 簡易版 進階版
通道數 1 2
頻寬 1 MHz 50 MHz
取樣率 5 MSa/s 200 MSa/s
解析度 8-bit 12-bit
記憶體深度 4k 點 1M 點
觸發 邊緣 邊緣、脈衝寬度
顯示 OLED 128x64 TFT 320x240
介面 USB

三、簡易版架構(適合學習)

主控

STM32H7(高速 ADC、DMA、480 MHz Cortex-M7)。

訊號路徑

BNC ── 衰減器(1×/10×) ── 保護(TVS+ 串聯R) ── OPAMP buffer ──
       直流偏壓加法 ── ADC(STM32 內建 12-bit, 3.6 MSa/s)

衰減器

  • 1×:直接
  • 10×:1MΩ 分壓 + 補償電容
  • 切換用繼電器或類比開關

偏壓加法

ADC 只能 0–3.3V,但訊號可能正負:

V_adc = V_signal/N + V_offset

V_offset 通常 1.65V(中點),用 OPAMP 加法器。

保護

  • TVS:限制過壓
  • 串聯電阻:限制電流
  • ESD 二極體(Schottky):限至 0~3.3V

四、ADC 與 DMA

STM32H7 ADC 範例(HAL):

HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, BUFFER_SIZE);

DMA 將取樣資料直接傳到 RAM,CPU 只在 buffer 滿時處理。

取樣率設定

fs = ADC_clock / (cycles_per_sample)

H7 ADC 最高約 3.6 MSa/s(12-bit)。


五、觸發系統

邊緣觸發

每個取樣與閾值比較,找上升 / 下降緣:

for (i = 1; i < BUFFER_SIZE; i++) {
  if (adc_buf[i-1] < threshold && adc_buf[i] >= threshold) {
    trigger_index = i;
    break;
  }
}

預觸發

要顯示觸發前後的資料,環形緩衝區記錄:

Pre-trigger    Post-trigger
──────────► T ──────────►

六、顯示

簡易版(OLED 128×64)

for (x = 0; x < 128; x++) {
  uint16_t adc_val = waveform[x * (BUFFER_SIZE/128)];
  uint8_t y = 63 - (adc_val * 64 / 4096);
  display.drawPixel(x, y, WHITE);
}
display.display();

進階版(TFT 320×240)

加格線、刻度、自動量測(Vpp、頻率、平均、RMS)。

自動量測:

頻率

// 找兩個連續上升緣
freq = 1.0 / (period_samples * sample_period);

Vpp / RMS

vmax = max(buffer);
vmin = min(buffer);
vpp = vmax - vmin;

vrms = sqrt(sum(buf[i]^2) / N);

七、類比前端:補償電容(10× 探棒原理)

       1MΩ
   ┌──/\/\──┐
─┤        ├── 9MΩ ──── 輸入
   └──||──┘
      C1
                       ─── 1MΩ ── GND(示波器輸入)
                       ─── 20pF(示波器輸入電容)

當 R₁C₁ = R₂C₂ 時,所有頻率衰減比相同(10×)。

可變電容用於微調補償。


八、進階版:50 MHz 頻寬

需要: - 高頻寬 OPAMP(OPA847、AD8045 等 GBW > 500 MHz) - 外部高速 ADC(如 AD9226 65 MSa/s 12-bit) - FPGA 接 ADC + 觸發 + Buffer - USB 介面 PC 顯示 - 4 層 / 6 層 PCB,妥善阻抗控制

成本:$200–500,但效能接近商用入門示波器。


九、開源專案參考

  • Scoppy:用 Pi Pico 做示波器(簡易)
  • DSO138 / DSO150:低成本套件
  • OpenScope MZ:開源儀器
  • Sigrok / PulseView:跨平台儀器軟體
  • ThunderScope:高頻寬開源示波器專案

十、量測自己的示波器

校驗: - 1 kHz 方波(探棒補償用) - 函數產生器標準訊號 - 與商用示波器比對


十一、本專案重點

✅ 您學到:

  • [x] 類比前端設計
  • [x] 高速 ADC 操作
  • [x] DMA 高吞吐量
  • [x] 觸發演算法
  • [x] 即時繪圖
  • [x] 自動量測

下一階段:第 9 章 參考資料