性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

小麥大叔
認(rèn)證:普通會(huì)員
所在專(zhuān)題目錄 查看專(zhuān)題
基于STM32的hello world點(diǎn)燈教程
STM32 使用st-link調(diào)試遇到寫(xiě)保護(hù) Flash Timeout 問(wèn)題的解決思路
天哪!原來(lái)PWM這么簡(jiǎn)單
小小舵機(jī),大大玄機(jī)
UART協(xié)議快速掃盲(圖文并茂+超詳細(xì))
I2C協(xié)議快速掃盲
作者動(dòng)態(tài) 更多
一款輕量級(jí)的開(kāi)源GUI項(xiàng)目——SimpleGUI,可以完美適配單色屏
02-22 09:47
看到這100多個(gè)軟硬件開(kāi)源項(xiàng)目,真是爽爆了
2024-11-30 14:12
推薦一個(gè)高效,可靠,安全的串口通訊開(kāi)源方案
2024-11-27 11:17
推薦一款開(kāi)源hack硬件平臺(tái)工具
2024-11-26 13:58
新手學(xué)STM32的話(huà),先學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?
2024-10-18 15:09

UART協(xié)議快速掃盲(圖文并茂+超詳細(xì))

本文將帶你了解UART協(xié)議。我們將學(xué)習(xí)UART相關(guān)發(fā)展歷史,通訊協(xié)議格式、通訊的優(yōu)缺點(diǎn),以及通訊的具體過(guò)程。如果覺(jué)得不錯(cuò),歡迎關(guān)注、分享、收藏、點(diǎn)贊。希望能幫助到大家,如有錯(cuò)誤敬請(qǐng)指出,謝謝!

 目錄

  • 1 UART發(fā)展歷史
    • 1.1 早期的串行通訊設(shè)備
    • 1.2 早期的芯片級(jí)UART
    • 1.3 現(xiàn)代UART的發(fā)展
  • 2 預(yù)備知識(shí)
  • 3 協(xié)議層
    • 起始位
    • 數(shù)據(jù)
    • 校驗(yàn)位
    • 停止位
    • 波特率
  • 4 傳輸過(guò)程
  • 5 物理層
  • 6 優(yōu)缺點(diǎn)

1 UART發(fā)展歷史

1.1 早期的串行通訊設(shè)備

早期的電報(bào)機(jī)器使用長(zhǎng)度可變的脈沖信號(hào)進(jìn)行數(shù)據(jù)傳輸,比如摩斯電碼;

摩斯電碼

后來(lái)電傳打印機(jī)(teleprinters )普遍使用5、6、7或8個(gè)數(shù)據(jù)位來(lái)表示各種字符編碼,最終成為計(jì)算機(jī)外圍設(shè)備。電傳打字機(jī)( teletypewriter 簡(jiǎn)稱(chēng) tty)成為小型計(jì)算機(jī)十分出色的通用I/O設(shè)備。

Teletypewritter

由于歷史的發(fā)展原因,早期在Unix終端是一個(gè)名字為ASR33的電傳打字機(jī),而電傳打字機(jī)的英文單詞為Teletype(或Teletypewritter),縮寫(xiě)為tty。因此,終端設(shè)備也被稱(chēng)為tty設(shè)備。這就是TTY這個(gè)名稱(chēng)的來(lái)源。

1.2 早期的芯片級(jí)UART

DEC(Digital Equipment Corporation)公司的Gordon Bell 為該公司的PDP系列計(jì)算機(jī)設(shè)計(jì)了第一個(gè)UART,不過(guò)體積龐大,UART的線(xiàn)路占據(jù)了整個(gè)電路板;

后來(lái)DEC將串行線(xiàn)路單元的設(shè)計(jì)濃縮為早期的UART單芯片,以方便自己使用。

DEC公司Logo

DEC是美國(guó)一家計(jì)算機(jī)公司;

西部數(shù)據(jù)(Western Digital)公司在1971年左右將其開(kāi)發(fā)為第一個(gè)廣泛可用的UART單芯片 WD1402A。這是中型集成電路的早期產(chǎn)品。

Western Digital是美國(guó)計(jì)算機(jī)硬盤(pán)驅(qū)動(dòng)器制造商和數(shù)據(jù)存儲(chǔ)公司。

1.3 現(xiàn)代UART的發(fā)展

2000年代開(kāi)始,大多數(shù)IBM或者相關(guān)的計(jì)算機(jī)都刪除了其外部RS232的COM端口,將其替換為帶寬性能更加出色的USB端口;

早期帶RS232的PC

對(duì)于仍然需要RS-232串行COM端口的用戶(hù),現(xiàn)在通常使用外部USB轉(zhuǎn)UART轉(zhuǎn)換器,常見(jiàn)的有CH340,Silicon Labs 210x的驅(qū)動(dòng)程序,現(xiàn)在很多處理器和芯片都內(nèi)置了UART。

2 預(yù)備知識(shí)

通用異步收發(fā)傳輸器Universal Asynchronous Receiver/Transmitter,通常稱(chēng)為UART),在UART通信中,兩個(gè)UART直接通信。

發(fā)送端的UART將來(lái)自控制設(shè)備(如CPU)的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),以串行方式將其發(fā)送到接收端的UART,然后由接收端的UART將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)以用于接收設(shè)備的正常處理。

這里只需要兩條線(xiàn)RX/TX即可在兩個(gè)UART之間傳輸數(shù)據(jù)。具體如下圖所示;

3 協(xié)議層

UART傳輸?shù)臄?shù)據(jù)被封裝成數(shù)據(jù)包。每個(gè)數(shù)據(jù)包包含1個(gè)起始位,5~9個(gè)數(shù)據(jù)位(取決于UART的具體設(shè)置),一個(gè)可選的奇偶校驗(yàn)位以及1個(gè)或2個(gè)停止位,具體如下圖所示;

在這里插入圖片描述

起始位

UART數(shù)據(jù)傳輸線(xiàn)通常在不傳輸數(shù)據(jù)時(shí)保持在高電平。

為了開(kāi)始數(shù)據(jù)傳輸,發(fā)送端UART在一個(gè)時(shí)鐘周期內(nèi)將傳輸線(xiàn)從高電平拉低到低電平

當(dāng)接收端UART檢測(cè)到高電壓到低電壓轉(zhuǎn)換時(shí),它開(kāi)始以波特率的頻率讀取數(shù)據(jù)位中的每一位數(shù)據(jù)。

數(shù)據(jù)

數(shù)據(jù)位包含正在傳輸?shù)?strong>實(shí)際數(shù)據(jù)。如果使用奇偶校驗(yàn)位,則可以是5位,最多8位。如果不使用奇偶校驗(yàn)位,則數(shù)據(jù)幀的長(zhǎng)度可以為9位。

在大多數(shù)情況下,數(shù)據(jù)首先以低有效位發(fā)送。

校驗(yàn)位

在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。

有四種檢錯(cuò)方式:偶校驗(yàn)、奇校驗(yàn)、高校驗(yàn)低校驗(yàn)。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。

對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。

舉個(gè)例子,如果數(shù)據(jù)是011,則滿(mǎn)足;

偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。

奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯高位。

具體如下圖所示;

高位和低位不是真正的檢查數(shù)據(jù),而是強(qiáng)行將校驗(yàn)位設(shè)置為邏輯高或者邏輯低。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

停止位

發(fā)送端UART將數(shù)據(jù)傳輸線(xiàn)從低電壓驅(qū)動(dòng)到高電壓至少持續(xù)兩位數(shù)據(jù)的時(shí)間寬度來(lái)表示整個(gè)數(shù)據(jù)包的傳輸已經(jīng)結(jié)束。

由于數(shù)據(jù)是在傳輸線(xiàn)上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容錯(cuò)性越好,但是數(shù)據(jù)傳輸率同時(shí)也越慢。

波特率

波特率是串口數(shù)據(jù)的傳輸速度,即Bit/s,常見(jiàn)的波特率有:9600,19200,38400,57600,115200,當(dāng)然還有很多波特率,不再一一給出;

假設(shè)目前UART的配置為,1個(gè)起始位,8個(gè)數(shù)據(jù)位,0個(gè)校驗(yàn)位,1個(gè)停止位,那么9600的波特率,可以計(jì)算出每一位數(shù)據(jù)的時(shí)間寬度為:

那么傳輸一個(gè)字節(jié)(也就是10 bit 數(shù)據(jù))需要的時(shí)間為 1.04 毫秒。

下面用串口抓取了UART的TX上的信號(hào),其中一位數(shù)據(jù)的時(shí)間寬度為26微秒,具體如下圖所示;

則可以簡(jiǎn)單計(jì)算得到;

因此波特率大概為 38400;

下表是各個(gè)波特率下數(shù)據(jù)位時(shí)間寬度;

4 傳輸過(guò)程

發(fā)送端UART從數(shù)據(jù)總線(xiàn)轉(zhuǎn)換并行數(shù)據(jù):

發(fā)送端UART將起始位,奇偶校驗(yàn)位停止位添加到數(shù)據(jù)包中:

整個(gè)數(shù)據(jù)包從發(fā)送端UART串行發(fā)送到接收端UART;接收端UART按照預(yù)先配置好的波特率對(duì)數(shù)據(jù)線(xiàn)進(jìn)行采樣:

接收端UART解析接收的數(shù)據(jù),丟棄數(shù)據(jù)包中的起始位,奇偶校驗(yàn)位和停止位:

接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線(xiàn):

5 物理層

UART、RS232、RS485在串口通信中,主要區(qū)別是電平的不同,其中UART通常使用TTL電平,下面介紹這幾個(gè)存在的差異;

TTL

TTL全名是晶體管-晶體管邏輯集成電路(Transistor-Transistor Logic)

  • 輸入高電平最小2V,輸出高電平最小2.4V,典型值3.4V;

  • 輸入低電平最大0.8V,輸出低電平最大0.4V,典型值0.2V。

RS232

RS232 邏輯1電平(MARK)=-3V~-15V,邏輯0電平(SPACE)=+3~+15V;

同樣的,對(duì)于傳輸數(shù)據(jù)0x55,即二進(jìn)制的01010101,RS232和TTL的區(qū)別如下;

RS485

RS485是差分信號(hào)進(jìn)行串行傳輸;

  • 邏輯1以?xún)删€(xiàn)間的電壓差為+(2~6)V表示;
  • 邏輯"0"以?xún)删€(xiàn)間的電壓差為-(2~6)V表示;

在工業(yè)通信中,使用RS485比較多,因?yàn)镽S485是差分信號(hào),可以抑制共模干擾,因此在惡劣的環(huán)境中擁有很好的抗干擾性,比較穩(wěn)定;

6 優(yōu)缺點(diǎn)

沒(méi)有任何通信協(xié)議是完美的,以下是UART的一些利弊,可幫助您確定它們是否適合您的項(xiàng)目需求:

優(yōu)點(diǎn)

  • 通信只需要兩條數(shù)據(jù)線(xiàn);
  • 無(wú)需時(shí)鐘信號(hào);
  • 有奇偶校驗(yàn)位,方便通信的差錯(cuò)檢查;
  • 只需要接收端和發(fā)送端設(shè)置好數(shù)據(jù)包結(jié)構(gòu),即可穩(wěn)定通信;

缺點(diǎn)

  • 數(shù)據(jù)幀最大支持9位數(shù)據(jù);
  • 不支持多主機(jī)或多從機(jī)的主從系統(tǒng);

7 總結(jié)

本文主要介紹UART的入門(mén)基礎(chǔ)知識(shí),從UART的發(fā)展歷史,通訊協(xié)議層進(jìn)行了簡(jiǎn)單介紹;作者能力有限,難免存在錯(cuò)誤和紕漏,請(qǐng)大佬不吝賜教。


聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 3
收藏 6
關(guān)注 145
成為作者 賺取收益
全部留言
0/200
  • 天賜時(shí)間 2020-12-08 09:08
    收益匪淺!
    回復(fù) 1條回復(fù)
  • 小麥大叔 2020-12-07 21:46
    講的真好!
    回復(fù)