串口專題(一)——基礎知識


 轉載至:串口專題(一)——基礎知識 - 程序員大本營 (pianshen.com)

1.概念介紹

串行口是計算機一種常用的接口,具有連接線少,通訊簡單,得到廣泛的使用.常用的串口是 RS-232-C 接口(又稱 EIA RS-232-C)它是在 1970 年由美國電子工業協會(EIA)聯合貝爾系統、 調制解調器廠家及計算機終端生產廠家共同制定的用於串行通訊的標准.它的全名是”數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標准”該標准規定采用一個 25 個腳的 DB25 連接器,對連接器的每個引腳的信號內容加以規定,還對各種信號的電平加以規定.傳輸距離在碼元畸變小於 4% 的情況下,傳輸電纜長度應為 50 英尺,串口通信協議也可以用於獲取遠程采集設備的數據。它屬於ISO’S OSI七層參考模型中的數據鏈路層。

在串口通信中,常用的協議包括RS-232、RS-422和RS-485。串口由收發器組成。發送器是通過 TXD 引腳發送串行數據,接收器是通過 RXD 引腳接收串行數據。發送器和接收器都利用了一個移位寄存器,這個移位寄存器可以將數據進行“並轉串”和“串轉並”。雖然一個UART接口通常都包含了發送器和接收器,而實際上一個全雙工串口UART控制器需要獨立的發送和接收通道。

1.1 DB25定義

這里寫圖片描述

1.2 DB9定義

這里寫圖片描述

RS-232的每一個引腳都有它的作用,也有信號流動方向。原先的RS-232是用來連接調制解調器的(俗稱“貓”)的,因此它的引腳位意義通常也和調制解調器傳輸相關。

從功能上來看,全部信號線分為3類:數據線(TXD、RXD)、地線(GND)和聯絡控制線(DSR、DTR、RI、DCD、RTS、CTS)

這里寫圖片描述

兩個通訊設備之間的地電位可能不一樣,這會影響收發雙方的電平信號,所以兩個串口設備之間必須要使用地線連接,即共地。

串口線中的聯絡控制線使用邏輯1表示信號有效,邏輯0表示信號無效。例如,當計算機端控制DTR信號線為邏輯1時,其目的是告知遠端的調制解調器本機已准備好接收數據,0表示還沒准備就緒。

目前,其它工業控制使用的串口通訊中,一般只使用RXD、TXD以及GND三條信號線,直接傳輸數據信號,RTS、CTS等聯絡控制線被裁剪掉。

這里寫圖片描述

1.3 通信電平

使用RS-232標准串口的設備間通訊結構圖如下:

這里寫圖片描述

兩個通訊設備的“DB9接口”之間用串口線建立起連接,串口線中使用RS-232標准傳輸數據信號。由於RS-232電平標准的信號不能直接被控制器直接識別,所以信號需要經過一個“電平轉換芯片”轉換成控制器能識別的TTL標准電平信號。

電平標准詳細表如下:

這里寫圖片描述

數字電路中常用TTL的電平標准。理想狀態下使用5V表示二進制邏輯1,使用0V表示二進制邏輯0。為了增加串口通訊的遠距離傳輸及抗干擾能力,它使用負電平表示邏輯1,正電平表示邏輯0。

2.串口通信原理

串口按位(bit)發送和接收字節。盡管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。比如IEEE488定義並行通行狀態時,規定設備線總長不得超過20米,並且任意兩個設備間的長度不得超過2米;而對於串口而言,長度可達1200米。由於串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用於握手,但是不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。

2.1配置參數介紹

(1)波特率:這是一個衡量通信速度的參數。它表示每秒鍾傳送的位(bit)的個數。例如300波特表示每秒鍾發送300個bit。當我們提到時鍾周期時,我們就是指波特率例如如果協議需要4800波特率,那么時鍾是4800Hz。這意味着串口通信在數據線上的采樣率為4800Hz。波特率有:1200,2400,4800,9600,14400,19200,38400,57600,76800,115200。在數據傳輸和接收雙方,需要預先統一波特率,以便正確的傳輸數據。波特率可以遠遠大於這些值,但是波特率和距離成反比。高波特率常常用於放置的很近的儀器間的通信,典型的例子就是GPIB設備的通信。波特率用於表示數據傳輸的速度,波特率越高,數據傳輸速度越快。

(2)數據位:是衡量通信中實際數據位的參數。當計算機發送一個信息包,實際的數據不會是8位的,標准的值是5、7和8位。如何設置取決於你想傳送的信息。比如,標准的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數據使用簡單的文本(標准 ASCII碼),那么每個數據包使用7位數據。每個包是指一個字節,包括開始/停止位,數據位和奇偶校驗位。由於實際數據位取決於通信協議的選取,術語“包”指任何通信的情況。

(3)停止位:用於表示單個包的最后一位。典型的值為1,1.5和2位。由於數據是在傳輸線上定時的,並且每一個設備有其自己的時鍾,很可能在通信中兩台設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鍾同步的機會。適用於停止位的位數越多,不同時鍾同步的容忍程度越大,但是數據傳輸率同時也越慢。   

(4)奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串口會設置校驗位(數據位后面的一位),用一個值確保傳輸的數據有偶個或者奇個邏輯高位。例如,如果數據是011,那么對於偶校驗,校驗位為0,保證邏輯高的位數是偶數個。如果是奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查數據,簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態,有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數據是否不同步。

3.工作方式

串行通訊的基礎是單線傳輸,數據通常是在兩個站點之間進行傳輸,按照數據在通信線路上的傳送方向可分為3種基本的傳送方式:單工、半雙工和全雙工。

3.1 單工模式(Simplex)

單工模式的數據是單向的,通訊雙方一方為發送端,另一方則固定為接收端。信息只能沿一個方向傳輸,使用一根數據線。例如收音機,只能接收發射塔給它的數據,並不能給發射塔發數據。

這里寫圖片描述

3.2 半雙工模式(Half duplex)

半雙工模式是指通訊雙方都具有發送器和接收器,雙方既可以發射也可以接收,但是接收和發射不能同時進行。 半雙工一般用數據能在兩個方向傳輸的場合,例如對講機。

這里寫圖片描述

3.3 全雙工模式(Full duplex)

全雙工數據通訊分別由兩根可以在兩個不同的站點同時發送和接收的傳輸線進行傳輸數據,通訊雙方能在同一時刻進行發送和接收操作。全雙工模式下,每一端都有發送器和接收器,有兩條傳輸線可以在交互式應用場合中使用,信息傳輸效率高,例如手機。

這里寫圖片描述

4.數據傳輸

串口通訊的數據包由發送設備通過自身的 TXD 接口傳輸到接收設備的 RXD 接口,通訊雙方的數據包格式要規約一致才能正常收發數據。串口通訊協議層中,規定了數據包的內容,它由起始位、主體數據位、校驗位以及停止位組成。

這里寫圖片描述

比特率與波特率的區別:

(1)比特率:

  比特率(bit rate)又稱傳信率、信息傳輸速率(簡稱信息速率,information rate)。其定義是:通信線路(或系統)單位時間(每秒)內傳輸的信息量,即每秒能傳輸的二進制位數,通常用Rb表示,其單位是比特/秒(bit/s或b/s,英文縮略語為bps)。
  
  在二進制系統中,信息速率(比特率)與信號速率(波特率)相等,例如,當系統以每秒50個二進制符號傳輸時,信息速率為50bit/s,信號速率也為50Bd(波特)。在無調制的情況下,比特率等於波特率;采用調相技術時,比特率不等於波特率。通信系統的發送設備和接收設備必須在相同的波特率下工作,否則會出現幀同步錯誤。

(2) 波特率:

  波特率(Baud rate)又稱傳碼率、碼元傳輸速率(簡稱碼元速率)、信號傳輸速率(簡稱信號速率,signaling rate)或調制速率。其定義是:通信線路(或系統)單位時間(每秒)內傳輸的碼元(脈沖)個數;或者表示信號調制過程中,單位時間內調制信號波形的變換次數,通常用RB表示,單位是波特(Bd或Baud,前者規范)。如果每秒傳輸1個碼元就稱為1Bd;如果1碼元的時間長短為200ms,則每秒可傳輸5個碼元,那么碼元速率(波特率)就是5Bd。
  
  波特率(碼元速率)並沒有限定是何種進制的碼元,所以給出波特率時必須說明這個碼元的進制。對於M進制碼元,比特率(信息速率)Rb與波特率(碼元速率)RB的關系式為:
  
  Rb=RB·lbM
  
  式中:lbM=log2M,表示M的以2為底的對數。顯然,對於二進制碼元,由於lb2=1,所以Rb=RB,即波特率與比特率在數值上相等,但單位不同,也即二者代表的意義不同。
  
  例如,波特率為600Bd,則在二進制時,比特率也為600bit/s;在四進制時,由於lb4=2,所以比特率為1200bit/s。可見,在一個碼元中可以傳送多個比特。


注:本文主要是串口基礎介紹,內容多來自網絡,參考已注明主要出處。若侵權,請告知刪除!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM