3
UART通信
在UART通信中,兩個(gè)UART直接相互通信。 發(fā)送UART將控制設(shè)備(如CPU)的并行數(shù)據(jù)轉(zhuǎn)換為串行形式,以串行方式將其發(fā)送到接收UART。只需要兩條線即可在兩個(gè)UART之間傳輸數(shù)據(jù),數(shù)據(jù)從發(fā)送UART的Tx引腳流到接收UART的Rx引腳:
UART屬于異步通訊,這意味著沒(méi)有時(shí)鐘信號(hào),取而代之的是在數(shù)據(jù)包中添加開(kāi)始和停止位。這些位定義了數(shù)據(jù)包的開(kāi)始和結(jié)束,因此接收UART知道何時(shí)讀取這些數(shù)據(jù)。
當(dāng)接收UART檢測(cè)到起始位時(shí),它將以特定波特率的頻率讀取。波特率是數(shù)據(jù)傳輸速度的度量,以每秒比特?cái)?shù)(bps)表示。兩個(gè)UART必須以大約相同的波特率工作,發(fā)送和接收UART之間的波特率只能相差約10%。
工作原理
發(fā)送UART從數(shù)據(jù)總線獲取并行數(shù)據(jù)后,它會(huì)添加一個(gè)起始位,一個(gè)奇偶校驗(yàn)位和一個(gè)停止位來(lái)組成數(shù)據(jù)包并從Tx引腳上逐位串行輸出,接收UART在其Rx引腳上逐位讀取數(shù)據(jù)包。
UART數(shù)據(jù)包含有1個(gè)起始位,5至9個(gè)數(shù)據(jù)位(取決于UART),一個(gè)可選的奇偶校驗(yàn)位以及1個(gè)或2個(gè)停止位:
起始位
UART數(shù)據(jù)傳輸線通常在不傳輸數(shù)據(jù)時(shí)保持在高電壓電平。開(kāi)始傳輸時(shí)發(fā)送UART在一個(gè)時(shí)鐘周期內(nèi)將傳輸線從高電平拉低到低電平,當(dāng)接收UART檢測(cè)到高電壓到低電壓轉(zhuǎn)換時(shí),它開(kāi)始以波特率的頻率讀取數(shù)據(jù)幀中的位。
數(shù)據(jù)幀
數(shù)據(jù)幀內(nèi)包含正在傳輸?shù)膶?shí)際數(shù)據(jù)。如果使用奇偶校驗(yàn)位,則可以是5位,最多8位。如果不使用奇偶校驗(yàn)位,則數(shù)據(jù)幀的長(zhǎng)度可以為9位。
校驗(yàn)位
奇偶校驗(yàn)位是接收UART判斷傳輸期間是否有任何數(shù)據(jù)更改的方式。接收UART讀取數(shù)據(jù)幀后,它將對(duì)值為1的位數(shù)進(jìn)行計(jì)數(shù),并檢查總數(shù)是偶數(shù)還是奇數(shù),是否與數(shù)據(jù)相匹配。
停止位
為了向數(shù)據(jù)包的結(jié)尾發(fā)出信號(hào),發(fā)送UART將數(shù)據(jù)傳輸線從低電壓驅(qū)動(dòng)到高電壓至少持續(xù)兩位時(shí)間。
傳輸步驟
1.發(fā)送UART從數(shù)據(jù)總線并行接收數(shù)據(jù):
2.發(fā)送UART將起始位,奇偶校驗(yàn)位和停止位添加到數(shù)據(jù)幀:
3.整個(gè)數(shù)據(jù)包從發(fā)送UART串行發(fā)送到接收UART。接收UART以預(yù)先配置的波特率對(duì)數(shù)據(jù)線進(jìn)行采樣:
4.接收UART丟棄數(shù)據(jù)幀中的起始位,奇偶校驗(yàn)位和停止位:
5.接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線:
優(yōu)劣
沒(méi)有任何通信協(xié)議是完美的,但是UART非常擅長(zhǎng)于其工作。以下是一些利弊,可幫助您確定它們是否適合您的項(xiàng)目需求:
優(yōu)點(diǎn)
-
僅使用兩根電線
-
無(wú)需時(shí)鐘信號(hào)
-
具有奇偶校驗(yàn)位以允許進(jìn)行錯(cuò)誤檢查
-
只要雙方都設(shè)置好數(shù)據(jù)包的結(jié)構(gòu)
-
有據(jù)可查并得到廣泛使用的方法
缺點(diǎn)
-
數(shù)據(jù)幀的大小最大為9位
-
不支持多個(gè)從屬系統(tǒng)或多個(gè)主系統(tǒng)
-
每個(gè)UART的波特率必須在彼此的10%之內(nèi)
轉(zhuǎn)載汽車(chē)電子相關(guān)文章
轉(zhuǎn)自汽車(chē)電子與軟件