---
title: "認識UART界面#2—通訊標準"
description: "**作者：Bird** 上篇文章[【Maker電子學】認識UART界面#1—訊號…"
url: "https://makerpro.cc/docs/uart-part2/"
updated: "2025-05-09"
category: UART
---

# 認識UART界面#2—通訊標準

**作者：Bird**

上篇文章[【Maker電子學】認識UART界面#1—訊號格式](https://makerpro.cc/2019/12/uart-part-1/)，我們聊了 UART 界面的訊號格式，以及它爲什麼不需要 clock 就能收送訊號，這次我們要繼續來探討 UART 界面與實體世界之間許多通訊標準的關係。

### **UART 與 RS-232C**

在開發 MCU 程式時，常常要把 MCU 的 UART 連接到 PC 來燒錄程式或 debug，但 MCU 上的串列通訊界面是 UART，PC 上的串列通訊界面是 RS-232C，這兩者到底有什麼關係，它們又有什麼不同呢？

如同上一次說明的，**UART 是邏輯電路上的概念，它會隨著邏輯電路的電壓位準不同而改變**。在 3.3 V 的邏輯電路上，UART 的 1 是 3.3 V，0 是 0 V；但是在 5 V 的邏輯電路中，UART 的 1 是 5 V，0 是 0 V。

邏輯電路的訊號是設計用在短距離、小尺寸的電路板上的，它其實無法跑太長的纜線。爲了解決這個問題，美國的電子工業聯盟 EIA 指定了一系列可以讓 UART 的訊號傳送較長距離的通訊規格標準，而這其中最爲人熟知的就是 RS-232C 這個標準。

最早的 RS-232 標準是由 EIA 在 1960 年制定，之後經過幾次修改，在 1969 年公佈的 RS-232C 成爲個人電腦上最普及的通訊界面（在 USB 界面席捲全世界之前，幾乎每一部電腦都有至少一個 9-pin 的 D 型連接器，那就是 RS-232C）。

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-10.png)

RS-232C（圖片來源：Bird 提供）

RS-232C 標準誕生距今剛好 50 年，雖然已是一個老舊的技術，但它對這個世界的影響之深遠仍然餘韻不絕。RS-232C 的電氣特性標準簡單來說是這樣：

- 邏輯 0：傳送端 +5 V ~ +15 V / 接收端 +3 V ~ +15 V
- 邏輯 1：傳送端 -5 V ~ -15 V / 接收端 -3 V ~ -15 V

換句話說，它是用電壓的正、負來代表邏輯的 0 和 1，而且它能容許的電壓範圍相當大。在正常狀況下，RS-232C 上不會出現接近 0 V 的電壓，因爲就算沒有在傳送資料，它的邏輯準位也會維持在 0（就是 UART 的 idle high），傳送端因此會發送 +5 V ~ +15 V 的電壓，接收端也會收到 +3 V ~ +15 V 的電壓；如果 RS-232C 的線上出現 0 V 左右的電壓，就代表線可能根本沒接（這個特性可讓接收端用來偵測纜線是否脫落）。

那麼 UART 和 RS-232C 之間要如何轉換呢？有一顆歷史悠久的 IC 可以來幫我們做這件事。

### **話說 MAX232/MAX3223**

MAX232 是 Maxim 在 1987 年推出的一顆 RS-232C 的傳送/接收器 IC，它的傳送器可以將 5 V 邏輯準位的訊號轉換到 RS-232C 的訊號，而接收器則可以將 RS-232C 的訊號轉換爲 5 V 邏輯準位的訊號。

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-11.png)

（圖片來源：Bird 提供）

MAX232 是邏輯電路還在 5 V 準位那個古早年代的產品，因此它也是 5 V 的邏輯準位，吃 5 V 的電。

如果沒有特別的電路，用 5 V 供電的驅動電路最高就能驅動出 5 V 再減掉一點點電壓的訊號，這減掉的電壓就是驅動電路內部的電晶體在飽和時的壓降。RS-232C 要求的傳送側電壓至少要有 5 V，因此如果我們用 5 V 供電，又扣掉這一點點的飽和電壓，就無法符合 RS-232C 的標準。

而且除了 5 V 外，別忘了 RS-232C 在邏輯 1 的時候要傳送負的電壓。一般數位電路系統裡幾乎不會有負的電壓（更古老的 ECL 電路除外，但它沒有正電壓），因此也沒辦法直接輸出符合 RS-232C 標準的負電壓。

爲了符合 RS-232C「至少 +/-5V」的傳送電壓標準，又能用 5 V 這個當年邏輯電路最常用的電壓供電，MAX232 裡面設計了一個非常巧妙的電路：charge pump 升壓和反向電路。

Charge pump 是個很有趣的電路，它常見的功能就是將電壓倍增及反向，而且原理非常簡單。假設我們有兩個電容器 C1 和 C2，分別用 5 V 的電源將它們充飽，像這樣：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-12.png)

C1 的 A 腳和 C2 的 A 腳相對於它們的另外一支腳，都會有 5 V 的電位差（圖片來源：Bird 提供）

接著我們讓 C1 和 C2 脫離電源，並將它們串聯起來（C1 的 A 腳與 C2 的 B 腳相連），會變成：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-13.png)

C1 的 B 腳和 C2 的 A 腳間有兩倍的電壓，也就是 10 V（圖片來源：Bird 提供）

反向電路更簡單，我們先將一個電容器充電：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-14.png)

（圖片來源：Bird 提供）

再將它的極性對調：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-15.png)

（圖片來源：Bird 提供）

讓原來電位比較高的那支腳與系統的 0 V 電位相連（由於電容器裡面的電位差不會改變，所以原來電位比較低的那隻腳，現在相對於 0 V 來說就是負的電壓了）。

以上說明的這些動作，在 MAX232 內部則是由 4 個電容器和一系列的開關切換電路自動完成：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-16.png)

（圖片來源：Bird 提供）

MAX232 內部先用 charge pump 的倍壓電路從 5 V 產生 10 V 的電壓，再用反向電路從 10 V 產生 -10 V 的電壓，如此一來 +/-10 V 的電源都有了，就可以用來產生 RS-232C 所需要的驅動電壓。

隨著 CMOS 邏輯電路的普及，5 V 的 TTL 邏輯已不再是主流，3.3 V 供電的 CMOS 邏輯系統慢慢主宰這個世界，因此 MAX232 也推出了 3.3 V 的版本，稱之爲 MAX3223。MAX3223 的功能和結構與 MAX232 幾乎完全相同，只是能用 3.3 V 供電，並多了一些電源管理的功能：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-17.png)

（圖片來源：Bird 提供）

它一樣有兩組 charge pump 電路，一組用 3.3 V 倍壓產生 6.6 V，另一組用 6.6 V 反向產生 -6.6 V。雖然電壓比較低，但仍然符合 RS-232C 傳送端最低電壓 +/-5 V 的要求。

### **RS-422 與 RS-485**

RS-232 使用的訊號傳送方式稱爲「single-end」，它的傳送和接收端共用一個接地電位，並用一根訊號線上的電壓來判斷傳送的狀態爲 0 或 1。

有另一種訊號傳送方式稱爲 Differential，也稱「差動式」傳送。Differential 的訊號需要兩根訊號線，其之間的相對狀態（電壓或電流）用來表示狀態，地線則依照傳送標準的不同可有可無。

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-18.png)

（圖片來源：Bird 提供）

Differential 傳輸最大的好處就是耐干擾。

當傳輸訊號被干擾時，接收端收到的電壓可能會改變，而當改變的幅度過大時，接收端解碼便容易出錯。Differential 傳輸有兩根線，一般來說當它們被干擾時，會同時被干擾，而且被干擾造成的電壓改變也是相同的，另外由於 Differential 接收器在意的是兩根線之間的相對狀態，因此當兩根線同時被同一個雜訊干擾而改變時，接收端其實看不出這個改變。

舉例來說，RS-422 是個 Differential 的傳輸標準，它的兩根訊號線分別稱之爲 A、B，訊號的定義是：

- 邏輯 1：V~A-V~B= +2 V ~ +6 V
- 邏輯 0：V~A- V~B= -2 V ~ -6 V

它判斷狀態的標準是利用 A、B 兩根線之間的電壓差，而不是依賴單一訊號對地的電壓。假設有一個干擾訊號會讓訊號線上的電壓少掉 2 V，如果 RS-232C 的接收端本來應該收到代表邏輯 0 的 +4 V 的電壓，被干擾後剩下 +2 V，這時接收端就會得到一個錯誤的訊號，因爲電壓小於 3 V，它不是一個合格的訊號。

但如果是 RS-422，假設接收器本來應該收到一個 A 和 B 對地的電壓分別是 5 V、2 V 的訊號。

**V~A - V~B= 5 V - 2 V = 3 V > +2 V**，因此接收器知道這是一個代表邏輯 1 的訊號。好了，同樣的干擾來了，這時 A 和 B 的電壓都因爲干擾而少掉 2 V，變成 3 V、0 V，接收器會收到什麼樣的訊號呢？

**V~A- V~B= 3 V - 0 V = 3 V > +2 V**，看到沒？這種對兩根線同時造成干擾的訊號，對 Differential 傳輸完全沒有影響，這就是 differential 傳輸的好處，也因爲這個原因， RS-422 的可用傳送距離遠比 RS-232 要長得多。

RS-422 與 RS-485 都是常見的串列通訊界面電氣標準，事實上他們倆的訊號定義是一樣的，差別在於 RS-422 和 RS-232C 一樣是點對點、全雙工的系統，因此它總共需要四根線：兩根用來傳送、兩根用來接收。

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-19.png)

（圖片來源：Bird 提供）

而 RS-485 則是傳送、接收共用同一對線：

 ![](https://makerpro.cc/wp-content/uploads/2019/12/1-20.png)

（圖片來源：Bird 提供）

因此 RS-485 的通訊是半雙工的，傳送的時候不能接收、接收的時候不能傳送，但也因爲這個特性，RS-485 可以形成一個上面有很多裝置的 bus，透過一些更上層的通訊協定達到大家一起協調通訊及定址的功能；另外，RS-485 的傳送器會多一個 enable 的訊號，只有當它確定 bus 上沒有其它裝置在傳送時，才會啓動傳送電路，開始控制 bus。

正因為只需要兩條線就可以連接多個裝置，RS-485 被廣泛運用在工業控制、門禁系統等佈線成本高但是資料傳輸量需求不高的應用中。

這次就先聊到這邊，下一回我們再來看看具體的 RS-485 驅動 IC 要如何使用、如何與 MCUI 搭配，以及它跟 RS-232C 驅動 IC 的不同。

（責任編輯：賴佩萱）
