UART (Universal Asynchronous Receiver/Transmitter) 通用異步收發(fā)器。
UART是用于控制計(jì)算機(jī)與串行設(shè)備的芯片。有一點(diǎn)要注意的是,它提供了RS-232C數(shù)據(jù)終端設(shè)備接口,這樣計(jì)算機(jī)就可以和調(diào)制解調(diào)器或其它使用RS-232C接口的串行設(shè)備通信了。
作為接口的一部分,UART還提供以下功能:將由計(jì)算機(jī)內(nèi)部傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。將計(jì)算機(jī)外部來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供計(jì)算機(jī)內(nèi)部使用并行數(shù)據(jù)的器件使用。在輸出的串行數(shù)據(jù)流中加入奇偶校驗(yàn)位,并對(duì)從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn)。在輸出數(shù)據(jù)流中加入啟停標(biāo)記,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記。處理由鍵盤或鼠標(biāo)發(fā)出的中斷信號(hào)(鍵盤和鼠票也是串行設(shè)備)??梢蕴幚碛?jì)算機(jī)與外部串行設(shè)備的同步管理問題。有一些比較高檔的UART還提供輸入輸出數(shù)據(jù)的緩沖區(qū),現(xiàn)在比較新的UART是16550,它可以在計(jì)算機(jī)需要處理數(shù)據(jù)前在其緩沖區(qū)內(nèi)存儲(chǔ)16字節(jié)數(shù)據(jù),而通常的UART是8250?,F(xiàn)在如果您購(gòu)買一個(gè)內(nèi)置的調(diào)制解調(diào)器,此調(diào)制解調(diào)器內(nèi)部通常就會(huì)有16550 UART。
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用來與PC進(jìn)行通信,包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信
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)前線路上沒有資料傳送
簡(jiǎn)單的講:(UART與COM)
嵌入式里面說的串口,一般是指UART口, 但是我們經(jīng)常搞不清楚它和COM口的區(qū)別, 以及RS232, TTL等關(guān)系, 實(shí)際上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的電平標(biāo)準(zhǔn)(電信號(hào))。
UART有4個(gè)pin(VCC, GND, RX, TX), 用的TTL電平, 低電平為0(0V),高電平為1(3.3V或以上)。
COM口是我們臺(tái)式機(jī)上面常用的口(下圖),9個(gè)pin, 用的RS232電平, 它是負(fù)邏輯電平,它定義+5~+12V為低電平,而-12~-5V為高電平
詳細(xì)的說:
UART的特征
一般uart控制器在嵌入式系統(tǒng)里面都做在cpu一起,像飛思卡爾的IMX6芯片就是這樣,有多個(gè)uart控制器。
引腳介紹(COM口比較多pin,但是常用的也是這幾個(gè)):
VCC:供電pin,一般是3.3v,在我們的板子上沒有過電保護(hù),這個(gè)pin一般不接更安全
GND:接地pin,有的時(shí)候rx接受數(shù)據(jù)有問題,就要接上這個(gè)pin,一般也可不接
RX:接收數(shù)據(jù)pin
TX:發(fā)送數(shù)據(jù)pin,我之前碰到串口只能收數(shù)據(jù),不能發(fā)數(shù)據(jù)問題,經(jīng)baidu,原來是設(shè)置了流控制,取消就可以了,適用于putty,SecureCRT
在調(diào)試的時(shí)候, 多數(shù)情況下我們只引出rx,tx即可。 比如調(diào)試gps模塊, IC數(shù)據(jù)直接通過uart上報(bào),我就直接用了兩個(gè)線連出了rx,tx,連上串口轉(zhuǎn)USB小板, 電腦從串口直接獲取數(shù)據(jù),這樣跳過了開發(fā)板,測(cè)試了gps的數(shù)據(jù)有沒有問題。
使用方法:
我們常用UART口進(jìn)行調(diào)試,但是UART的數(shù)據(jù)要傳到電腦上分析就要匹配電腦的接口,通常我們電腦使用接口有COM口和USB口(最終在電腦上是一個(gè)虛擬的COM口),但是要想連上這兩種接口都要需要進(jìn)行硬件接口轉(zhuǎn)換和電平轉(zhuǎn)換。
如果連接電腦COM口, 需要一個(gè)類似下圖的轉(zhuǎn)換小板, 它實(shí)現(xiàn)了TTL電平和RS232電平互轉(zhuǎn), 我之前使用過, 但是現(xiàn)在很少用了。
如果要連接USB接口, 需要類似下面的小板, 它實(shí)現(xiàn)了TTL電平和USB電平的轉(zhuǎn)換, 這種使用的較多。
總結(jié)
1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的電平標(biāo)準(zhǔn)(電信號(hào))。
2、接設(shè)備的時(shí)候,一般只接GND RX TX。不會(huì)接Vcc或者+3.3v的電源線,避免與目標(biāo)設(shè)備上的供電沖突。
3、PL2303、CP2102芯片是 USB 轉(zhuǎn) TTL串口 的芯片,用USB來擴(kuò)展串口(TTL電平)
4、MAX232芯片是 TTL電平與RS232電平的專用雙向轉(zhuǎn)換芯片,可以TTL轉(zhuǎn)RS-232,也可以RS-232轉(zhuǎn)TTL。
5、TTL標(biāo)準(zhǔn)是低電平為0,高電平為1(+5V電平)。RS-232標(biāo)準(zhǔn)是正電平為0,負(fù)電平為1(±15V電平)。
6、RS-485與RS-232類似,但是采用差分信號(hào)負(fù)邏輯。這里略過不講。
其他
串口進(jìn)行通信的方式有兩種:同步通信方式和異步通信方式
SPI(Serial Peripheral Interface:串行外設(shè)接口);
I2C(INTER IC BUS:意為IC之間總線),一(host)對(duì)多,以字節(jié)為單位發(fā)送。
UART(Universal Asynchronous Receiver Transmitter:通用異步收發(fā)器), 一對(duì)一,以位為單位發(fā)送。
評(píng)論