UART(Universal Asynchronous Receiver/Transmitter)是一種異步收發傳輸器,是設備間進行異步通信的關鍵模塊。該設備通過信號線將需要發送的數據以二進制的形式一位一位地發送出去,在傳輸的過程中高電平表示發送的數據為“1”,低電平表示數據為“0”。異步通信的發送端和接收端可以由各自的時鐘來控制數據的發送和接收,這兩個時鐘源彼此獨立,互不同步。
UART具有雙向通信能力,可以實現全雙工傳輸和接收。全雙工數據通信允許數據同時在兩個方向上傳輸,這提高了數據傳輸的效率。此外,UART的串行數據傳輸不需要使用時鐘信號來同步傳輸,而是依賴于發送設備和接收設備之間預定義的配置。
UART通信過程需要設置波特率、數據長度、開始/停止位等參數。波特率決定了發送數據的速度,而數據長度和開始/停止位則用于確保數據的正確傳輸和接收。
在UART通信中,兩個UART直接相互通信。發送UART將控制設備(如CPU)的并行數據轉換為串行形式,以串行方式將其發送到接收UART。只需要兩條線即可在兩個UART之間傳輸數據,數據從發送UART的Tx引腳流到接收UART的Rx引腳。
UART屬于異步通訊,這意味著沒有時鐘信號,取而代之的是在數據包中添加開始和停止位。這些位定義了數據包的開始和結束,因此接收UART知道何時讀取這些數據。
當接收UART檢測到起始位時,它將以特定波特率的頻率讀取。波特率是數據傳輸速度的度量,以每秒比特數(bps)表示。兩個UART必須以大約相同的波特率工作,發送和接收UART之間的波特率只能相差約10%。
UART串口通信實驗
數據位:8bit,停止位1位,無校驗位,波特率115200bps
uart_rxd:數據線
clk_cont:循環時鐘計數器0-433
115200bps,1bit耗時1/115200s=8680.5ns
系統時鐘50MHZ,1時鐘周期20ns
8680.5/20=434.025,
可認為每434個時鐘周期發送1bit位數據
rx_cnt:接收數據位數計數器。Clk_cnt每計數434,rx_cnt+1.記錄接收了多少位(包括起始位和結束位)。為0是起始位,為9是結束位。
start_flag:檢測到uart_rxd下降沿拉高
rx_flag:檢測到start_flag拉高,它也拉高。檢測到停止位拉低。
uart_data(寄存器):在rx_cnt為1時將數據bit0存入寄存器第0位… …
uart_done:傳輸完成標志位,rx_cnt為9時拉高
發送UART從數據總線獲取并行數據后,它會添加一個起始位,一個奇偶校驗位和一個停止位來組成數據包并從Tx引腳上逐位串行輸出,接收UART在其Rx引腳上逐位讀取數據包。
UART數據包含有1個起始位,5至9個數據位(取決于UART),一個可選的奇偶校驗位以及1個或2個停止位:
在實際應用中,UART廣泛應用于各種設備和系統中,以實現數據的有效傳輸和通信。例如,在計算機硬件中,UART用于連接計算機的內部和外部設備,如調制解調器、打印機等。在嵌入式系統中,UART也扮演著重要角色,用于實現設備之間的數據交換和通信。
審核編輯:黃飛
-
計數器
+關注
關注
32文章
2254瀏覽量
94372 -
數據通信
+關注
關注
2文章
430瀏覽量
33737 -
異步通信
+關注
關注
1文章
57瀏覽量
10118 -
時鐘信號
+關注
關注
4文章
445瀏覽量
28512 -
并行數據
+關注
關注
0文章
11瀏覽量
7560
發布評論請先 登錄
相關推薦
評論