介紹UART
最早的串行通訊設備可以追溯到電報機,它使用長度可變的脈沖信號進行數據傳輸。要說早期的芯片級UART,不得不提一下DEC,該公司的PDP系列計算機用上了第一個UART。當時的UART的線路占據了整個電路板,體積巨大!可以聯想一下早期計算機的樣子,如下圖。
如今PC機上的串口早已被USB取代,對RS-232(也稱標準串口)有需求的用戶通常使用USB轉串口線,這里常見的有CH340串口驅動程序。在UART通信中,兩個UART直接通信。
發送端的UART將來自控制設備(如CPU)的并行數據轉換為串行數據,以串行方式將其發送到接收端的UART,然后由接收端的UART將串行數據轉換為并行數據以用于接收設備的正常處理。這里只需要兩條線RX/TX即可在兩個UART之間傳輸數據,如下圖所示。
UART傳輸的數據被封裝成數據包。每個數據包包含1個起始位,5~9個數據位(取決于UART的具體設置),一個可選的奇偶校驗位以及1個或2個停止位,如下圖所示。
起始位
UART數據傳輸線通常在不傳輸數據時保持在高電平。為了開始數據傳輸,發送端UART在一個時鐘周期內將傳輸線從高電平拉低到低電平。當接收端UART檢測到高電壓到低電壓轉換時,它開始以波特率的頻率讀取數據位中的每一位數據。
數據
數據位包含正在傳輸的實際數據。如果使用奇偶校驗位,則可以是5位,最多8位。如果不使用奇偶校驗位,則數據幀的長度可以為9位。在大多數情況下,數據首先以低有效位發送。
校驗位
在串口通信中一種簡單的檢錯方式。有四種檢錯方式:
偶校驗
奇校驗
高校驗
低校驗
對于偶和奇校驗的情況,串口會設置校驗位(數據位后面的一位),用一個值確保傳輸的數據有偶個或者奇個邏輯高位。
停止位
發送端UART將數據傳輸線從低電壓驅動到高電壓至少持續兩位數據的時間寬度來表示整個數據包的傳輸已經結束。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容錯性越好,但是數據傳輸率同時也越慢。
波特率
波特率是串口數據的傳輸速度,即Bit/s,常見的波特率比如:9600,19200,38400,57600,115200等。假設目前UART的配置為,1個起始位,8個數據位,0個校驗位,1個停止位,那么9600的波特率,可以計算出每一位數據的時間寬度為:
那么傳輸一個字節(也就是10 bit 數據)需要的時間為 1.04 毫秒。
UART傳輸過程
①發送端UART從數據總線轉換并行數據。
②發送端UART將起始位,奇偶校驗位和停止位添加到數據包中,示意圖如下。
③整個數據包從發送端UART串行發送到接收端UART,接收端UART按照預先配置好的波特率對數據線進行采樣,示意圖如下。
④接收端UART解析接收的數據,丟棄數據包中的起始位,奇偶校驗位和停止位。
⑤接收UART將串行數據轉換回并行數據,并將其傳輸到接收端的數據總線。
本文轉自: STM32嵌入式開發(微信號:c-stm32),作者:acket,轉載此文目的在于傳遞更多信息,版權歸原作者所有。
審核編輯:何安
-
單片機
+關注
關注
6039文章
44575瀏覽量
636395 -
uart
+關注
關注
22文章
1240瀏覽量
101488 -
異步串行
+關注
關注
0文章
7瀏覽量
6639
發布評論請先 登錄
相關推薦
評論