UART 基礎知識

來源:互聯網
上載者:User
UART (Universal Asynchronous Receiver/Transmitter) 
通用非同步收發器 

UART是用於控制電腦與串列裝置的晶片。有一點要注意的是,它提供了RS-232C資料終端設備介面,這樣電腦就可以和數據機或其它使用RS-232C介面的串列裝置通訊了。作為介面的一部分,UART還提供以下功能: 

    將由電腦內部傳送過來的並行資料轉換為輸出的串列資料流。

    將電腦外部來的串列資料轉換為位元組,供電腦內部使用並行資料的器件使用。

    在輸出的串列資料流中加入同位位元,並對從外部接收的資料流進行同位。

    在輸出資料流中加入啟停標記,並從接收資料流中刪除啟停標記。

    處理由鍵盤或滑鼠發出的中斷訊號(鍵盤和鼠票也是串列裝置)。

    可以處理電腦與外部串列裝置的同步管理問題。

    有一些比較高檔的UART還提供輸入輸出資料的緩衝區,現在比較新的UART 是16550,它可以在電腦需要處理資料前在其緩衝區記憶體儲16位元組資料,而通常的UART是8250。現在如果您購買一個內建的數據機,此數據機內部通常就會有16550 UART。

1.UART協議的工作特點
1.1資料採樣

 
    UART協議是實現裝置之間低速資料通訊的標準協議。因發送時不需同時發送時鐘,故此協議為非同步。UART連結典型為38400,9600傳輸速率 。 如1,UART字元格式設定為1個起始位,5~8個資料位元,1個地址位或奇偶位(可選),1個停止位。

 
    由於接收器、發送器非同步工作,無需聯結接收和發送時鐘。接收器採取對輸入資料流高度採樣方式,通常採樣為16,並根據採樣值確定位值。按慣例,使用16個採樣值的中間三個值。


1.2 UART幀區分

 
    UART一參數MAX-IDL,用來設定空閑字元的多少。一旦一字元線上上被接收,UART控制器開始計數接收到的空閑字元。若下一資料字元接收前,一MAX-IDL多個空閑字元被接收,則產生空閑時間,緩衝區被關閉。順次對CPU32+核心發出一插斷要求,要求從緩衝區接收資料。因此,MAX-IDL給UART模式提供一區分幀的便利方法。


    空閑字元按以下公式計算其位元:1(起始)+資料長度(5,6,7,8)+1(若同位被使用)+停止位(1)。例如,1個(起始),8位元據,無校正,1個停止位,則空閑字元MAX-IDL為10位。


1.3 UART地址識別

 
    多站系統中,網路上可能會有兩個以上的站,每個站有一特定的地址。2為此種結構的兩個樣本。由許多字元構成的幀可被廣播,其第一字元做為目的地址。為實現此功能,UART幀被擴充一位,以區別地址字元和正常資料字元。


    UART可被設定為操作於一多站環境,此環境下,支援以下兩種模式:
自動多站模式 當地址於兩個預置值之一相匹配時,UART控制器自動檢查到來地址字元,接收隨後的資料。


    非自動多站模式 UART控制器接收所有資料。一地址字元總被寫入一新緩衝區。


    綜上所述,UART協議採取一種通過資料採樣來確定位值的機理,具有簡單準確的定幀模式,而且廣泛用於多站系統中,具有自動多站和非自動多站兩種模式,來區分地址和資料。 

2.幾種重要寄存器


    在嵌入式開發中,對寄存器的理解和正確配置至關重要。對MPC860的UART協議,有幾個重要寄存器,它們是:管足配置寄存器、傳輸速率配置寄存器、通訊處理命令寄存器、SCC通用模式寄存器、發送和接收緩衝區描述器、UART的特定參數、SCC協議專用模式寄存器、SCC協議事件寄存器、UART屏蔽寄存器。


    管足配置寄存器一般是針對收、發兩根管足,有開漏寄存器、資料寄存器、資料方向寄存器,它們可被設定為具有串列通道輸出的能力和被設定為輸入輸出口。傳輸速率配置寄存器負責把傳輸速率指向所用的串口和配置傳輸速率大小。通訊處理命令寄存器主要用於判斷命令的發出是否和阻止傳送。SCC通用模式寄存器主要用於協議的選擇和傳輸格式的配置。發送和接收緩衝區描述器主要用於收發資料和判斷接收的是地址還是資料,資料的錯誤情況等。UART的特定參數用來部分初始化UART。SCC協議專用模式寄存器主要用於設定UART處於自動多站和非自動多站模式。事件寄存器主要用於判斷是收中斷還是發中斷。屏蔽寄存器主要用於收、發使能。


    因此,對UART協議來說,上面幾種寄存器是很重要的,它們主要完成傳輸速率配置,協議的選擇,收發判斷處理等。

UART & RS232 & COM


    UART是通用非同步收發器(非同步串列通訊口)的英文縮寫,它包括了RS232、RS499、RS423、RS422和RS485等介面標準規範和匯流排標準規範,即UART是非同步串列通訊口的總稱。

    而RS232、RS499、RS423、RS422和RS485等,是對應各種非同步串列通訊口的介面標準和匯流排標準,它規定了通訊口的電氣特性、傳輸速率、串連特性和介面的機械特性等內容。實際上是屬於通訊網路中的物理層(最底層)的概念,與通訊協定沒有直接關係。而通訊協定,是屬於通訊網路中的資料連結層(上一層)的概念。

    COM口是PC(個人電腦)上,非同步串列通訊口的簡寫。由於曆史原因,IBM的PC外部介面配置為RS232,成為實際上的PC界預設標準。所以,現在PC機的COM口均為RS232。

        UART(Universal Asynchronous Receiver/Transmitter)即通用非同步收發傳輸器,工作於資料連結層。包含了RS-232、RS-422、RS-485串口通訊和紅外(IrDA) 等等。UART協議作為一種低速通訊協定,廣泛應用於通訊領域等各種場合。UART基本可分為並口通訊及串口通訊兩種。

 

 

         非同步串口通訊協定作為UART的一種,工作原理是將傳輸資料的每個字元一位接一位地傳輸。圖一給出了其工作模式:

 

 

 

圖 一

    其中各位的意義如下:
    起始位:先發出一個邏輯”0”的訊號,表示傳輸字元的開始。


    資料位:緊接著起始位之後。資料位的個數可以是4、5、6、7、8等,構成一個字元。通常採用ASCII碼。從最低位開始傳送,靠時鐘定位。


    同位位元:資料位加上這一位後,使得“1”的位元應為偶數(偶校正)或奇數(奇數同位),以此來校正資料傳送的正確性。


    停止位:它是一個字元資料的結束標誌。可以是1位、1.5位、2位的高電平。 

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


    傳輸速率:是衡量資料傳送速率的指標。表示每秒鐘傳送的二進位位元。例如資料傳送速率為120字元/秒,而每一個字元為10位,則其傳送的傳輸速率為10×120=1200字元/秒=1200傳輸速率。

 

         在嵌入式系統或者電腦中,並非直接對串口直接進行,而是通過SCI (串列通訊介面)模組對其進行控制。(註:“SCI”首先由Motorola微串口微控制器而得名,SCI另一種說法是“UART控制器”)常用的許多晶片中都包含了SCI ,例如ARM的S3C2410X晶片內嵌了3個串列介面控制器,而Nios等軟核晶片則可以用選用UART(RS232) 的IP對UART進行控制。PC機則常用 16650 UART,16750 UART等控制串口。

如果實現一個軟體UART時,在UART檢查連接埠管腳的串列活動時,需要佔用大量時間,讓應用程式停滯,這會使得軟體UART沒有意義。好在情況並非如此,我們來看看標準的10位非同步串列協議(包含一個起始位,一個停止位和8個資料位元)收發一個字元時的情況(1所示)。


圖1:標準的10位非同步串列協議收發字元時的時序圖。

在啟動一次發送或接收操作之後,串列UART(不論是軟體還是硬體形式的UART)並不需要連續監控I/O線。在發送一個字元時,每個位周期, UART只需驅動一次發送訊號線的狀態,從起始位到8個資料位元直到結束位依次設定每個位的電平。在接收一個字元時,UART在第一個下降沿開始工作,之後只需在每個位時隙的中央對接收線上的訊號狀態進行一次採樣。

我們可以用一對狀態機器來表徵軟體UART的行為,一個狀態機器用於發送字元,另一個用於接收字元。對一個全雙工系統的UART而言,這兩個狀態機器是並行啟動並執行,需要兩個獨立的定時器中斷。這兩個狀態機器都有主動和被動兩種模式。發送狀態機器在收到一個需發送的字元時跳出空閑狀態,在結束位發送之後回到空閑狀態。接收狀態機器在檢測到接收線上的一個下降沿時跳出空閑狀態。在檢測到這個初始的低電平狀態之後(該狀態指示起始位已經開始),開始對位時隙進行遞減計數,同時按要求採樣訊號線上的每個訊號位,包括停止位。

為了避免不必要地佔用主應用過多的時間,UART狀態機器應該由一些周期性的基於定時器的中斷來啟用。接收線上初始下降沿的檢測需要利用一個邊沿觸發的外部中斷單獨處理。如果一個狀態機器的定時器被設定為每個位元周期發出一個插斷要求,那麼該狀態機器在每次中斷被觸發時能夠執行任何需要的操作 (而且如果需要,還能進入到下一個狀態)。用於實現狀態機器的代碼應儘可能最佳化,因為只要軟體UART處於活動狀態,這些代碼就會在後台連續運行。


原文地址:http://www.xxlinux.com/linux/article/network/app/20071106/11626.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.