|

【實作實驗室】最原始的通訊介面 — RS232與UART的差別

   
作者:實作派

開發單晶片程式時,通常都用 RS232 介面接到 PC 來做 debug,簡單好用又穩定,但晶片這端沒有  RS232 ,只有 UART,這樣要怎麼接呢?明明都是接到電腦的 COM port,電路圖內卻有人寫 UART ,也有人寫 RS232 ,這到底是怎麼回事?

RS232 序列埠

RS232 主要用在裝置之間的長距離傳輸,使用的電壓按標準如下所示:

  • Logic 1:傳送端 -5 V ~ -15 V / 接收端 -3 V ~ -15 V
  • Logic 0:傳送端 +5 V ~ +15 V / 接收端 +3 V ~ +15 V

其餘詳細規格請參考 Interface Circuits for TIA/EIA-232-F Design Note,裡面詳述了阻抗、線長計算方式與接頭各腳位訊號的動作細節等;在商用領域,從 ±5 V 到 ±15 V 都有;以 PC 來說,使用的電壓是 ±7.5 V,高低間的電壓差就是 15 V。

在早期的電腦主機板上,都有兩個 COM port,當年就是用它來接滑鼠與 PSTN Modem(電話線數據機)。你可能感到懷疑,但當時的滑鼠確實就是接 COM port,用電話線撥接純文字 BBS 站,大夥也是用得很開心呢!

RS232 connector(圖片來源:實作派提供)

RS232 有兩種接頭形狀,分別是 D-sub 9(簡稱DB-9)與 D-sub 25(簡稱DB-25),對於 pin 腳也有各自的定義,但是時間一久,各家廠商(除了 PC 外)就開始亂做一通,讓工程師們很困擾。

UART 序列埠

UART(Universal Asynchronous Receiver/Transmitter)是 IC 吐資料的對外管道,電壓最高就是 chip 自身的邏輯電壓,通常是 5 V 或 3.3 V。由於電壓低、速度慢,通常用在裝置內部電路板的對外溝通,也就是 debug;如果你想讓程式印出變數值,通常會呼叫 printf( ) 函式對吧,這時字串就會從  UART 的 TXD 跑出來。

UART 只是晶片內序列傳輸模組的通稱,Universal 表示是泛用型,你可以 config 它成為各種形式的序列埠,例如要不要 parity check、bit rate 要多少之類的。換言之,UART 只是稱呼,不是標準,因此沒有定義接頭形狀,接頭形式完全看個人方便而定。

另外有人會問,UART 裡的「非同步 Asynchronous」是什麼意思?不知您有無發現 RS232/UART 只用一條線來傳資料,所以它沒有額外的 clock,沒有 clock 輔助表示「接收端即便知道發射端的 bit rate,自身的資料取樣速度也無法完全與發射端相同」,因此稱為非同步,若是像 I2C/SPI 等傳輸介面是包含 clock 訊號的,就稱為「同步傳輸」。

Protocol 通訊協定

簡單來說,我們可以將 RS232 視為 UART 的高電壓版本,下圖的 MAX232 就是做轉電壓。用有學問一點的說法來講,RS232 定義了實體層,方便各種裝置彼此交換資料,而每個裝置中處理器裡面的 UART 模組,則負責資料收送的功能。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

StrongPiLab

Author: StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。

Share This Post On

1 Comment

  1. 貴平台裡 https ://makerpro.cc/2020/01/uart-part2/ 文中提到 『 UART 的 0 是 3.3 V,1 是 0 V;但是在 5 V 的邏輯電路中,UART 的 0 是 5 V …….』。
    一般使用示波器來量測UART訊號 好像不是這樣的,這之間差異為何?煩請撥空為我解惑,感恩!!

    Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *