UART接口介紹

轉載
http://www.elecfans.com/pld/jiekou_zongxian_qudong/596884.html

通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發傳輸器,是電腦硬件的一部分。它將要傳輸的資料在串行通信與並行通信之間加以轉換。作爲把並行輸入信號轉成串行輸出信號的芯片,UART通常被集成於其他通訊接口的連結上。
UART是一種通用串行數據總線,用於異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用於主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件,如EEPROM通信。
UART通信協議
  UART用一條傳輸線將數據一位位地順序傳送,以字符爲傳輸單位,通信中兩個字符間的時間間隔多少是不固定的, 然而在同一個字符中的兩個相鄰位間的時間間隔是固定的,數據傳送速率用波特率來表示, 指單位時間內載波參數變化的次數, 或每秒鐘傳送的二進制位數,

如每秒鐘傳送240個字符, 而每個字符包含10位(1個起始位, 1個停止位, 8個數據位), 這時的波特率爲2400Bd。

傳輸時序如下圖:
  在這裏插入圖片描述
在UART中,信號線上共有兩種狀態, 分別用邏輯1(高電平)和邏輯0(低電平)來區分

在空閒時, 數據線應該保持在邏輯高電平狀態

其中各位的意義如下:

起始位(Start Bit):先發出一個邏輯0信號, 表示傳輸字符的開始

數據位(Data Bits):可以是5~8位邏輯0或1. 如ASCII碼(7位), 擴展BCD碼(8位)小端傳輸

校驗位(Parity Bit):數據位加上這一位後, 使得1的位數應爲偶數(偶校驗)或奇數(奇校驗)

停止位(Stop Bit):它是一個字符數據的結束標誌。 可以是1位、1.5位、2位的高電平

空閒位:處於邏輯1狀態, 表示當前線路上沒有資料傳送
  
UART基本結構
  ⑴輸出緩衝寄存器,它接收CPU從數據總線上送來的並行數據,並加以保存。

⑵ 輸出移位寄存器,它接收從輸出緩衝器送來的並行數據,以發送時鐘的速率把數據逐位移出,即將並行數據轉換爲串行數據輸出。

⑶ 輸入移位寄存器,它以接收時鐘的速率把出現在串行數據輸入線上的數據逐位移入,當數據裝滿後,並行送往輸入緩衝寄存器,即將串行數據轉換成並行數據。

⑷ 輸入緩衝寄存器,它從輸入移位寄存器中接收並行數據,然後由CPU取走。

⑸控制寄存器,它接收CPU送來的控制字,由控制字的內容,決定通信時的傳輸方式以及數據格式等。例如採用異步方式還是同步方式,數據字符的位數,有無奇偶校驗,是奇校驗還是偶校驗,停止位的位數等參數。
  ⑹狀態寄存器。狀態寄存器中存放着接口的各種狀態信息,例如輸出緩衝區是否空,輸入字符是否準備好等。在通信過程中,當符合某種狀態時,接口中的狀態檢測邏輯將狀態寄存器的相應位置「1」,以便讓CPU查詢。
  在這裏插入圖片描述
 UART通信速率
  數據傳輸可以首先從最低有效位(LSB)開始。然而,有些UART允許靈活選擇先發送最低有效位或最高有效位(MSB)。微控制器中的UART傳送數據的 速度範圍爲每秒幾百位到1.5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高達1.152Mbps。UART波特率還受 發送和接收線對距離(線長度)的影響。

目前,市場上有隻支持異步通信和同時支持異步與同步通信的兩種硬件可用於UART。前者就是UART名字本身的含義,在摩托羅拉微控制器中被稱爲串行通信 接口(SCI);Microchip微控制器中的通用同步異步收發器(USART)和在富士通微控制器中的UART是後者的兩個典型例子。

UART工作原理
  發送數據過程:空閒狀態,線路處於高電位;當收到發送數據指令後,拉低線路一個數據位的時間T,接着數據按低位到高位依次發送,數據發送完畢後,接着發送奇偶校驗位和停止位(停止位爲高電位),一幀數據發送結束。

接收數據過程:空閒狀態,線路處於高電位;當檢測到線路的下降沿(線路電位由高電位變爲低電位)時說明線路有數據傳輸,按照約定的波特率從低位到高位接收數據,數據接收完畢後,接着接收並比較奇偶校驗位是否正確,如果正確則通知後續設備準備接收數據或存入緩存。
  由於UART是異步傳輸,沒有傳輸同步時鐘。爲了能保證數據傳輸的正確性,UART採用16倍數據波特率的時鐘進行採樣。每個數據有16個時鐘採樣,取中間的採樣值,以保證採樣不會滑碼或誤碼。一般UART一幀的數據位數爲8,這樣即使每個數據有一個時鐘的誤差,接收端也能正確地採樣到數據。

UART的接收數據時序爲:當檢測到數據的下降沿時,表明線路上有數據進行傳輸,這時計數器CNT開始計數,當計數器爲24=16+8時,採樣的值爲第0位數據;當計數器的值爲40時,採樣的值爲第1位數據,依此類推,進行後面6個數據的採樣。如果需要進行奇偶校驗,則當計數器的值爲152時,採樣的值即爲奇偶位;當計數器的值爲168時,採樣的值爲「1」表示停止位,一幀數據接收完成。

一個標準的10位異步串行通信協議(包含1個起始位、1個停止位和8個數據位)收發時序,如圖2所示
  在這裏插入圖片描述