串列埠通訊協議

點點墨發表於2020-11-29

1.串列埠通訊協議簡介
串列埠通訊(serial communication)是一種裝置間非常常用的序列通訊方式,大部分電子裝置都支援,電子工程師再除錯裝置時也經常使用該通訊方式輸出除錯資訊。
2.講到某一種通訊協議,離不開的就是物理層,物理層主要表現形式是電平訊號的高低幅值,分別代表的狀態。
串列埠的物理層有很多標準,主要包含RS232標準,該標準規定了訊號的用途、通訊介面以及訊號的電平標準;圖2-1 串列埠通訊結構圖
在上面的通訊方式中,兩個通訊裝置的"DB9介面"之間通過串列埠訊號線建立起連線,串列埠訊號線中使用"RS-232標準"傳輸資料訊號。由於RS-232電平標準的訊號不能直接被控制器直接識別,所以這些訊號會經過一個"電平轉換晶片"轉換成控制器能識別的"TTL校準"的電平訊號,才能實現通訊。
3.電平標準
根據通訊使用的電平標準不同,串列埠通訊可以分為TTL標準和RS232標準
在這裡插入圖片描述
我們常見的電子電路中使用的TTL電平標準,理想狀態下,使用5V表示二級制邏輯1,使用0V表示邏輯0,而為了增加串列埠通訊的遠距離傳輸以及抗干擾能力,它使用-15V表示邏輯1,+15V表示邏輯0,使用RS232與TTL電平標準表示同一個訊號時的對比見圖2-2

圖2-2
因為控制器一般使用TTL電平標準,所以常常會使用MA3232晶片對TTL以及RS232電平訊號進行互相轉換。

4.RS-232訊號線
在最初的應用中,RS-232串列埠標準常用於計算機、路由與調製調解器(MODEN,俗稱"貓")之間的通訊 ,在這種通訊系統中,裝置被分為資料終端裝置DTE(計算機、路由)和資料通訊裝置DCE(調製調解器)。我們以這種通訊模型講解它們的訊號線連線方式及各個訊號線的作用。

在舊式的臺式計算機中一般會有RS-232標準的COM口(也稱DB9介面),見圖 2-3。
圖2-3 電腦主機板上的COM口以及串列埠線
圖2-3 電腦主機板上的COM口以及串列埠線

其中接線口以針式引出訊號線的稱為公頭,以孔式引出訊號線的稱為母頭。在計算機中一般引出公頭介面,而在調製調解器裝置中引出的一般為母頭,使用上圖中的串列埠線即可把它與計算機連線起來。通訊時,串列埠線中傳輸的訊號就是使用前面講解的RS-232標準調製的。

在這種應用場合下,DB9介面中的公頭及母頭的各個引腳的標準訊號線接法見圖 2-4及表 2-2。
在這裡插入圖片描述
圖 2-4 DB9標準的公頭及母頭接法
表 2-2 DB9訊號線說明(公頭,為方便理解,可把DTE理解為計算機,DCE理解為調製調解器)
在這裡插入圖片描述
上表中的是計算機端的DB9公頭標準接法,由於兩個通訊裝置之間的收發訊號(RXD與TXD)應交叉相連,所以調製調解器端的DB9母頭的收發訊號接法一般與公頭的相反,兩個裝置之間連線時,只要使用"直通型"的串列埠線連線起來即可,見圖 2-5。
在這裡插入圖片描述
串列埠線中的RTS、CTS、DSR、DTR及DCD訊號,使用邏輯 1表示訊號有效,邏輯0表示訊號無效。例如,當計算機端控制DTR訊號線表示為邏輯1時,它是為了告知遠端的調製調解器,本機已準備好接收資料,0則表示還沒準備就緒。

在目前的其它工業控制使用的串列埠通訊中,一般只使用RXD、TXD以及GND三條訊號線,直接傳輸資料訊號。而RTS、CTS、DSR、DTR及DCD訊號都被裁剪掉了,如果您在前面被這些訊號弄得暈頭轉向,那就直接忽略它們吧。
5. 協議層
串列埠通訊的資料包由傳送裝置通過自身的TXD介面傳輸到接收裝置的RXD介面。在串列埠通訊的協議層中,規定了資料包的內容,它由啟始位、主體資料、校驗位以及停止位組成,通訊雙方的資料包格式要約定一致才能正常收發資料,其組成見圖 2-6。
在這裡插入圖片描述
圖 206 串列埠資料包的基本組成

  1. 波特率
    本章中主要講解的是串列埠非同步通訊,非同步通訊中由於沒有時鐘訊號(如前面講解的DB9介面中是沒有時鐘訊號的),所以兩個通訊裝置之間需要約定好波特率,即每個碼元的長度,以便對訊號進行解碼,圖 206中用虛線分開的每一格就是代表一個碼元。常見的波特率為4800、9600、115200等。

  2. 通訊的起始和停止訊號
    串列埠通訊的一個資料包從起始訊號開始,直到停止訊號結束。資料包的起始訊號由一個邏輯0的資料位表示,而資料包的停止訊號可由0.5、1、1.5或2個邏輯1的資料位表示,只要雙方約定一致即可。

  3. 有效資料
    在資料包的起始位之後緊接著的就是要傳輸的主體資料內容,也稱為有效資料,有效資料的長度常被約定為5、6、7或8位長。

  4. 資料校驗
    在有效資料之後,有一個可選的資料校驗位。由於資料通訊相對更容易受到外部干擾導致傳輸資料出現偏差,可以在傳輸過程加上校驗位來解決這個問題。校驗方法有奇校驗(odd)、偶校驗(even)、0校驗(space)、1校驗(mark)以及無校驗(noparity),它們介紹如下:

 奇校驗要求有效資料和校驗位中"1"的個數為奇數,比如一個8位長的有效資料為:01101001,此時總共有4個"1",為達到奇校驗效果,校驗位為"1",最後傳輸的資料將是8位的有效資料加上1位的校驗位總共9位。

 偶校驗與奇校驗要求剛好相反,要求幀資料和校驗位中"1"的個數為偶數,比如資料幀:11001010,此時資料幀"1"的個數為4個,所以偶校驗位為"0"。

 0校驗是不管有效資料中的內容是什麼,校驗位總為"0",1校驗是校驗位總為"1"。

 在無校驗的情況下,資料包中不包含校驗位。

相關文章