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

閱讀時間約 6 分鐘

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

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

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 的運作原理,敬請期待。

avatar-img
14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
我們在上一篇文章聊到了測試左移所需的 8 大能力中的前面 4 個,包含學習研究、反應回饋、作戰計畫、追溯管理的能力,這四個能力也是我們平常工作與生活上遇到困難時的解決問題的核心能力,建議還沒看過第一篇的朋友,可以先回第一篇了解一下。那麼接下來我們要就繼續聊聊測試左移的另外四個能力。
當我們有往左邊看並且嘗試為每一個開發階段設置一個檢查站來把關的想法時,就有了思考方向。原則上所有設計階段的驗證都要通過才能進入量產,因此只要中間有卡關,就不能放行進入下一個階段。
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
我們在上一篇文章聊到了測試左移所需的 8 大能力中的前面 4 個,包含學習研究、反應回饋、作戰計畫、追溯管理的能力,這四個能力也是我們平常工作與生活上遇到困難時的解決問題的核心能力,建議還沒看過第一篇的朋友,可以先回第一篇了解一下。那麼接下來我們要就繼續聊聊測試左移的另外四個能力。
當我們有往左邊看並且嘗試為每一個開發階段設置一個檢查站來把關的想法時,就有了思考方向。原則上所有設計階段的驗證都要通過才能進入量產,因此只要中間有卡關,就不能放行進入下一個階段。
你可能也想看
Google News 追蹤
Thumbnail
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
訊號產生器在電子工程領域中扮演不可或缺的重要角色,瞭解其原理和用途對於各種產業而言都至關重要。本篇將透過認識原理、瞭解常見類型、以及推薦品牌等內容,來深入探討訊號產生器的使用範疇。
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!
** 3C機構設計爸版權所有 ©️ ** 當我們討論到USB時,大家都知道USB對於一般的使用者來說是接觸性非常高的一個接口,舉凡手機、電腦、電視、收銀機….,都會使用到USB接口。雖然國際上已經定義了USB-C (USB type-C)是未來統一的一種接口,但就目前而言,USB connec
Thumbnail
與電腦溝通之方法說明 不須使用任何程式軟體工具,能與電腦溝通,使用Command line執行後,將依自己設定之條件,直接將結果選出,提供後續運用
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
Thumbnail
仍舊是紀錄一下自己的過程,避免真的又找半天 1.準備 Console線 ( RS-232 公母接頭 ) 2.準備 USB-RS232 轉接線 ( 驅動程式 ) 3.putty ( 下載位置 ) 4.Zyxel ES3500 的帳號密碼 ( 我的預設是admin/1234 )
Thumbnail
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
訊號產生器在電子工程領域中扮演不可或缺的重要角色,瞭解其原理和用途對於各種產業而言都至關重要。本篇將透過認識原理、瞭解常見類型、以及推薦品牌等內容,來深入探討訊號產生器的使用範疇。
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!
** 3C機構設計爸版權所有 ©️ ** 當我們討論到USB時,大家都知道USB對於一般的使用者來說是接觸性非常高的一個接口,舉凡手機、電腦、電視、收銀機….,都會使用到USB接口。雖然國際上已經定義了USB-C (USB type-C)是未來統一的一種接口,但就目前而言,USB connec
Thumbnail
與電腦溝通之方法說明 不須使用任何程式軟體工具,能與電腦溝通,使用Command line執行後,將依自己設定之條件,直接將結果選出,提供後續運用
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
Thumbnail
仍舊是紀錄一下自己的過程,避免真的又找半天 1.準備 Console線 ( RS-232 公母接頭 ) 2.準備 USB-RS232 轉接線 ( 驅動程式 ) 3.putty ( 下載位置 ) 4.Zyxel ES3500 的帳號密碼 ( 我的預設是admin/1234 )