網(wǎng)站怎么做導(dǎo)航條南寧seo推廣服務(wù)
一、定義
UART(Universal Asynchronous Receiver/Transmitter)是一種廣泛使用的串行通信協(xié)議,用于在設(shè)備間通過異步方式傳輸數(shù)據(jù)。它無需共享時鐘信號,而是依賴雙方預(yù)先約定的參數(shù)(如波特率)完成通信。
功能和特點
基本的 UART 系統(tǒng)只需三個信號即可提供穩(wěn)健的中速全雙工通信:Tx(傳輸?shù)拇袛?shù)據(jù))、Rx(接收的串行數(shù)據(jù))和接地。
與SPI和I2C等其他協(xié)議相比,不需要專門的clock信號來同步數(shù)據(jù)傳輸,這是由其獨特的通信機制決定的。
異步通信方式:發(fā)送方在發(fā)送數(shù)據(jù)時,會根據(jù)預(yù)設(shè)的波特率(即每秒傳輸?shù)奈粩?shù))來發(fā)送數(shù)據(jù),而接收方也根據(jù)相同的波特率來接收并解析數(shù)據(jù)。這種機制使得UART能夠在沒有外部時鐘信號的情況下進行有效的數(shù)據(jù)傳輸
內(nèi)部時鐘控制:雖然UART不需要外部的clock信號,但它仍然依賴于內(nèi)部的時鐘信號來控制數(shù)據(jù)的發(fā)送和接收。這些內(nèi)部時鐘信號由UART硬件模塊自身提供,用于生成發(fā)送和接收數(shù)據(jù)的節(jié)拍。然而,這些內(nèi)部時鐘信號并不需要像SPI或I2C那樣通過外部線路傳輸?shù)狡渌O(shè)備,而是只在本地設(shè)備內(nèi)部起作用。
二、工作原理
將要傳輸數(shù)據(jù)的 UART 從數(shù)據(jù)總線接收數(shù)據(jù)。數(shù)據(jù)總線用于通過 CPU、內(nèi)存或微控制器等其他設(shè)備將數(shù)據(jù)發(fā)送到 UART。數(shù)據(jù)以并行形式從數(shù)據(jù)總線傳輸?shù)絺鬏?UART。發(fā)送 UART 從數(shù)據(jù)總線獲取并行數(shù)據(jù)后,添加一個起始位、一個奇偶校驗位和一個停止位,從而創(chuàng)建數(shù)據(jù)包。
接下來,數(shù)據(jù)包在 Tx 引腳上逐位串行輸出。接收 UART 在其 Rx 引腳上逐位讀取數(shù)據(jù)包。然后,接收 UART 將數(shù)據(jù)轉(zhuǎn)換回并行形式,并刪除起始位、奇偶校驗位和停止位。最后,接收 UART 將數(shù)據(jù)包并行傳輸?shù)浇邮斩说臄?shù)據(jù)總線:
發(fā)送 UART 不是 clock 信號,而是將 start 和 stop 位添加到正在傳輸?shù)臄?shù)據(jù)包中。這些位定義了數(shù)據(jù)包的開頭和結(jié)尾,因此接收 UART 知道何時開始讀取這些位。
當(dāng)接收 UART 檢測到起始位時,它開始以稱為波特率的特定頻率讀取輸入位。波特率是衡量數(shù)據(jù)傳輸速度的指標,以每秒位數(shù) (bps) 表示。 兩個 UART 必須以大致相同的波特率運行。在位的時序相差太大之前,發(fā)送和接收 UART 之間的波特率只能相差約 10%,超過此值,位的時序就會脫節(jié)。
兩個 UART 還必須配置為發(fā)送和接收相同的數(shù)據(jù)包結(jié)構(gòu)。
關(guān)于UART必須了解的幾點
波特率
特率表示每秒傳輸?shù)姆枖?shù)(單位:bps,bits per second),決定了數(shù)據(jù)傳輸?shù)乃俾省?/p>
常見值:9600、19200、38400、57600、115200 bps等
重要性:發(fā)送端和接收端的波特率必須一致(波特率誤差需控制在允許范圍內(nèi))。
常見問題:波特率不匹配導(dǎo)致數(shù)據(jù)亂碼;高頻時鐘誤差積累引發(fā)通信失敗。
三、協(xié)議幀
在UART中,傳輸模式為數(shù)據(jù)包形式。連接發(fā)送器和接收器的機制包括串行數(shù)據(jù)包的創(chuàng)建和物理硬件線路的控制。數(shù)據(jù)包由起始位、數(shù)據(jù)幀、奇偶校驗位和停止位組成。
3.1 起始位
起始位是單字節(jié) UART 傳輸?shù)?first bit。它指示數(shù)據(jù)行正在離開其空閑狀態(tài)。
當(dāng)不傳輸數(shù)據(jù)時,UART數(shù)據(jù)傳輸線通常保持高電壓電平。若要開始數(shù)據(jù)傳輸,發(fā)送UART會將傳輸線從高電平拉到低電平并保持1個時鐘周期。當(dāng)接收UART檢測到高到低電壓躍遷時,便開始以波特率對應(yīng)的頻率讀取數(shù)據(jù)幀中的位。