介紹UART
最早的串行通訊設(shè)備可以追溯到電報機(jī),它使用長度可變的脈沖信號進(jìn)行數(shù)據(jù)傳輸。要說早期的芯片級UART,不得不提一下DEC,該公司的PDP系列計算機(jī)用上了第一個UART。當(dāng)時的UART的線路占據(jù)了整個電路板,體積巨大!可以聯(lián)想一下早期計算機(jī)的樣子,如下圖。
如今PC機(jī)上的串口早已被USB取代,對RS-232(也稱標(biāo)準(zhǔn)串口)有需求的用戶通常使用USB轉(zhuǎn)串口線,這里常見的有CH340串口驅(qū)動程序。在UART通信中,兩個UART直接通信。
發(fā)送端的UART將來自控制設(shè)備(如CPU)的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),以串行方式將其發(fā)送到接收端的UART,然后由接收端的UART將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)以用于接收設(shè)備的正常處理。這里只需要兩條線RX/TX即可在兩個UART之間傳輸數(shù)據(jù),如下圖所示。
UART傳輸?shù)臄?shù)據(jù)被封裝成數(shù)據(jù)包。每個數(shù)據(jù)包包含1個起始位,5~9個數(shù)據(jù)位(取決于UART的具體設(shè)置),一個可選的奇偶校驗位以及1個或2個停止位,如下圖所示。
起始位
UART數(shù)據(jù)傳輸線通常在不傳輸數(shù)據(jù)時保持在高電平。為了開始數(shù)據(jù)傳輸,發(fā)送端UART在一個時鐘周期內(nèi)將傳輸線從高電平拉低到低電平。當(dāng)接收端UART檢測到高電壓到低電壓轉(zhuǎn)換時,它開始以波特率的頻率讀取數(shù)據(jù)位中的每一位數(shù)據(jù)。
數(shù)據(jù)
數(shù)據(jù)位包含正在傳輸?shù)膶嶋H數(shù)據(jù)。如果使用奇偶校驗位,則可以是5位,最多8位。如果不使用奇偶校驗位,則數(shù)據(jù)幀的長度可以為9位。在大多數(shù)情況下,數(shù)據(jù)首先以低有效位發(fā)送。
校驗位
在串口通信中一種簡單的檢錯方式。有四種檢錯方式:
偶校驗
奇校驗
高校驗
低校驗
對于偶和奇校驗的情況,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。
停止位
發(fā)送端UART將數(shù)據(jù)傳輸線從低電壓驅(qū)動到高電壓至少持續(xù)兩位數(shù)據(jù)的時間寬度來表示整個數(shù)據(jù)包的傳輸已經(jīng)結(jié)束。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機(jī)校正時鐘同步的機(jī)會。適用于停止位的位數(shù)越多,不同時鐘同步的容錯性越好,但是數(shù)據(jù)傳輸率同時也越慢。
波特率
波特率是串口數(shù)據(jù)的傳輸速度,即Bit/s,常見的波特率比如:9600,19200,38400,57600,115200等。假設(shè)目前UART的配置為,1個起始位,8個數(shù)據(jù)位,0個校驗位,1個停止位,那么9600的波特率,可以計算出每一位數(shù)據(jù)的時間寬度為:
那么傳輸一個字節(jié)(也就是10 bit 數(shù)據(jù))需要的時間為 1.04 毫秒。
UART傳輸過程
①發(fā)送端UART從數(shù)據(jù)總線轉(zhuǎn)換并行數(shù)據(jù)。
②發(fā)送端UART將起始位,奇偶校驗位和停止位添加到數(shù)據(jù)包中,示意圖如下。
③整個數(shù)據(jù)包從發(fā)送端UART串行發(fā)送到接收端UART,接收端UART按照預(yù)先配置好的波特率對數(shù)據(jù)線進(jìn)行采樣,示意圖如下。
④接收端UART解析接收的數(shù)據(jù),丟棄數(shù)據(jù)包中的起始位,奇偶校驗位和停止位。
⑤接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線。
本文轉(zhuǎn)自: STM32嵌入式開發(fā)(微信號:c-stm32),作者:acket,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。
審核編輯:何安
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44992瀏覽量
650630 -
uart
+關(guān)注
關(guān)注
22文章
1276瀏覽量
103985 -
異步串行
+關(guān)注
關(guān)注
0文章
7瀏覽量
6719
發(fā)布評論請先 登錄
在EZ串行的BLE“無響應(yīng)寫入”中, CAN一次通信中接收的最大數(shù)據(jù)包大小是多少?
藍(lán)牙數(shù)據(jù)通道空口包(數(shù)據(jù)包)
更改最大數(shù)據(jù)包大小時無法識別USB設(shè)備如何解決?
為UART、MCXA142實現(xiàn)ISP通信的主機(jī)端,發(fā)送Ping數(shù)據(jù)包并收到預(yù)期的響應(yīng),發(fā)送和接收數(shù)據(jù)包的典型順序是什么?
接收方數(shù)據(jù)解封裝解析

I2C總線數(shù)據(jù)包結(jié)構(gòu)詳解
華納云如何解讀WinMTR的丟包率數(shù)據(jù)?
mtu配置步驟詳解 mtu與數(shù)據(jù)包丟失的關(guān)系
請問TPA3116D2EVM RevC Gerbers這個數(shù)據(jù)包的文件用什么打開?
UART通信協(xié)議介紹和數(shù)據(jù)傳輸工作流程

華納云:服務(wù)器平均響應(yīng)時間和數(shù)據(jù)包大小之間的影響
艾體寶干貨 OIDA之四:掌握數(shù)據(jù)包分析-分析的藝術(shù)

評論