UART接口介紹
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是電腦硬件的一部分。它將要傳輸?shù)?a href="http://ttokpm.com/soft/special/" target="_blank">資料在串行通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號(hào)轉(zhuǎn)成串行輸出信號(hào)的芯片,UART通常被集成于其他通訊接口的連結(jié)上。
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用于主機(jī)與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。
UART通信協(xié)議
UART用一條傳輸線將數(shù)據(jù)一位位地順序傳送,以字符為傳輸單位,通信中兩個(gè)字符間的時(shí)間間隔多少是不固定的, 然而在同一個(gè)字符中的兩個(gè)相鄰位間的時(shí)間間隔是固定的,數(shù)據(jù)傳送速率用波特率來表示, 指單位時(shí)間內(nèi)載波參數(shù)變化的次數(shù), 或每秒鐘傳送的二進(jìn)制位數(shù),
如每秒鐘傳送240個(gè)字符, 而每個(gè)字符包含10位(1個(gè)起始位, 1個(gè)停止位, 8個(gè)數(shù)據(jù)位), 這時(shí)的波特率為2400Bd。
傳輸時(shí)序如下圖:
在UART中,信號(hào)線上共有兩種狀態(tài), 分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分
在空閑時(shí), 數(shù)據(jù)線應(yīng)該保持在邏輯高電平狀態(tài)
其中各位的意義如下:
起始位(Start Bit):先發(fā)出一個(gè)邏輯0信號(hào), 表示傳輸字符的開始
數(shù)據(jù)位(Data Bits):可以是5~8位邏輯0或1. 如ASCII碼(7位), 擴(kuò)展BCD碼(8位)小端傳輸
校驗(yàn)位(Parity Bit):數(shù)據(jù)位加上這一位后, 使得1的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn))
停止位(Stop Bit):它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志。 可以是1位、1.5位、2位的高電平
空閑位:處于邏輯1狀態(tài), 表示當(dāng)前線路上沒有資料傳送
UART基本結(jié)構(gòu)
⑴輸出緩沖寄存器,它接收CPU從數(shù)據(jù)總線上送來的并行數(shù)據(jù),并加以保存。
?、?輸出移位寄存器,它接收從輸出緩沖器送來的并行數(shù)據(jù),以發(fā)送時(shí)鐘的速率把數(shù)據(jù)逐位移出,即將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出。
?、?輸入移位寄存器,它以接收時(shí)鐘的速率把出現(xiàn)在串行數(shù)據(jù)輸入線上的數(shù)據(jù)逐位移入,當(dāng)數(shù)據(jù)裝滿后,并行送往輸入緩沖寄存器,即將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。
?、?輸入緩沖寄存器,它從輸入移位寄存器中接收并行數(shù)據(jù),然后由CPU取走。
?、煽刂萍拇嫫鳎邮誄PU送來的控制字,由控制字的內(nèi)容,決定通信時(shí)的傳輸方式以及數(shù)據(jù)格式等。例如采用異步方式還是同步方式,數(shù)據(jù)字符的位數(shù),有無奇偶校驗(yàn),是奇校驗(yàn)還是偶校驗(yàn),停止位的位數(shù)等參數(shù)。
?、薁顟B(tài)寄存器。狀態(tài)寄存器中存放著接口的各種狀態(tài)信息,例如輸出緩沖區(qū)是否空,輸入字符是否準(zhǔn)備好等。在通信過程中,當(dāng)符合某種狀態(tài)時(shí),接口中的狀態(tài)檢測(cè)邏輯將狀態(tài)寄存器的相應(yīng)位置“1”,以便讓CPU查詢。
UART通信速率
數(shù)據(jù)傳輸可以首先從最低有效位(LSB)開始。然而,有些UART允許靈活選擇先發(fā)送最低有效位或最高有效位(MSB)。微控制器中的UART傳送數(shù)據(jù)的 速度范圍為每秒幾百位到1.5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高達(dá)1.152Mbps。UART波特率還受 發(fā)送和接收線對(duì)距離(線長(zhǎng)度)的影響。
目前,市場(chǎng)上有只支持異步通信和同時(shí)支持異步與同步通信的兩種硬件可用于UART。前者就是UART名字本身的含義,在摩托羅拉微控制器中被稱為串行通信 接口(SCI);Microchip微控制器中的通用同步異步收發(fā)器(USART)和在富士通微控制器中的UART是后者的兩個(gè)典型例子。
UART工作原理
發(fā)送數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當(dāng)收到發(fā)送數(shù)據(jù)指令后,拉低線路一個(gè)數(shù)據(jù)位的時(shí)間T,接著數(shù)據(jù)按低位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送奇偶校驗(yàn)位和停止位(停止位為高電位),一幀數(shù)據(jù)發(fā)送結(jié)束。
接收數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當(dāng)檢測(cè)到線路的下降沿(線路電位由高電位變?yōu)榈碗娢唬r(shí)說明線路有數(shù)據(jù)傳輸,按照約定的波特率從低位到高位接收數(shù)據(jù),數(shù)據(jù)接收完畢后,接著接收并比較奇偶校驗(yàn)位是否正確,如果正確則通知后續(xù)設(shè)備準(zhǔn)備接收數(shù)據(jù)或存入緩存。
由于UART是異步傳輸,沒有傳輸同步時(shí)鐘。為了能保證數(shù)據(jù)傳輸?shù)恼_性,UART采用16倍數(shù)據(jù)波特率的時(shí)鐘進(jìn)行采樣。每個(gè)數(shù)據(jù)有16個(gè)時(shí)鐘采樣,取中間的采樣值,以保證采樣不會(huì)滑碼或誤碼。一般UART一幀的數(shù)據(jù)位數(shù)為8,這樣即使每個(gè)數(shù)據(jù)有一個(gè)時(shí)鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)。
UART的接收數(shù)據(jù)時(shí)序?yàn)椋寒?dāng)檢測(cè)到數(shù)據(jù)的下降沿時(shí),表明線路上有數(shù)據(jù)進(jìn)行傳輸,這時(shí)計(jì)數(shù)器CNT開始計(jì)數(shù),當(dāng)計(jì)數(shù)器為24=16+8時(shí),采樣的值為第0位數(shù)據(jù);當(dāng)計(jì)數(shù)器的值為40時(shí),采樣的值為第1位數(shù)據(jù),依此類推,進(jìn)行后面6個(gè)數(shù)據(jù)的采樣。如果需要進(jìn)行奇偶校驗(yàn),則當(dāng)計(jì)數(shù)器的值為152時(shí),采樣的值即為奇偶位;當(dāng)計(jì)數(shù)器的值為168時(shí),采樣的值為“1”表示停止位,一幀數(shù)據(jù)接收完成。
一個(gè)標(biāo)準(zhǔn)的10位異步串行通信協(xié)議(包含1個(gè)起始位、1個(gè)停止位和8個(gè)數(shù)據(jù)位)收發(fā)時(shí)序,如圖2所示
圖2.10位標(biāo)準(zhǔn)串行通信協(xié)議收發(fā)時(shí)序圖
評(píng)論
查看更多