準備篇 串列埠通訊概述

2021-09-26 02:34:20 字數 2944 閱讀 7600

前言

最近家裡有些事情所以這個系列的文章一直耽擱了,現在開始進行編寫希望各位看官見諒,這個系列是我對之前一段時間工作的總結也是我自己的複習和重構,本著互相學習的目的,如果我在其中有理解錯誤和方向不對的地方還請大家指正。

1.1 什麼是串列埠

什麼是串列埠其實應該首先說什麼是通訊,不過「通訊」二字對於我們coder來說不是什麼難理解的概念,也就無需多述了。

序列介面簡稱串列埠,也稱序列通訊介面(通常指com介面),是採用序列通訊方式的擴充套件介面。其通訊的特點就是資料是一位一位的進行傳輸,在.net下我們使用的資料格式就是byte.

通訊線路也很簡單就是一根串列埠線,不過有時候還會使用串列埠伺服器,不過這都是後話了。通訊成本低的同時傳輸速度也很低和乙太網通訊的速度是乙個天上乙個地下,但是一般情況下我們在串列埠傳輸的資料量也是很小的,超過200個位元組都算是天文數字了。

串列埠線在我們實際工作和測試的時候有2種,一種是普通的串列埠線,一種是usb轉串列埠(使用筆記本進行開發的童鞋們是必備的)

圖 1.1-1 普通串列埠線                                    圖1.1-2 usb轉串列埠線

1.2 通訊的模式

通過單線傳輸資料是序列資料通訊的基礎,資料通常是在2個站(點對點)之間進行傳輸,按照資料流的方向可以分為3種模式:單工、半雙工、全雙工。

1)單工模式

單工模式的資料傳輸方式是單向的,在通訊的雙方中,一方固定為傳送端,另一方固定為接收端。資訊只能沿乙個方向傳輸,使用一根傳輸線。

圖1.2-1 單工模式

2)半雙工模式

半雙工模式使用同一根傳輸線,既可傳送資料又可接收資料,但不能同時傳送和接收。在任何時刻只能由其中的一方傳送資料,另一方接收資料。因此半雙工模式既可以使用一條資料線,也可以使用兩條資料線。

這個模式在日常工作中我是使用的最多的。

圖1.2-2 半雙工模式

3)全雙工模式

全雙工模式分別由兩根可以在兩個不同的站點同時傳送和接收的傳輸線進行傳送,通訊雙方都能在同一時刻進行傳送和接收操作。很多時候都是一根線負責傳送資料,另外一根線負責接收資料。

圖1.2-3 全雙工模式

1.3 非同步傳輸與同步傳輸

其實這部分我是不想寫的,因為同步傳輸在長距離上會出現時鐘誤差,在我這一年半的工作時間裡,我都是使用的非同步傳輸。

在非同步傳輸方式中,傳輸的單位是字元。在通訊的資料流中,字元間是非同步的,對於單個字元內部的各位間是同步。非同步通訊方式中的「非同步」主要就是體現在字元與字元之間通訊沒有嚴格的定時要求,字元可以是連續地,也可以是乙個個的傳送,可以是不連續地隨即的進行單獨傳送。所以收/發雙方需要預先約定傳輸速率。

在序列通訊中,資料是以幀為單位進行傳輸,幀有大幀和小幀(平時在工作中和硬體工程師進行溝通時說的資料幀是指的大幀,既完整的請求命令或者回傳的資料),小幀包含乙個字元,大幀包含多個字元。

非同步通訊採用小幀傳輸,一幀中有10-12個二進位制資料位。每一針有1個起始位,7-8個資料位(一般都是用8個)、乙個奇偶校驗位(可以沒有,我寫的程式都沒有,呵呵)和停止位(1位或者2位)組成。被傳輸的一組資料相鄰的兩個字元停頓時間不一致。這個字元停頓不一致的問題,在後面的章節我會詳細的解說,這個問題也造成了我們在編寫程式時的一些麻煩。

圖1.3-1 串列埠非同步傳輸資料

大家可能在看這個圖感覺東西很多,其實分開來看就3部分

a 起始位、校驗位、停止位 這3個是我們在定義通訊引數時使用的(後面會講)。

b 資料位 這裡就是我們所關心的資料 也就是我們程式中需要接收的byte。

c 空閒 2個小幀之間的不確定時間間隔

1.4 序列通訊的基本引數

串列埠的通訊方式是將位元組拆分成乙個接乙個的位再傳輸出去,接到此電位訊號的一方再將此乙個乙個的位組合成原來的字元,如此形成乙個位元組的完整傳輸,在資料傳輸時,應在通訊埠的初始化時設定幾個通訊引數。

1)波特率

通俗的講就是傳送資料的速度,不過這裡的「資料」是資料位數。波特率的意思就是在一秒中可以傳輸的資料位數,單位是bps。如果採用波特率4800bps進行傳輸,那麼每秒可以傳輸600個byte。

2)資料位

當接收裝置收到起始位後,緊接著就會收到資料位,資料位的個數可以是5、6、7或者8位。在字元資料傳輸的過程中,資料位從最低有效位開始傳輸。

3)起始位

在串列埠線上,沒有資料傳輸時處於邏輯「1」狀態,當傳送裝置要傳送乙個字元資料時,首先發出乙個邏輯「0」訊號,這個邏輯低電平就是起始位。起始位通過通訊線傳像接收裝置,當接收裝置檢測到這個邏輯低電平後,就開始準備接收資料位,因此起始位所起的作用就是告訴接收方字元傳輸的開始。

4)停止位

在奇偶校驗位或者資料位(無奇偶校驗位時)就是停止位,它可以是1位、1.5位或者2位,停止位是乙個字元資料的結束標誌。

5)奇偶校驗位

資料位傳送完之後,就可以傳送奇偶校驗位。奇偶校驗用於有限差錯校驗,通訊雙方在通訊時約定一致的奇偶校驗方式。就資料傳輸而言,奇偶校驗位是冗餘位,但它表示資料的一種性質,這種性質用於檢錯,雖然有限但很容易實現。

1.5 介面標準

1)rs-232c 介面標準

2)rs-422/485介面標準

樹莓派串列埠通訊 python篇

修改 boot 目錄下的cmdline.txt 修改內容為 dwc otg.lpm enable 0 console tty1 root dev mmcblk0p2 rootfstype ext4 elevator deadline fsck.repair yes rootwait安裝python ...

串列埠通訊 串列埠通訊原理

1 rs232介面 rs232 c介面聯結器一般使用型號為db 9的9芯插頭座,只需3條介面線,即 傳送資料 接收資料 和 訊號地 即可傳輸資料,其9個引腳的定義如圖11 3所示。圖11 3 rs232 c介面聯結器定義 在rs232的規範中,電壓值在 3v 15v 一般使用 6v 稱為 0 或 o...

串列埠通訊協議概述 針對面試

串列埠通訊 serial communications 的概念非常簡單,串列埠按位 bit 傳送和接收位元組的通訊方式。1.資料位 2.停止位 3.奇偶校驗位 4.波特率 其中,資料位 停止位 奇偶校驗位又是資料格式,資料格式可理解為語言的型別,波特率可理解為說話的語速,在進行傳輸之前,雙方一定要使...