🔌 嵌入式通訊協議互動教學

透過動畫與互動來理解 Ring Buffer、UART、I2C、I2S、SPI、USB

🎯 Ring Buffer 視覺化

0
/ 8 項目
寫入指標
讀取指標
有資料
點擊「寫入」或「讀取」來操作環形緩衝區

📚 什麼是 Ring Buffer?

🎯 核心概念

Ring Buffer(環形緩衝區)是一種固定大小的資料結構, 當寫入到尾端時會繞回到開頭繼續寫入,形成一個「環」。

⚡ 為什麼用它?

  • 固定記憶體:不需要動態分配,避免記憶體碎片
  • O(1) 操作:讀寫都是常數時間
  • 生產者-消費者:完美處理不同速度的資料流

💡 常見應用

UART 接收緩衝 音訊串流 網路封包 日誌記錄 鍵盤輸入

// 簡化程式碼

write_idx = (write_idx + 1) % SIZE;
read_idx = (read_idx + 1) % SIZE;
// 透過取餘數實現「環繞」效果

📊 協議比較表

協議 線數 同步/非同步 速度 拓撲 典型應用
UART 2 非同步 ~1 Mbps 點對點 Debug, GPS, 藍牙
I2C 2 同步 ~3.4 Mbps 多從設備 感測器, EEPROM
SPI 4+ 同步 ~50 Mbps 多從設備 Flash, 螢幕, SD卡
I2S 3 同步 ~12 Mbps 點對點 音訊 DAC/ADC
USB 4 同步 ~20 Gbps 星狀/樹狀 幾乎所有外設