2023-10-24|閱讀時間 ‧ 約 7 分鐘

帶你認識物聯網基礎 Serial 通訊(ㄧ)

Let's talk about serial communication.

還記得之前我們在聊物聯網 Modbus 通訊協議的時候,有提到有機會要來說說 Serial 通訊。相較於 Modbus 是應用層級(與物理底層無關)的通訊協議, 這次的 Serial 通訊會談到更多實現物理層通訊的原理,不囉唆開始吧。

Serial 通訊的前世今生

Serial 通訊是 1960 發展起來的技術,是很古老了沒錯,不過在物聯網的世界裡 Serial 通訊仍是老當益壯、不可忽視的存在。

COM Port

聊到 Serial 通訊就一定會提到 COM (Component Object Mode) Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格。

關於 COM Port 的技術應用我自己也是等到從事系統整合工作才陸續接觸到,當時主要以 RS232/RS485 應用為主,因為整合工作有相當大部分時間要透過各種的 Serial 通訊界面來與儀器設備溝通。要學會應用 COM Port 所需的基礎知識不算太多,對一個使用者角色來說只要懂得設定好通訊參數,有能力確認(排除)發送跟接收端通訊就可以了,接著就是寫程式跟儀器或設備進行通訊,實現用軟體遙控各種機器設備的整合任務,Amazing!

後來隨著系統越做越大,要控制的設備越來越多,單靠主機上的兩個 COM Port 根本不夠用就必須使用專門介面卡來擴充,有些擴充卡只要一張可以給出 16 COM Port 來(通常都是 RS485)實在相當方便。後來有機會與更專業的同事深入請教 Serial 知識後才發現,原來過去熟知的 RS232/RS485 也就是眾多的 Serial 通訊實體的一兩種而已啊。

電腦主機板

串列埠通訊

Serial 通訊又被稱為串列埠通訊,顧名思義就是電腦資料傳輸資料的方式是 1 個 bit 接著 1 個 bit ,例如,Ethernet, USB, SATA, SPI, .. 都是屬於 Serial 通訊範圍。最早的 Serial 通訊是設計給兩台電腦間通訊使用的,概念就像電話用專線把兩台電腦透過 COM Port 互相連接起來(RX/TX, CTS/RTS 要對接)。後來開始進入撥接網路的時代,連接電腦的 COM Port 就改連接到小烏龜 mod 上了。隨著通訊技術、晶片製程能力發展通訊速度也越來越快,Serial 通訊用途也開始突破不再被侷限在電腦對電腦或者單純外接硬體設備,例如打字機、鍵盤、滑鼠、印表機、隨身碟…。

COM Port to Modem

訊號你從哪裡來?

既然最早的 Serial 通訊是要設計給電腦通訊使用,我們不妨理解成數據出發點就是電腦了。稍微換個角度往電腦內部看,就會發現裡面元件通訊是走匯流排模式,匯流排你可以把它先把他想成多個訊號通道集成在一起的通訊接口,匯流排每一個數據通道都能用來傳送或接收資料,而使用匯流排的通訊方式叫做 Parallel 模式,想當然耳 Parallel 通訊效率肯定遠比 Serial 通訊模式好「非常多」。

同樣要傳輸 1 byte (8 bit) 的資料的話,用 Serial 模式每次傳送 1 個 bit,1 byte 需要分 8 次傳輸,總共需要 8 個 clock 時間;如果是 Parallel 模式傳輸 1 byte 資料,用 8 個數據通道跟 1 個 clock 時間就可以搞定,效率瞬間提升 8 倍。不過,Parallel 模式缺點也很明顯,就是傳輸距離很短且成本很貴(要很多傳輸通道),主要還是電腦內部需要高速傳輸的元件使用,像是 CPU 或是 Memory,電腦外面的訊號傳輸還是以 Serial 通訊為主。

Serial Communication, RS485, from CUI Devices

UART,Parallel 轉 Serial 的秘密

我想借用上面 CUI Devices 網站找到的 RS485 的通訊示意圖(出處)(手繪感十足)來進一步說明資料轉換的部分,它包含了我們接下來要說的 UART(Universal Asynchronous Receiver/Transmitter),跟 EIA(Electronic Industries Alliance) Transceiver 兩個的重要訊號轉換元件,有這張圖就可以很好瞭解資料傳輸流程。不過開始前要先請你發揮想像力,先在這張圖的最左邊、最右邊都放一個 CPU 代表一台電腦,分別代表數據傳輸的起點與終點。

首先,Parallel 資料從最左邊 CPU 出發,資料會先進入 UART 元件的 Buffer (緩衝)區。UART 元件是負責把 CPU 存入 Buffer 區的資料從 Parallel 模式轉成 Serial 模式,過程跟概念很類似於數學的轉置 (Transpose,這部分以後有機會再來補充)。

先假設 UART 元件每次只處理一個 Byte 的數據量,只要 UART 發現 Buffer 區裡還有資料,就會持續從 Buffer 取出數據進行轉換,經過 UART 元件轉換的 Serial 訊號又叫做 TTL(Transistor-Transistor Logic) 訊號,要輸出的 TTL 訊號會從 TX 傳送出去,要接收的資料就從 RX 進來。

EIA Tranceiver,規格相容的關鍵

UART 轉出來的 TTL 訊號是可以直接拿來通訊,不過現實中有各種不同的 Serial 通訊實作因此轉出來的 TTL 還需要進一步訊號轉換。主要是不同的 Serial 通訊實作的工作電壓不同,例如 USB 是 5V, RS232 是 12V,如果直接把 RS232 的 12V 跟 TTL 3.3V 串在一起就很有可能直接 UART 元件燒掉。TTL 訊號經過不同規格的 EIA Tranceiver 可以從正式從發送電腦端離開了。

離開電腦的 Serial 訊號經過訊號線傳輸來到接收端電腦的門前,接收端電腦的 EIA Transceiver 偵測到訊號進來後就會開始工作,反向把輸入訊號電壓轉成 TTL(降電壓)後送進 UART 元件進行 Serial 訊號轉 Parallel 再放到 Buffer 區裡面,讓接收端的電腦來提取應用。

小結論

我覺得學習最有效方式是先掌握全貌由淺入深,也是這篇文章主要目的,接下來還會進一步​ UART 跟 EIA Tranceiver 的運作原理,敬請期待。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.