串口通信的基本原理詳解

目錄

 

串口通信

串口通信的兩種基本方式

異步數據的數據發送過程

異步通信的數據接收過程

9針串口(DB9)

TTL與RS232區別

TTL:

RS232:

串口通信的數據格式

通訊方式

偶校驗與奇校驗

停止位

波特率(波特率就是每秒鐘傳輸的數據位數)

典型的串口通訊標準


  • 串口通信

串行接口簡稱串口,也稱串行通信接口(通常指COM接口):是採用串行通信方式的擴展接口。

  • 串口通信的兩種基本方式

1、同步通信(SYNC:synchronous data communication)(有時鐘信號來做同步):

是指在約定的通信速率下,發送端和接收端的時鐘信號頻率和相位始終保持一致(同步),這樣就保證了通信雙方在發送和接收數據時具有完全一致的定時關係。

同步串行通信SPI(是Serial Peripheral Interface 串行外圍設備接口簡稱),SPI總線系統是一種同步串行的外設接口,1它可以是MCU與各種外圍設備以串行方式進行通信以交換信息。

2、異步通信(ASYNC:asynchronous data communication):

是以字符爲單位進行傳輸的,字符之間沒有固定的時間間隔要求,而每個字符中的各位則以固定的時間傳送。 異步通信中,收發雙方取得同步是通過在字符格式中設置起始位和停止位的方法來實現的。具體來說就是,在一個有效字符正式發送之前,發送器先發送一個起始位,然後發送有效字符位,在字符結束時再發送一個停止位,起始位至停止位構成一幀。停止位至下一個起始位之間是不定長的空閒位,並且規定起始位爲低電平(邏輯值爲0),停止位和空閒位都是高電平(邏輯值爲1),這樣就保證了起始位開始處一定會有一個下跳沿,由此就可以標誌一個字符傳輸的起始。而根據起始位和停止位也就很容易的實現了字符的界定和同步。

異步串行通信UART(無時鐘信號)(Universal Asynchronous Receiver/Transmitter),即通用異步接受/發送。

UART包含TTL和RS232電平。TTL電平是3.3V的;而RS232是負邏輯電平,它定義+3V~+15V爲低電平,而-15~-3爲高電平,通常PC機串口與單片機串口通信需要電平轉換芯片,例如:MAX232。

顯然,採用異步通信時,發送端和接收端可以由各自的時鐘來控制數據的發送和接收,這兩個時鐘源彼此獨立,可以互不同步。

  • 異步數據的數據發送過程

發送數據的具體步驟如下:

  1. 初始化後或者沒有數據需要發送時,發送端輸出邏輯1,可以有任意數量的空閒位;

  2. 當需要發送數據時,發送端首先輸出邏輯0,作爲起始位;

  3. 接着開始輸出數據位,發送端首先輸出數據的最低位D0,然後是D1,最後是數據的最高位;

  4. 如果設有奇偶檢驗位,發送端輸出檢驗位;

  5. 最後,發送端輸出停止位(邏輯1);

  6. 如果沒有信息需要發送,發送端輸出邏輯1(空閒位),如果有信息需要發送,則轉入步驟2;

  7. 如果是以232電平發送的,示波器上看到的發送端信號應是上述數據包取反後的結果(負邏輯)。

  • 異步通信的數據接收過程

在異步通信中,接收端以接收時鐘和波特率因子決定每一位的時間長度。下面以波特率因子等於16(接收時鐘每16個時鐘週期使接收移位寄存器移位一次)爲例來說明:

  1. 開始通信,信號線爲空閒(邏輯1),當檢測到由1到0的跳變時,開始對接收時鐘計數;

  2. 接收端檢測到起始位後,隔16個接收時鐘對輸入信號檢測一次,把對應的值作爲D0位數據;

  3. 再隔16個接收時鐘,對輸入信號檢測一次,把對應的值作爲D1位數據,直到全部數據位都輸入;

  4. 檢驗奇偶檢驗位;

  5. 接收到規定的數據位個數和校驗位之後,通信接口電路希望收到停止位(邏輯1),若此時未收到邏輯1,說明出現了錯誤,在狀態寄存器中置“幀錯誤”標誌;若沒有錯誤,對全部數據位進行奇偶校驗,無校驗錯時,把數據位從移位寄存器中取出送至數據輸入寄存器,若校驗錯,在狀態寄存器中置“奇偶錯”標誌;

  6. 本幀信息全部接收完,把線路上出現的高電平作爲空閒位;

  7. 當信號再次變爲低時,開始進入下一幀的檢測。
    (PS1:接收時鐘和發送時鐘與波特率有如下關係:
    f = n × B 這裏f 是發送時鐘或接收時鐘的頻率; B 是數據傳輸的波特(Baud)率; n 稱爲波特率因子。設發送或接收時鐘的週期爲Tc,發送一個波形所需要的傳輸時間爲Td,則: Tc = 1/f , Td = 1/B ,得到: Tc = Td /n,從而n代表發送一個波形需要幾個時鐘週期。 在實際串行通信中,波特率因子可以設定。在異步傳送時,n = 1,16,64,常採用n = 16,即發送或接收時鐘的頻率要比數據傳送的波特率高n倍。在同步通信時,波特率因子n必須等於1。
    PS2:波特率與比特率的關係:
    波特率代表1秒鐘發送波形的個數,而比特率代表1秒鐘發送比特的個數。在採用二進制傳輸的情況下,發送的波形一共有兩種波形,即高電平和低電平,那麼一個波形代表一個比特,因此波特率和比特率相等;在採用四進制傳輸的情況下,發送的波形一共有4種波形,此處假設發送的最高電平爲3V,發送00的波形爲0V,發送01的波形爲1V,發送10的波形爲2V,發送11的波形爲3V,那麼一個波形代表兩個比特,因此比特率是波特率的兩倍;同理,在採用八進制傳輸的情況下,比特率是波特率的三倍,以此類推。)

  • 9針串口(DB9)

1:DCD 載波檢測

2:RXD 接受數據(方向:始終從終端到計算機)

3:TXD 發送數據(方向:始終從計算機到終端)

4:DTR 數據終端準備好

5:GND 地線信號

6:DSR 數據準備好

7:RTS 請求發送

8: CTS 清除發送

9:RI      振鈴指示

  •  TTL與RS232區別

  •  TTL:

TLL(Transistor-Transistor Logic,晶體管-晶體管邏輯),TTL電平即TTL電路輸出的電平,TTL電路的工作電壓是5V,它的輸出可以是高電平(3.6V)或者低電平(0.3V)。由於電平是一個連續變化的電壓範圍,爲了用這種模擬量的電壓來表示數字量的邏輯1和邏輯0,TTL電平規定:

對於輸出電路:電壓大於等於(≥)2.4V爲邏輯1;電壓小於等於(≤)0.4V爲邏輯0;

對於輸入電路:電壓大於等於(≥)2.0V爲邏輯1;電壓小於等於(≤)0.8V爲邏輯0;

邏輯高電平==’1‘==Vcc==3.3V或5V

邏輯低電平==’0‘==0V==0V

  • RS232:

S232是美國電子工業協會於1962年發佈的串行通信接口標準,RS即Recomend Standard,推薦標準,232爲標示號。該標準對串行通信的物理接口及邏輯電平都做了規定。最簡單的RS232通信由三條數據線組成,即TXD、RXD和GND。RS232採用負邏輯電平,即-15V~-3V代表邏輯"1",+3V~+15V代表邏輯"0"。這裏的電平,是TXD線(或者RXD線)相對於GND的電壓。

邏輯高電平==’0‘==負電壓== -3V~-25V==常爲:-13V

邏輯低電平==’1‘==正電壓== 3V~25V==常爲:13V

  • 串口通信的數據格式

 一個字符一個字符地傳輸,每個字符一位一位地傳輸,並且傳輸一個字符時,總是以“起始位”開始,以“停止位”結束,字符之間沒有固定的時間間隔要求。
    每一個字符的前面都有一位起始位(低電平),字符本身由7位數據位組成,接着字符後面是一位校驗位(檢驗位可以是奇校驗、偶校驗或無校驗位),最後是一位或一位半或二位停止位,停止位後面是不定長的空閒位,停止位和空閒位都規定爲高電平。實際傳輸時每一位的信號寬度與波特率有關,波特率越高,寬度越小,在進行傳輸之前,雙方一定要使用同一個波特率設置。

 

  1. 起始位,一般爲低電平;

  2. 數據位(Data Bits):起始位之後就是傳送數據位。數據位一般爲8位一個字節的數據(也有6位、7位的情況),標準的ASCII碼是0~127(7位),擴展的ASCII碼是0~255(8位),低位(LSB)在前,高位(MSB)在後;

  3. 奇偶校驗位可有可無,如果沒有則表示不採用校驗,有則表示加入校驗;

  4. 停止位,一般位高電平。

  • 通訊方式

  1.  單工模式(Simplex Communication)的數據傳輸是單向的。通信雙方中,一方固定爲發送端,一方則固定爲接收端。信息只能沿一個方向傳輸,使用一根傳輸線。

  2. 半雙工模式(Half Duplex)通信使用同一根傳輸線,既可以發送數據又可以接收數據,但不能同時進行發送和接收。數據傳輸允許數據在兩個方向上傳輸,但是,在任何時刻只能由其中的一方發送數據,另一方接收數據。因此半雙工模式既可以使用一條數據線,也可以使用兩條數據線。半雙工通信中每端需有一個收發切換電子開關,通過切換來決定數據向哪個方向傳輸。因爲有切換,所以會產生時間延遲,信息傳輸效率低些。

  3. 全雙工模式(Full Duplex)通信允許數據同時在兩個方向上傳輸。因此,全雙工通信是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力。在全雙工模式中,每一端都有發送器和接收器,有兩條傳輸線,信息傳輸效率高。

  4. 顯然,在其它參數都一樣的情況下,全雙工比半雙工傳輸速度要快,效率要高。

  • 偶校驗與奇校驗

在標準ASCII碼中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。

  • 停止位

停止位是按長度來算的。串行異步通信從計時開始,以單位時間爲間隔(一個單位時間就是波特率的倒數),依次接受所規定的數據位和奇偶校驗位,並拼裝成一個字符的並行字節;此後應接收到規定長度的停止位“1”。所以說,停止位都是“1”,1.5是它的長度,即停止位的高電平保持1.5個單位時間長度。一般來講,停止位有1,1.5,2個單位時間三種長度。

  • 波特率(波特率就是每秒鐘傳輸的數據位數)

波特率的單位是每秒比特數(bps),常用的單位還有:每秒千比特數Kbps,每秒兆比特數Mbps。串口典型的傳輸波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps。

PLC/PC與稱重儀表通訊時,最常用的波特率是9600bps,19200bps。PLC/PC或儀表與大屏幕通訊時,最常用的波特率是600bps。

  • 典型的串口通訊標準

  1. EIA RS232(通常簡稱“RS232”): 1962年由美國電子工業協會(EIA)制定。

  2. EIA RS485(通常簡稱“RS485”): 1983年由美國電子工業協會(EIA)制定。


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章