ESP32 示波器 vs 邏輯分析儀 (Oscilloscope vs Logic Analyzer) | 哪個適合你?實戰解析與專案推薦
示波器 vs 邏輯分析儀 (Oscilloscope vs Logic Analyzer),這是每位嵌入式開發者或電子工程愛好者在訊號除錯時常遇到的抉擇。兩者雖然都能「看訊號」,但本質上用途截然不同:一個著重於模擬波形的視覺化,另一個則專注於數位邏輯訊號的邊緣與時序解碼。尤其在使用像 ESP32 這類微控制器進行開發時,更會發現兩者在應用場景、取樣方式與分析能力上的差異十分明顯。
本篇文章將帶你深入比較這兩種工具的原理與應用情境,並實際探討如何在 ESP32 平台上打造低成本的示波器或邏輯分析儀,包含開源專案推薦、取樣限制解析,以及選擇建議。無論你是 Maker、工程師,或單純對訊號觀察有興趣的電子玩家,都能從本文中找到實用的參考依據。

內容
什麼是示波器?什麼是邏輯分析儀?
示波器(Oscilloscope) 是用來觀察類比訊號變化的儀器,能夠即時顯示電壓隨時間的波形。它適合用來查看如感測器輸出、PWM 訊號、電源電壓波動等變化連續的訊號。你可以清楚看到波形形狀、振幅、頻率,甚至是雜訊與毛邊,這些對於模擬電路除錯非常關鍵。
相對地,邏輯分析儀(Logic Analyzer) 則專門針對數位訊號進行擷取與分析。它能同時觀察多組 digital pin 的狀態變化,並解碼像 I²C、SPI、UART 這類協定,讓你了解通訊內容與時序準確性。它不像示波器那樣顯示連續電壓變化,而是記錄訊號是 0 或 1 的狀態,以及變化的時間點。
簡單來說:
- 示波器擅長「看波形」,分析電壓變化。
- 邏輯分析儀擅長「看資料」,追蹤通訊協定與數位邏輯。
Oscilloscope 和 Logic Analyzer 的差異
以 ESP32-S3 而言雖然不是專業的示波器或邏輯分析儀,但憑藉其強大的處理能力和豐富的硬體資源,可以在一定程度上實現這兩種工具的功能。以下將針對示波器與邏輯分析儀功能,從硬體性能和實際應用面進行比較:
示波器功能(使用 ADC):
- 最大取樣率:約 500 kSPS 到 1 MSPS(單通道,搭配 I2S + DMA)
- 可解析頻率:約 100 kHz 以下(根據奈奎斯特定理,取樣率需至少是訊號頻率的兩倍)
- ADC 解析度:12 bits,但實際有效解析度(ENOB)約為 9~10 bits
- 輸入電壓範圍:0~3.3V,超過時需使用分壓器
- 多通道支援:有限,多通道取樣會降低取樣率和穩定性
- 穩定性:取樣過程易受到 Wi-Fi、USB 傳輸和系統中斷干擾,影響資料連續性和準確性
- 適用場景:低頻類比訊號觀察,例如感測器輸出、慢變化的 PWM 波形及電壓趨勢監控
邏輯分析儀功能(使用 GPIO、RMT、I2S):
- 取樣率:可達數 MHz,依技術方案和軟體優化而定
- 多通道支援:支援多通道同步擷取,具備較高的靈活性
- 數位訊號解碼:可搭配開源工具(如 PulseView 與 sigrok)進行 I²C、SPI、UART 等通訊協定的解碼和時序分析
- 優勢:對數位邏輯訊號捕捉及除錯有明顯優勢,且對開發流程幫助大
- 適用場景:數位通訊協定除錯、PWM 輸出分析、紅外線解碼等數位訊號監控
ESP32 示波器
以 ESP32-S3 而言,內建 12-bit ADC 是實作示波器功能的核心:
- ADC:最高約 1 MSPS(單通道,搭配 I2S + DMA)
- I2S:用於穩定、高速從 ADC 讀取資料,提升取樣連續性
- 電壓範圍:0~3.3V,超過需用分壓器保護
- 限制:多通道同時取樣速度下降,取樣易受 Wi-Fi 與系統干擾影響
適合低頻類比波形監測,如感測器訊號或 PWM 輸出。
ESP32 邏輯分析儀
以 ESP32-S3 而言,在數位訊號分析上具有更多硬體支援:
- GPIO:可多通道擷取數位訊號
- RMT 模組:硬體定時器捕捉 PWM、紅外線等脈衝訊號,提供精準時間戳記
- I2S:高速平行資料擷取,實現多通道邏輯信號同步取樣
- 中斷機制:快速偵測數位訊號狀態變化,提高訊號擷取效率
硬體資源充足,適合用於數位協定解碼、PWM 分析、邏輯訊號監控等。
什麼是 RMT 模組?
RMT(Remote Control Peripheral)是 ESP32 系列晶片內建的一種硬體模組,專門用來精確產生與接收脈衝訊號。它可以獨立於 CPU 運作,利用硬體計時器來控制信號的高低電位時間,實現高解析度的脈衝寬度測量和產生。
RMT 的主要功能:
- 精準捕捉脈衝訊號:能測量高電位與低電位持續的時間,適合紅外線遙控、PWM 脈衝等訊號分析。
- 高效輸出波形:產生特定頻率和寬度的脈衝波,用於紅外線發射或其他遠端控制應用。
- 節省 CPU 資源:硬體獨立運作,不需 CPU 持續監控,減輕處理負擔。
- 多通道支援:同時管理多組輸入輸出訊號。
為什麼 RMT 很適合用於邏輯分析儀?
因為它能精確記錄數位訊號的高低電位變化時間,捕捉快速且細微的邏輯變化,非常適合用來解碼數位通訊協定(如 I2C、SPI、PWM),提高訊號擷取的準確度和效率。
ESP32-S3 RMT 模組簡易範例
- 初始化 RMT 接收器
#define RMT_RX_CHANNEL RMT_CHANNEL_0
#define RMT_RX_GPIO_NUM 18 // Adjust to your actual hardware GPIO pin
#define RMT_CLK_DIV 80 // Clock divider (80 division = 1us timing resolution)
void rmt_rx_init() {
rmt_config_t rmt_rx;
rmt_rx.channel = RMT_RX_CHANNEL; // Select RMT channel for receiving
rmt_rx.gpio_num = RMT_RX_GPIO_NUM; // Assign GPIO number for RMT input
rmt_rx.clk_div = RMT_CLK_DIV; // Set clock divider for timing resolution
rmt_rx.mem_block_num = 1; // Use one memory block for RMT
rmt_rx.rmt_mode = RMT_MODE_RX; // Configure RMT as receiver mode
rmt_rx.rx_config.filter_en = true; // Enable filter to ignore short pulses
rmt_rx.rx_config.filter_ticks_thresh = 100; // Filter pulses shorter than this threshold (in ticks)
rmt_rx.rx_config.idle_threshold = 10000; // Idle threshold for end of signal detection (in ticks)
rmt_config(&rmt_rx); // Apply RMT configuration
rmt_driver_install(rmt_rx.channel, 1000, 0); // Install RMT driver with 1KB buffer, no ISR
}
- 接收並解析脈衝
#include "esp_log.h"
static const char *TAG = "RMT_RECEIVE";
void rmt_receive_pulse() {
rmt_item32_t items[64];
size_t rx_size = 0;
// Wait to receive data with a 100ms timeout
esp_err_t ret = rmt_read_items(RMT_RX_CHANNEL, items, 64, 100 / portTICK_PERIOD_MS);
if (ret == ESP_OK) {
for (int i = 0; i < 64; i++) {
// items[i].duration0 and items[i].duration1 represent the duration of high and low levels respectively (in units defined by clk_div)
ESP_LOGI(TAG, "Pulse %d: high %d us, low %d us", i, items[i].duration0, items[i].duration1);
}
}
}
- 主程式範例
void app_main() {
rmt_rx_init();
while (1) {
rmt_receive_pulse();
vTaskDelay(pdMS_TO_TICKS(500));
}
}
結論
ESP32-S3 雖然不是專業級的示波器(Oscilloscope)或邏輯分析儀(Logic Analyzer),但其內建的 ADC 與 RMT 等硬體模組,仍能在低頻波形觀察與數位邏輯分析中發揮實用價值。
若你主要觀察類比波形,ESP32-S3 的 ADC 配合 I2S DMA 是一個不錯的選擇;而若你重視數位訊號擷取與通訊協定解碼,RMT 模組與 GPIO 多通道功能將更為合適。
依據不同應用需求選擇適當方案,您將能以低成本開發板,完成多樣的訊號分析任務,非常適合 DIY、學習與入門級專案。









