📘 《AI 時代系列(6):進階通訊工程——邁向2035年太空星鏈網路時代》
📘 第 8周: 📱 從小晶片到手機:嵌入式、Android 與 IoT × AI
IoT × MCU × Android × TinyML 完整實戰
73/150單元: UART / I2C / SPI 🔌 三大硬體通訊介面
________________________________________
🎯 單元導讀
所有的 IoT、MCU、AI Edge 裝置,都會碰到同一個現實問題:
❓ 要怎麼把 MCU 和感測器連起來?
❓ BLE / LoRa / Wi-Fi 模組怎麼跟主控溝通?
❓ 顯示器、馬達、記憶體都用什麼線?
❓ 哪種介面比較快?哪種省線?哪種最穩?
這時,嵌入式世界的「三大王者」登場:
⭐ UART —— 最古老但最穩
⭐ I2C —— 兩條線搞定所有從屬
⭐ SPI —— 超高速、超簡潔、超多應用
幾乎 95% 的 MCU 裝置,
你要做任何 IoT × TinyML × V2X × 感測器的系統,
全部都離不開這三種通訊方式。
________________________________________
🧠 一、三大通訊介面一句話總覽
• ⭐ UART
「點對點」的古典通訊介面,架構最簡單、穩定可靠,但速度較慢。
• ⭐ I2C
只用兩條線即可串接整條總線,非常適合多感測器共用架構。
• ⭐ SPI
速度最快、穩定度最高、抗干擾佳,是 IoT、顯示器與 Flash 記憶體的標配介面。
________________________________________
🧠 二、UART:最經典的點對點序列通訊
📌 傳輸線:TX、RX(+GND)
📌 速度:9,600~1M bps(可到更高)
📌 全雙工(full-duplex)
📌 無時鐘線 → 用 Baud rate 對齊
UART 的精神很簡單:
⭐ A 的 TX → B 的 RX
⭐ B 的 TX → A 的 RX
就是一條直線,把兩個裝置綁在一起。
________________________________________
UART 的用途
✔ LoRa / NB-IoT / BLE 模組
✔ GPS/GNSS
✔ 智慧電錶、電子鎖
✔ RS-232 / RS-485 衍生工控系統
UART 的優點:
✔ 結構超簡單
✔ 幾乎不會錯
✔ 只要兩條線就能跑
缺點:
❌ 無法多裝置
❌ 同步靠 Baud rate 容易偏
❌ 換長線易干擾
________________________________________
🧠 三、I2C:兩条線統治整個感測器世界
📌 線材:SDA(資料)+ SCL(時鐘)
📌 速度:100k / 400k / 1M / 3.4M bps
📌 多主(Master)/ 多從(Slave)
📌 每個從屬有地址(7-bit / 10-bit)
I2C 的靈魂:
⭐ 「一條總線 + 地址」
⭐ 大量感測器接成一串
⭐ MCU 依「地址」跟每個感測器溝通
像這樣:
MCU
|—— SDA ——> Sensor A (0x40)
|—— SDA ——> Sensor B (0x76)
|—— SDA ——> IMU (0x68)
|—— SDA ——> EEPROM (0x50)
典型 IoT 裝置都會有 4–8 顆 I2C 感測器。
________________________________________
I2C 的用途
✔ 加速度計(IMU)
✔ 溫濕度/氣壓感測器
✔ OLED 顯示器
✔ EEPROM/RTC
✔ AI Tiny 模組
優點:
✔ 只要兩條線
✔ 可以接好多裝置
✔ 多主裝置也可以
缺點:
❌ 速度比 SPI 慢
❌ 線太長會受干擾
❌ bus 上某個裝置掛掉,整條 bus 都掛
________________________________________
🧠 四、SPI:業界最快、最穩的硬體通訊
📌 線材:MOSI / MISO / SCK / CS
📌 速度:常見 10–40MHz(更高也能)
📌 全雙工,高速低延遲
📌 最適合大量資料傳輸
SPI 的精神:
⭐ 以時鐘高速推資料
⭐ 每個從屬用 CS 分開
MCU
|— SCK —> 全裝置共用
|— MOSI —> 全裝置共用
|— MISO —> 全裝置共用
|— CS —> Flash
|— CS —> Display
|— CS —> Sensor
________________________________________
SPI 的用途
✔ 高速 ADC
✔ 顯示器(LCD / OLED)
✔ 外接 Flash / PSRAM
✔ 影像感測器
✔ TinyML 推論神經網路加速器
優點:
✔ 超高速
✔ 干擾小
✔ 不像 I2C 一顆掛全部掛
缺點:
❌ 線比 I2C 多
❌ 不能像 I2C 那樣多從屬(CS 會變多)
________________________________________
🧠 五、三大介面的工程比較(重點結論)
• 傳輸速度
• UART:最慢
• I2C:中等
• SPI:最快
• 線材需求
• UART:2 線
• I2C:2 線
• SPI:4 線以上(含 SCK、MOSI、MISO、CS)
• 同步方式
• UART:Baud rate(非同步)
• I2C:Clock(SCL)
• SPI:Clock(SCK)
• 多裝置支援
• UART:不支援(點對點)
• I2C:支援度最高(位址制)
• SPI:支援,但需多條 CS 線
• 延遲表現
• UART:高
• I2C:中
• SPI:最低
• 抗干擾能力
• UART:中
• I2C:低
• SPI:高
• 常見應用場合
• UART:通訊模組、除錯介面
• I2C:各式感測器
• SPI:顯示器、高速資料傳輸裝置
一句話:
⭐ UART 穩、I2C 省線、SPI 最快。
________________________________________
🧠 六、ASCII 圖:三大介面的直覺對比
速度:SPI >>> I2C > UART
線材複雜度:
UART: TX RX
I2C : SDA SCL
SPI : MOSI MISO SCK CS (最複雜)
多裝置能力:
UART: ✖
I2C : ✔✔✔
SPI : ✔(但要多 CS)
________________________________________
🧪 七、模擬題
**1️⃣ 專業題:
I2C 為何能支援多個從屬裝置?**
📦 答案:
因為每個從屬都有唯一地址,MCU 可透過地址選擇對象。
________________________________________
**2️⃣ 應用題:
顯示器(LCD/OLED)一般使用哪個介面?**
A. UART
B. I2C
C. SPI(✔)
D. GPIO Bit-banging
解析: 顯示器(LCD/OLED)需要持續且高速地傳輸大量畫面資料,對延遲與穩定性要求高,SPI 具備高頻時脈、低延遲與良好抗干擾能力,因此成為顯示模組的主流介面。
________________________________________
**3️⃣ 情境題:
某 IoT 裝置需要同時讀 IMU、氣壓計、環境光感測器,最適合的介面為?**
A. UART
B. I2C(✔)
C. SPI
D. Wi-Fi
解析: IMU、氣壓計與環境光感測器皆屬低至中速資料量裝置,且需同時掛載多顆模組,I2C 透過位址制讓多裝置共用兩條線,硬體簡化且功耗低,最符合 IoT 架構需求。
________________________________________
🛠 八、實務演練題(工程級)
1️⃣ 用 STM32 或 ESP32 驅動 I2C 感測器(BMP280 / MPU-6050)
2️⃣ 使用 SPI 控制 OLED 顯示器(SSD1306 / ST7735)
3️⃣ 撰寫 UART AT 指令控制 LoRa/BLE 模組
4️⃣ 比較 1 kb 資料在 UART / I2C / SPI 的延遲差異
5️⃣ 用邏輯分析儀抓三種介面的時序波形
________________________________________
⭐ 九、小結:三大硬體介面是 IoT 的基本語言
✔ UART:最穩的點對點
✔ I2C:兩線統治全感測器總線
✔ SPI:速度爆快、最適合高速資料傳輸
✔ 你要做 MCU × IoT × TinyML,不可能不會這三種
✔ 所有通訊協定最後都要靠這些介面「落地」
一句話總結:
⭐ UART / I2C / SPI 是 IoT 世代的三大硬體語言,也是 MCU 世界的最底層通訊基石。















