UART介紹
1. 概述
UART, Universal Asynchronous Receiver-Transmitter, 通用異步收發(fā)器;
串口:在嵌入式里指的是UART口,常用TTL電平即3.3V或者5.0V;
COM口:在臺式機上常用的口,DB9那種接口,接口協(xié)議只有兩種RS232和RS485;
RS232電平即負邏輯電平,定義+5V~+12V為邏輯0,-5V~-12V為邏輯1。
UART口、COM口指的是物理接口形式;
TTL、RS232和RS485指的是電平邏輯標準;
TTL電平和RS232電平轉(zhuǎn)換專用芯片有MAX232,TTL電平轉(zhuǎn)USB芯片有CP2102、PL2303、FT230等用USB來擴展串口數(shù)量。

2. 硬件結(jié)構(gòu)
與IIC、SPI 等接口一樣,都屬于串行通信接口,但是UART只有數(shù)據(jù)線收和發(fā),并無時鐘線,故為異步串行通信接口,可以實現(xiàn)全雙工通信;在嵌入式系統(tǒng)中,常用與控制系統(tǒng)與外設(shè)通信,包括控制器與控制器,控制器與終端設(shè)備。線路簡單,成本低,傳輸距離遠,但傳輸速度慢。
VCC:供電pin,一般是3.3V,在實際使用中一般不接,不影響使用;
GND:接地pin,板內(nèi)共地時可以不單獨接,板間通信時候必須接上;
RX:接收數(shù)據(jù)pin;
TX:發(fā)送數(shù)據(jù)pin; ?需要注意TX ?RX的參考系,不要接反了,電平需要兼容;
如果收發(fā)是有關(guān)聯(lián)關(guān)系的,很多情況下需要關(guān)注流控。
UART CTS/RTS用于硬流控,協(xié)調(diào)雙方收發(fā),保證數(shù)據(jù)不丟失。Clear to send ? ?Request To Send
A---------B
TX --> RX
RX <-- TX
RTS ---> CTS
CTS <--- RTS
芯片A通過UART發(fā)送數(shù)據(jù),當芯片B拉高RTS時,A就會暫停發(fā)送,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當芯片B拉低RTS時,A又會繼續(xù)發(fā)送。
比如 WIFI模組與AP的串口連接:

3. 通信協(xié)議
UART使用的是異步串行通信;以字符為傳輸單位,一位一位的順序輸送;通信中兩個字符間的時間間隔是不固定的 ,然而同一個字符內(nèi)兩個相鄰位之間的時間間隔是固定的。
數(shù)據(jù)的傳送速率用波特率來表示,即每秒鐘傳送的二進制位數(shù);
一般選波特率都會有9600,19200,115200等選項。
傳輸時序如下:

起始位:先發(fā)一個邏輯0,表示傳輸字符的開始;依靠檢測起始位來實現(xiàn)發(fā)送與接收方的時間自同步的。
數(shù)據(jù)位:可以是4、5、6、7、8位邏輯0或者1,構(gòu)成一個字符,如ASCII碼8位數(shù)據(jù)位,從最低位開始傳送,靠時鐘定位;方向為LSB。
奇偶校驗位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗)以此來校驗數(shù)據(jù)傳送的正確性;
停止位:他是一個字符數(shù)據(jù)的結(jié)束標志,可以是1位、1.5位、2位的高電平。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,數(shù)據(jù)傳輸率同時也越低。
空閑位:處于邏輯“1”狀態(tài),表示當前線路上沒有數(shù)據(jù)傳送。

UART傳輸數(shù)據(jù)的順序:剛開始傳輸一個起始位,接著傳輸數(shù)據(jù)位,接著傳輸校驗位(可不需要此位),最后傳輸停止位。這樣一幀的數(shù)據(jù)就傳輸完了。
傳輸方向:數(shù)據(jù)位從高位(MSB)開始傳輸還是從低位(LSB)開始傳輸。比如傳輸A,如果MSB就是01000001,如果LSB就是10000010。協(xié)議規(guī)定為LSB方向。
幀間隔:即傳送數(shù)據(jù)的幀與幀之間的間隔大小,可以用位或者時間為計量。

版權(quán)聲明:文章來源于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。