[轉]UART通信簡介


1.前言

UART通信,即通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter)。

串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現通信,降低成本,適用於遠距離通信,但傳輸速度慢的應用場合。

異步通信以一個字符為傳輸單位,通信中兩個字符間的時間間隔多少是不固定的,然而在同一個字符中的兩個相鄰位間的時間間隔是固定的。 
數據傳送速率用波特率來表示,即每秒鍾傳送的二進制位數。例如數據傳送速率為120字符/秒,而每一個字符為10位(1個起始位,7個數據位,1個校驗位,1個結束位),則其傳送的波特率為10×120=1200字符/秒=1200波特。

2.串行與並行通訊方式

  • 並行

控制簡單,傳輸速度快。線多,長距離成本較高且同時接受困難。

 

圖 並行通訊方式

 

  • 串行

將數據字節分成一位一位的行駛在一條傳輸線上進行傳輸。如圖:
 

 

圖 串行通訊方式

 

3. 串行通訊的特點

  • 串行通訊的制式

單工:數據傳輸僅沿一個方向,不能實現反向傳輸
半雙工:數據可以沿兩個方向傳輸,但是需要分時
全雙工:數據可以同時進行雙向傳輸

  • 串行通訊三種錯誤校驗

奇偶校驗、代碼和校驗、循環冗余校驗

  • RS232電平與TTL電平的轉換

PC使用的串口的電平為RS232的九針串口,MCU使用的電平是TTL電平,要使得PC 和MCU進行通訊,就需要對其電平極性轉換。

主要的幾款電平轉換芯片:MAX232、MAX202、HIN232,SIPEX320等

  • 串行通訊速度的定義_波特率

串行通訊的速率用波特率表示,其定義為:                   每秒鍾傳送二進制代碼的位數,即1波特=1位/秒,單位bps(位/秒)

eg:每秒鍾傳送240個字符,而每個字符格式包含10位(1起始、8數據、1停止),此時的波特率為:

                 10位*240個/秒=2400bps

  

4.同步與異步串行通訊方式

  • 同步串行通訊方式

同步通訊需要建立發送方對接收方時鍾的直接控制,是雙方達到完全同步

  • 異步串行通訊方式

通訊的發送和接收設備使用各自的時鍾控制數據的發送和接收,為使雙方收發協調,要求發送和接收的時鍾盡可能一致。如圖:

圖 異步串行通信方式

 

5.UART(通用異步串行通信方式)的數據傳輸格式

 

圖 UART的數據傳輸格式

異步通訊以字符構成的幀為單位進行傳輸,字符與字符之間的間隙是任意的,但每個字符中的各位是以固定的時間傳送的。

其一幀字符信息由4部分組成:起始位、數據位、奇偶檢驗位、停止位。在單片機中的通訊一般情況下均使用這種幀格式。如圖:

  •     起始位

先發出一個邏輯”0”信號,表示傳輸字符的開始。

  •     數據位

可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴展BCD碼(8位)。小端傳輸,即低位在前高位在后

  •     校驗位

數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗)

  •     停止位

它是一個字符數據的結束標志。可以是1位、1.5位、2位的高電平。

  •     空閑位

處於邏輯“1”狀態,表示當前線路上沒有資料傳送。

    注:異步通信是按字符傳輸的,接收設備在收到起始信號之后只要在一個字符的傳輸時間內能和發送設備保持同步就能正確接收。

下一個字符起始位的到來又使同步重新校准(依靠檢測起始位來實現發送與接收方的時鍾自同步的)

 

圖 連續字符的數據傳輸

6. UART的發送與接收過程

  • 串行數據的發送過程

串行數據的發送由發送時鍾控制。數據發送過程:把並行的數據序列送入移位寄存器,然后通過移位寄存器由發送時鍾觸發進行移位輸出,數據位的時間間隔可由發送時鍾周期來划分。

發送時鍾、待發送的二進制數據和出現在傳輸線上的信號波形三者的關系如圖所示:

圖 串行數據發送

  • 串行數據的接收過程

串行數據的接收由接收時鍾檢測,接收數據的過程:把由傳輸線送來的串行數據序列由接收時鍾作為輸入移位寄存器的觸發脈沖,逐位打入移位寄存器,接收過程是將串行數據序列逐位打入移位寄存器,而裝配成並行數據序列的過程。

接收時鍾、接收器檢測到的的二進制數據和出現在傳輸線上的信號波形三者的關系如圖所示:

圖 串行數據接收

 

7.UART RS232 MAX232 DB9的關系

  • UART是一種物理設備,主要用於數據的收發
  • RS232是一種異步串行通信協議標准
  • MAX232是一款芯片來實現PC端RS232電平轉換成單片機TTL電平
  • DB9是具體的物理連接器

注:TTL是Transistor-Transistor Logic,即晶體管-晶體管邏輯的簡稱,它是計算機處理器控制的設備內部各部分之間通信的標准技術。

       TTL電平信號應用廣泛,是因為其數據表示采用二進制規定,+5V等價於邏輯"1",0V等價於邏輯"0"。

       數字電路中,由TTL電子元器件組成電路的電平是個電壓范圍,規定:輸出高電平>=2.4V,輸出低電平<=0.4V;輸入高電平>=2.0V,輸入低電平<=0.8V。

       RS232是串口的一個標准,它有自己的電平定義:它采用負邏輯,-15V~-3V代表邏輯"1",+3V~+15V代表邏輯"0"。

圖 DB9 MAX232的連接

 

7.參考資料

[1] 基於51的串行通訊原理及協議詳解(uart) http://www.51hei.com/bbs/dpj-40281-1.html

 

 


免責聲明!

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



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