UART通信協(xié)議是什么?
UART作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每一個字符一位一位地傳輸。其中每一位(bit)的意義如下:
起始位:先發(fā)出一個邏輯“0”的信號,表示傳輸字符開始。
數(shù)據(jù)位:緊接著起始位之后。數(shù)據(jù)位的個數(shù)可以是4、5、6、7、8等,構(gòu)成一個字符。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。
奇偶校驗位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以次來校驗數(shù)據(jù)傳送的正確性。
停止位:它是一個字符數(shù)據(jù)的結(jié)束標志??梢允?位、1.5位、2位的高電平。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率也就越慢。
空閑位:處于邏輯“1”狀態(tài),表示當前線路上沒有數(shù)據(jù)傳輸。
UART串口通信的工作原理
(1)發(fā)送數(shù)據(jù)過程
空閑狀態(tài),線路處于高電平;當收到發(fā)送指令后,拉低線路的一個數(shù)據(jù)位的時間T,接著數(shù)據(jù)按低位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送奇偶校驗位和停止位,一幀數(shù)據(jù)發(fā)送完成。
(2)數(shù)據(jù)接收過程:
空閑狀態(tài),線路處于高電平;當檢測到線路的下降沿(高電平變?yōu)榈碗娖剑r說明線路有數(shù)據(jù)傳輸,按照約定的波特率從低位到高位接收數(shù)據(jù),數(shù)據(jù)接收完畢后,接著接收并比較奇偶校驗位是否正確,如果正確則通知后續(xù)設(shè)備接收數(shù)據(jù)或存入緩沖。
由于UART是異步傳輸,沒有傳輸同步時鐘,為了保證數(shù)據(jù)的正確性,UART采用16倍數(shù)據(jù)波特率的時鐘進行采樣。每個數(shù)據(jù)有16個時鐘采樣,取中間的采樣值,以保證采樣不會滑碼或誤嗎。一般UART一幀的數(shù)據(jù)位數(shù)為8,這樣即使每個數(shù)據(jù)有一個時鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)。
UART的接收數(shù)據(jù)時序為:當檢測到數(shù)據(jù)的下降沿時,表明線路上有數(shù)據(jù)進行傳輸,這是計數(shù)器CNT開始計數(shù),當計數(shù)器為24=16+8時,采樣的值為第0位數(shù)據(jù);當計數(shù)器的值為40時,采樣的值為第一位數(shù)據(jù),依次類推,進行后面6個數(shù)據(jù)的采樣。如果需要進行奇偶校驗,則當計數(shù)器的值為152時,采樣的值即為奇偶位;當計數(shù)器的值為168時,采樣的值為“1”表示停止位,數(shù)據(jù)接收完成。