UART(通用異步收發器),這是用于全雙工串行通信的最常見協議。它是設計用于執行異步通信的單個LSI(大規模集成)芯片。該設備將數據從一個系統發送到另一系統。在本文中,英銳恩單片機開發工程師將介紹UART通信的基礎知識以及UART的工作原理。
什么是UART?
“ UART”代表通用異步收發器。它是微控制器內部的硬件外圍設備。UART的功能是將傳入和傳出的數據轉換為串行二進制流。使用串行到并行轉換將從外圍設備接收的8位串行數據轉換為并行形式,使用串行到并行轉換將從CPU接收的并行數據轉換為并行形式。該數據以調制形式存在,并以定義的波特率傳輸。
為什么要使用UART?
諸如SPI(串行外圍接口)和USB(通用串行總線)之類的協議用于快速通信。當不需要高速數據傳輸時,使用UART。它是帶有單個發送器/接收器的廉價通信設備。它需要一根導線來傳輸數據,而需要另一根導線來接收數據。
可以使用RS232-TTL轉換器或USB-TTL轉換器將其與PC(個人計算機)接口。RS232和UART之間的共同點是它們都不需要時鐘來發送和接收數據。Uart幀由1個起始位,1個或2個停止位以及一個用于串行數據傳輸的奇偶校驗位組成。
UART框圖
UART由以下核心組件組成。它們是發送器和接收器。發送器由發送保持寄存器,發送移位寄存器和控制邏輯組成。類似地,接收器由接收保持寄存器,接收器移位寄存器和控制邏輯組成。通常,發送器和接收器都配有波特率發生器。
波特率發生器生成發送器和接收器必須發送/接收數據的速度。發送保持寄存器包含要發送的數據字節。發送移位寄存器和接收移位寄存器將這些位向左或向右移位,直到發送/接收一個字節的數據為止。
除了這些,還提供了讀或寫控制邏輯以告知何時進行讀/寫。波特率發生器產生的速度范圍從110 bps(每秒比特)到230400。大多數情況下,微控制器提供更高的波特率,例如115200和57600,以實現更快的數據傳輸。GPS和GSM等設備在4800和9600中使用較低的波特率。
一、UART如何工作?
要了解UART的工作原理,您需要了解串行通信的基本功能。簡而言之,發送器和接收器使用開始位,停止位和定時參數相互同步。原始數據為并行形式。例如,我們有4位數據,要將其轉換為串行形式,我們需要并行到串行轉換器。通常,D觸發器或鎖存器用于設計轉換器。
(1)D–觸發器的工作
D觸發器也稱為數據觸發器,當且僅當時鐘將時鐘從高態轉換為低電平或從低態轉換為高態時,才從輸入側向輸出側移位一位。同樣,如果要傳輸四位數據,則??需要4個觸發器。
注意,在這里:
“D”代表輸入數據。
“CLK”表示時鐘脈沖。
“Q”表示輸出數據?,F在,讓我們設計一個并行到串行和串行到并行轉換器。
(2)并行到串行轉換
步驟1:
取4個觸發器。觸發器的數量等于要發送的位數。同樣,將多路復用器放在每個觸發器的前面,但不包括第一個。放置一個多路復用器以合并數據并將其轉換為串行位。它有兩個輸入,一個并行位數據,另一個來自前一個觸發器。
第2步:
現在,一次在D個觸發器中加載數據。它將拉出并行數據,并移動最后一個觸發器的最后一位(四個),然后是第三位,第二位,最后是第一位?,F在,為了將并行數據轉換為串行形式,使用了串行到并行轉換器。
(3)串行到并行轉換
步驟1:
取4個觸發器。觸發器的數量與要發送的位數相同。
步驟2:
最初,禁用并行總線。直到所有位都加載后才啟用。將數據存儲在第一個觸發器的輸入處?,F在將時鐘設為高電平,這會將最低有效位移至第二個觸發器的輸入和第一個觸發器的輸出。同樣,通過使時鐘脈沖為高,將所有位一一移位。轉換器處于保持狀態,直到所有位都傳輸到輸出為止。
步驟3:
現在,每個觸發器都包含一位串行數據。同時,所有位都傳送到觸發器輸出,使能總線。這將使轉換器一次發送所有位。
(4)協議格式
UART從起始位“0”開始通信。起始位啟動串行數據的傳輸,終止位結束數據事務。
它還具有奇偶校驗位(偶數或奇數)。偶校驗位由“0”(偶數1)表示,奇校驗位由“1”(偶數1)表示。
(5)傳輸
使用單條傳輸線(TxD)完成數據傳輸。在這里,“0”被認為是空格,而“1”被認為是標記狀態。
發送器一次發送一位。發送一位后,發送下一位。這樣,所有數據位都以預定義的波特率發送到接收器。傳輸每個位會有一定的延遲。例如,要以9600波特率發送一個字節的數據,則每個比特以108微秒的延遲發送。數據添加有奇偶校驗位。因此,需要10位數據才能發送7位數據。注意:在發送時,始終首先發送LSB(最低有效位)。
(6)接收幀
在接收過程中,RxD線(接收器)用于接收數據。
(7)UART接口示例
本示例演示了ESP8266 UART與MAX232的接口。但是,在介紹接口細節之前,讓我分享一下Max232驅動程序的引腳細節。
MAX232 IC由5V電源供電,該電源包括一個電容電壓發生器,用于驅動232電平電壓。它帶有雙發送器,也稱為驅動器(TIN,TOUT)和接收器(RIN和ROUT)。
在這里,我使用了內置UART的ESP8266(32位微控制器)。ESP8266可以使用AT指令通過RS232到TTL電平轉換器(MAX232)進行通信。下圖顯示了ESP8266與PC(個人計算機)的連接。
通過通過PC請求有效的AT命令,WiFi芯片將以確認響應。我不想深入了解ESP8266,在以后的教程中將對此進行解釋。
以下是與PC進行串行通信的步驟。
1.將ESP8266的發射器(TX)連接到RS232的接收器(TX)到TTL電平轉換器(MAX232)和PC的RX。
2.將ESP8266的接收器(RX)連接到PC的TX和TTL轉換器的RX。
(8)UART與USART
USART是UART的基本形式。從技術上講,它們是不同的。但是,兩者的定義相同。這些是微控制器外設,可將并行數據轉換為串行位,反之亦然。
(9)UART的優點與缺點
1.優點
UART的優點是,它支持使用兩條線的全雙工通信。而且,它不需要外部時鐘就可以進行數據通信。它支持使用奇偶校驗位進行錯誤檢查,并且可以輕松更改數據長度。
2.缺點
UART的主要缺點是,它不支持多從機或多主機配置。并且,數據分組的大小被限制為9位。UART不適合在高能耗下進行繁重的串行通信。
(10)應用領域
1.串行調試端口使用UART驅動程序來打印來自外部世界的數據。
2.我們可以使用它來向嵌入式設備發送命令和從嵌入式設備接收命令。
3.在通訊GPS,GSM / GPRS調制解調器,Wi-Fi芯片等與UART操作。
4.在大型機訪問中用于連接不同的計算機。
以上就是英銳恩單片機開發工程師分享的UART通信協議與單片機UART的工作原理。