UART簡介
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。在嵌入式設計中,UART用來與PC進行通信,包括與監(jiān)控調試器和其它器件,如EEPROM通信。因為計算機內部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過UART整理才能進行異步傳輸,其過程為:CPU先把準備寫入串行設備的數(shù)據(jù)放到UART的寄存器(臨時內存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。
UART首先將接收到的并行數(shù)據(jù)轉換成串行數(shù)據(jù)來傳輸。消息幀從一個低位起始位開始,后面是5~8個數(shù)據(jù)位,一個可用的奇偶位和一個或幾個高位停止位。接收器發(fā)現(xiàn)開始位時它就知道數(shù)據(jù)準備發(fā)送,并嘗試與發(fā)送器時鐘頻率同步。如果選擇了奇偶,UART就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來幫助錯誤校驗。
在接收過程中,UART從消息幀中去掉起始位和結束位,對進來的字節(jié)進行奇偶校驗,并將數(shù)據(jù)字節(jié)從并行轉換成串行。UART也產(chǎn)生額外的信號來指示發(fā)送和接收的狀態(tài)。例如,如果產(chǎn)生一個奇偶錯誤,UART就置位奇偶標志。
UART基本結構
?、泡敵鼍彌_寄存器,它接收CPU從數(shù)據(jù)總線上送來的并行數(shù)據(jù),并加以保存。
?、?輸出移位寄存器,它接收從輸出緩沖器送來的并行數(shù)據(jù),以發(fā)送時鐘的速率把數(shù)據(jù)逐位移出,即將并行數(shù)據(jù)轉換為串行數(shù)據(jù)輸出。
⑶ 輸入移位寄存器,它以接收時鐘的速率把出現(xiàn)在串行數(shù)據(jù)輸入線上的數(shù)據(jù)逐位移入,當數(shù)據(jù)裝滿后,并行送往輸入緩沖寄存器,即將串行數(shù)據(jù)轉換成并行數(shù)據(jù)。
⑷ 輸入緩沖寄存器,它從輸入移位寄存器中接收并行數(shù)據(jù),然后由CPU取走。
?、煽刂萍拇嫫?,它接收CPU送來的控制字,由控制字的內容,決定通信時的傳輸方式以及數(shù)據(jù)格式等。例如采用異步方式還是同步方式,數(shù)據(jù)字符的位數(shù),有無奇偶校驗,是奇校驗還是偶校驗,停止位的位數(shù)等參數(shù)。⑹狀態(tài)寄存器。狀態(tài)寄存器中存放著接口的各種狀態(tài)信息,例如輸出緩沖區(qū)是否空,輸入字符是否準備好等。在通信過程中,當符合某種狀態(tài)時,接口中的狀態(tài)檢測邏輯將狀態(tài)寄存器的相應位置“1”,以便讓CPU查詢。
uart接口的作用
UART是用于控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數(shù)據(jù)終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。作為接口的一部分,UART有以下作用。
1、將由計算機內部傳送過來的并行數(shù)據(jù)轉換為輸出的串行數(shù)據(jù)流
2、將計算機外部來的串行數(shù)據(jù)轉換為字節(jié),供計算機內部使用并行數(shù)據(jù)的器件使用。
3、在輸出的串行數(shù)據(jù)流中加入奇偶校驗位,并對從外部接收的數(shù)據(jù)流進行奇偶校驗。
4、在輸出數(shù)據(jù)流中加入啟停標記,并從接收數(shù)據(jù)流中刪除啟停標記。處理由鍵盤或鼠標發(fā)出的中斷信號(鍵盤和鼠票也是串行設備)。
5、可以處理計算機與外部串行設備的同步管理問題。
6、計算機內部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過UART整理才能進行異步傳輸
RS232接口
RS232接口是PC機上串行接口標配,有DB9和DB25兩種,通常為DB9其接口定義如下
RS-232將設備分為
- 數(shù)據(jù)終端設備(DTE,Data Terminal Equipment, For example, PC)
- 數(shù)據(jù)通信設備(DCE,Data Communication Equipment)
DB9又有公頭(針型)和母頭(孔型)之分, PC上為公頭
實際使用接口時,一般只要2,3,5,即收、發(fā)和地三根線,就能實現(xiàn)通信
UART
UART用一條傳輸線將數(shù)據(jù)一位位地順序傳送,以字符為傳輸單位
通信中兩個字符間的時間間隔多少是不固定的, 然而在同一個字符中的兩個相鄰位間的時間間隔是固定的數(shù)據(jù)傳送速率用波特率來表示, 指單位時間內載波參數(shù)變化的次數(shù), 或每秒鐘傳送的二進制位數(shù)如每秒鐘傳送240個字符, 而每個字符包含10位(1個起始位, 1個停止位, 8個數(shù)據(jù)位), 這時的波特率為2400Bd
傳輸時序如下圖
在UART中,信號線上共有兩種狀態(tài), 分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分。在空閑時, 數(shù)據(jù)線應該保持在邏輯高電平狀態(tài)
其中各位的意義如下。
起始位(Start Bit): 先發(fā)出一個邏輯0信號, 表示傳輸字符的開始
數(shù)據(jù)位(Data Bits): 可以是5~8位邏輯0或1. 如ASCII碼(7位), 擴展BCD碼(8位)小端傳輸
校驗位(Parity Bit): 數(shù)據(jù)位加上這一位后, 使得1的位數(shù)應為偶數(shù)(偶校驗)或奇數(shù)(奇校驗)
停止位(Stop Bit): 它是一個字符數(shù)據(jù)的結束標志。 可以是1位、1.5位、2位的高電平
空閑位: 處于邏輯1狀態(tài), 表示當前線路上沒有資料傳送
連接
PC與嵌入式設備的連接需要一個電平轉換器(MAX232/MAX3232),具體即嵌入式設備將UART口引出為RS-232 Connector(4口,TX、RX、GND、VCC)RS232 Connector通過杜邦線連接MAX232
MAX232則通過RS232接口/USB與PC的COM口/USB口相連
tip: 若使用PC的USB接口做串口需要專門的驅動