什么是uart
UART是用于控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。
UART的功能
將由計算機內部傳送過來的并行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節,供計算機內部使用并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠票也是串行設備)。可以處理計算機與外部串行設備的同步管理問題。
有一些比較高檔的UART還提供輸入輸出數據的緩沖區,現在比較新的UART是16550,它可以在計算機需要處理數據前在其緩沖區內存儲16字節數據,而通常的UART是8250。現在如果您購買一個內置的調制解調器,此調制解調器內部通常就會有16550 UART。
UART協議的工作特點
1、數據采樣
UART協議是實現設備之間低速數據通信的標準協議。因發送時不需同時發送時鐘,故此協議為異步。UART鏈接典型為38400,9600波特 。
如圖1,UART字符格式為1個起始位,5~8個數據位,1個地址位或奇偶位(可選),1個停止位。 由于接收器、發送器異步工作,無需聯接接收和發送時鐘。接收器采取對輸入數據流高度采樣方式,通常采樣為16,并根據采樣值確定位值。按慣例,使用16個采樣值的中間三個值。
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位。
3、UART地址識別
多站系統中,網絡上可能會有兩個以上的站,每個站有一特定的地址。圖2為此種結構的兩個示例。由許多字符構成的幀可被廣播,其第一字符做為目的地址。為實現此功能,UART幀被擴展一位,以區別地址字符和正常數據字符。
UART可被設置為操作于一多站環境,此環境下,支持以下兩種模式:
自動多站模式 當地址于兩個預置值之一相匹配時,UART控制器自動檢查到來地址字符,接收隨后的數據。 非自動多站模式 UART控制器接收所有數據。一地址字符總被寫入一新緩沖區。
綜上所述,UART協議采取一種通過數據采樣來確定位值的機理,具有簡單準確的定幀模式,而且廣泛用于多站系統中,具有自動多站和非自動多站兩種模式,來區分地址和數據。
手機上的UART設置是什么意思_有什么用
通用非同步收發傳輸選項,是用來設置PC同步軟件同步哪張卡里的數據, 包括電話簿等。
幾種重要寄存器
在嵌入式開發中,對寄存器的理解和正確配置至關重要。對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所示)。
在啟動一次發送或接收操作之后,串行UART(不論是軟件還是硬件形式的UART)并不需要連續監控I/O線。在發送一個字符時,每個位周期,UART只需驅動一次發送信號線的狀態,從起始位到8個數據位直到結束位依次設置每個位的電平。在接收一個字符時,UART在第一個下降沿開始工作,之后只需在每個位時隙的中央對接收線上的信號狀態進行一次采樣。
我們可以用一對狀態機來表征軟件UART的行為,一個狀態機用于發送字符,另一個用于接收字符。對一個全雙工的UART而言,這兩個狀態機是并行運行的,需要兩個獨立的定時器中斷。這兩個狀態機都有主動和被動兩種模式。發送狀態機在收到一個需發送的字符時跳出空閑狀態,在結束位發送之后回到空閑狀態。接收狀態機在檢測到接收線上的一個下降沿時跳出空閑狀態。在檢測到這個初始的低電平狀態之后(該狀態指示起始位已經開始),開始對位時隙進行遞減計數,同時按要求采樣信號線上的每個信號位,包括停止位。
為了避免不必要地占用主應用過多的時間,UART狀態機應該由一些周期性的基于定時器的中斷來激活。接收線上初始下降沿的檢測需要利用一個邊沿觸發的外部中斷單獨處理。如果一個狀態機的定時器被設置為每個比特周期發出一個中斷請求,那么該狀態機在每次中斷被觸發時能夠執行任何需要的操作(而且如果需要,還能進入到下一個狀態)。用于實現狀態機的代碼應盡可能優化,因為只要軟件UART處于活動狀態,這些代碼就會在后臺連續運行。