I2C、SPI、UART、RS232、RS485差異完整比較:通訊介面原理、速度與應用一次看懂

I2C、SPI、UART、RS232、RS485差異完整比較:通訊介面原理、速度與應用一次看懂

在使用 Arduino、ESP32、Raspberry Pi 或其他微控制器開發電子產品時,常常會遇到 I2C、SPI、UART、RS232、RS485 等通訊介面。雖然它們都是用來傳輸資料,但實際上的工作方式、接線方式、傳輸距離與適用場合都有所不同。例如,連接溫濕度感測器時可能會使用 I2C;連接 TFT 顯示器或 SD 卡時常見 SPI;GPS、藍牙模組則經常使用 UART。如果要與工業設備、電表或 Modbus 設備進行較長距離的通訊,RS485 就會是常見的選擇。本文將整理 I2C、SPI、UART、RS232、RS485 的基本原理與差異,並從實際應用的角度說明該如何選擇。

一、I2C 是什麼?

I2C(Inter-Integrated Circuit)是一種常見的同步串列通訊介面,主要透過兩條訊號線進行資料傳輸:

  • SDA:資料線
  • SCL:時脈線

I2C 的特色是可以讓多個周邊裝置共用同一組 SDA 與 SCL 線路。每個裝置通常都有自己的位址,因此控制器可以指定要與哪一個裝置進行通訊。

這種設計非常適合電子開發板連接多個感測器或周邊設備,例如溫濕度感測器、氣壓感測器、OLED 顯示器、RTC 即時時鐘、EEPROM 及 IO 擴充器等。

I2C 的優點

  • 只需要 SDA、SCL 兩條主要訊號線
  • 可以連接多個周邊裝置
  • 接線相對簡單
  • 非常適合感測器與低速周邊設備

二、SPI 是什麼?

SPI(Serial Peripheral Interface)也是常見的同步串列通訊介面,通常會使用以下訊號:

  • SCK:時脈訊號
  • MOSI:主控制器傳送資料
  • MISO:主控制器接收資料
  • CS/SS:選擇周邊裝置

SPI 通常需要比 I2C 更多的訊號線,但優點是傳輸速度通常較快,因此適合需要較高資料傳輸量的設備。

常見的 SPI 應用包括 TFT LCD、SD 卡、Flash 記憶體、ADC/DAC、部分無線通訊模組以及其他需要較快資料交換的周邊設備。

SPI 的優點

  • 傳輸速度通常比 I2C 快
  • 通訊方式簡單
  • 適合大量資料傳輸
  • 廣泛應用於顯示器、記憶體及各種周邊模組

三、UART 是什麼?

UART(Universal Asynchronous Receiver/Transmitter)是一種非常常見的非同步串列通訊方式。最基本的 UART 通訊通常需要 TX、RX 及 GND。

  • TX:Transmit,傳送資料
  • RX:Receive,接收資料
  • GND:接地

UART 不需要額外的時脈線,通訊雙方必須事先設定相同的通訊參數,例如 Baud Rate(鮑率)、Data Bits、Stop Bits 以及 Parity。

常見的 Baud Rate 包括 9600、19200、38400、57600 及 115200。

UART 在各種開發板與電子模組中都非常常見,例如 GPS、Bluetooth、Wi-Fi、GSM/LTE 模組,以及 USB-to-UART 轉換器等。

四、RS232 是什麼?

RS232 是一種常見的序列通訊標準,過去廣泛應用於電腦、工業設備、儀器及各種需要序列通訊的設備。

需要注意的是,UART 與 RS232 並不是同一種東西。UART 比較偏向微控制器內部的序列通訊方式,而 RS232 則涉及實際訊號的電氣規格。

因此,Arduino 或 ESP32 的 UART 訊號如果要與標準 RS232 設備連接,通常需要使用 UART-to-RS232 的轉換電路或轉換模組,而不能直接將兩者的 TX、RX 腳位任意相接。

RS232 常見於傳統電腦周邊、工業儀器、控制設備及部分舊型設備,通常以點對點方式進行通訊。

五、RS485 是什麼?

RS485 是工業自動化領域相當常見的通訊介面,最大的特色之一是使用差動訊號進行資料傳輸,因此在較長距離及電氣雜訊較多的環境中具有較好的抗干擾能力。

RS485 常見的訊號線為 A 與 B,實際設備的標示方式可能有所不同,因此進行接線時仍應以設備的規格與說明文件為準。

與一般微控制器的 UART 相比,RS485 更適合設備之間進行較長距離的通訊,也可以用於多個設備之間的網路架構。

在工業現場,RS485 也經常與 Modbus RTU 搭配使用,例如電表、溫控器、PLC、變頻器及各類工業感測器。

RS485 常見優點

  • 適合較長距離資料傳輸
  • 抗干擾能力較佳
  • 適合多設備通訊
  • 常用於工業自動化環境
  • 常與 Modbus RTU 搭配使用

六、I2C、SPI、UART、RS232、RS485 差異比較

以下整理五種常見通訊介面的主要差異:

項目 I2C SPI UART RS232 RS485
通訊方式 同步 同步 非同步 非同步序列 差動序列
主要訊號 SDA、SCL SCK、MOSI、MISO、CS TX、RX TX、RX 等 A、B
多設備 可以 可以,通常需要 CS 一般不適合 通常點對點 適合
傳輸速度 中 快 中 中 中~快
傳輸距離 短 短 短~中 中 長
抗干擾能力 一般 一般 一般 一般 較佳
常見應用 感測器、OLED、RTC LCD、SD 卡、Flash GPS、藍牙、通訊模組 傳統序列設備 工業設備、Modbus

七、I2C 和 SPI 有什麼差別?

I2C 和 SPI 都是微控制器常見的同步通訊方式,但兩者的設計方向不太一樣。

如果系統需要連接多個感測器,而且希望減少使用的訊號線,I2C 通常會比較方便。多個 I2C 裝置可以共用 SDA 與 SCL,再利用不同的裝置位址進行識別。

如果需要較高的資料傳輸速度,例如連接 TFT 顯示器、SD 卡或其他需要大量資料交換的設備,SPI 通常會更適合。

簡單來說:多個周邊、接線簡單可以考慮 I2C;需要較高速度則可以考慮 SPI。

八、UART、RS232、RS485 有什麼差別?

UART、RS232、RS485 都經常出現在序列通訊相關產品中,因此很容易讓初學者混淆。

如果只是 Arduino 或 ESP32 與 GPS、藍牙模組等周邊設備進行短距離通訊,通常直接使用 UART 就可以。

如果需要與傳統的 RS232 序列設備連接,就需要使用符合 RS232 電氣規格的介面或轉換模組。

如果是工業環境、較長距離或需要連接多個設備,RS485 通常會更加合適。尤其在 Modbus RTU 應用中,RS485 是非常常見的硬體介面。

使用情境 較適合的介面
微控制器連接感測器 I2C
連接高速周邊設備 SPI
Arduino/ESP32 連接 GPS 或通訊模組 UART
連接傳統序列設備 RS232
工業設備長距離通訊 RS485
Modbus RTU 設備 RS485

九、Arduino、ESP32 要如何選擇通訊介面?

在實際開發 Arduino 或 ESP32 專案時,可以先從設備的需求來判斷。

例如 Arduino 搭配溫度、濕度、氣壓等感測器時,可以優先確認感測器是否支援 I2C;如果要使用 TFT 顯示器或 SD 卡,則可以查看產品是否採用 SPI。

如果是 Arduino 或 ESP32 搭配 GPS、Bluetooth 等通訊模組,UART 是相當常見的選擇。

如果專案需要與工業儀表、電表、PLC 或 Modbus 設備通訊,則可以進一步考慮 RS485 介面。

十、如何選擇適合自己的通訊介面?

選擇通訊介面時,不需要只看傳輸速度,還應該考慮傳輸距離、設備數量、抗干擾能力、接線數量,以及 Arduino、ESP32 或其他控制器本身是否支援該介面。

  • 需要連接多個感測器:可以優先考慮 I2C。
  • 需要較高資料傳輸速度:可以考慮 SPI。
  • 控制器與模組短距離串列通訊:可以考慮 UART。
  • 需要連接傳統序列設備:可以考慮 RS232。
  • 長距離、工業環境或多設備通訊:可以考慮 RS485。

I2C、SPI、UART、RS232、RS485 雖然都可以用來傳輸資料,但適合的應用環境並不相同。

I2C 適合多個感測器及周邊設備,SPI 適合需要較快資料傳輸的應用,UART 常見於微控制器與各種通訊模組之間,而 RS232 與 RS485 則較常出現在設備之間的序列通訊。其中 RS485 具有較佳的抗干擾能力及較長距離通訊的優勢,因此在工業自動化與 Modbus RTU 應用中相當常見。

如果正在規劃 Arduino、ESP32 或其他嵌入式系統專案,可以先確認設備的通訊介面,再依照傳輸距離、速度與使用環境選擇合適的模組,通常就能避免後續接線及通訊上的問題。