0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UART通信協(xié)議的工作原理

jf_78858299 ? 來(lái)源:柴火創(chuàng)客空間 ? 作者:柴火菌 ? 2023-03-23 14:24 ? 次閱讀

什么是UART?

通用異步接收器/發(fā)射器,通常稱為UART,是一種串行,異步,全雙工通信協(xié)議,廣泛用于嵌入式領(lǐng)域。

UART連接

UART通道有兩條數(shù)據(jù)線。每個(gè)設(shè)備上都有一個(gè) RX 引腳和一個(gè) TX 引腳(RX 用于接收,TX 用于發(fā)送)。每個(gè)設(shè)備的 RX 引腳連接到另一個(gè)設(shè)備的 TX 引腳。請(qǐng)注意,沒有共享時(shí)鐘線!這是通用異步接收器發(fā)送方的“異步”方面。

圖片

作為一種異步串行通信協(xié)議,UART的工作原理是逐位傳輸傳輸數(shù)據(jù)的每個(gè)二進(jìn)制位。在UART通信協(xié)議中,當(dāng)信號(hào)線上的狀態(tài)為高電平時(shí),表示“1”,當(dāng)信號(hào)線上的狀態(tài)為低電平時(shí),表示“0”。

例如,當(dāng)使用UART通信協(xié)議傳輸一個(gè)字節(jié)的數(shù)據(jù)時(shí),在信號(hào)線上產(chǎn)生八種高電平和低電平組合。

串行通信是指利用一條傳輸線逐位順序傳輸數(shù)據(jù),或者兩條信號(hào)線可以形成全雙工通信,如RS232。特點(diǎn)是通信線路簡(jiǎn)單,使用簡(jiǎn)單的電纜即可實(shí)現(xiàn)通信,成本降低,適合遠(yuǎn)距離通信的應(yīng)用,但傳輸速度慢。

異步通信以一個(gè)字符作為傳輸單元。通信中兩個(gè)字符之間的時(shí)間間隔不是固定的,但同一字符中兩個(gè)相鄰位之間的時(shí)間間隔是固定的。一般來(lái)說(shuō),兩個(gè)UART設(shè)備之間的通信不需要時(shí)鐘線。此時(shí),需要在兩個(gè)UART設(shè)備上指定相同的傳輸速率,以及空閑位,起始位,奇偶校驗(yàn)位和結(jié)束位,即遵循相同的協(xié)議。

數(shù)據(jù)傳輸速率以波特率表示,即每秒傳輸?shù)奈粩?shù)。例如,如果數(shù)據(jù)傳輸速率為120個(gè)字符/秒,每個(gè)字符為10位(1個(gè)起始位,7個(gè)數(shù)據(jù)位,1個(gè)校驗(yàn)位,1個(gè)停止位),則其傳輸?shù)牟ㄌ芈蕿?0×120 = 1200個(gè)字符/秒= 1200波特。

數(shù)據(jù)通信格式

圖片

起始位

圖片

每次通信開始時(shí),發(fā)送方都會(huì)發(fā)送一個(gè)邏輯“0”信號(hào)(VOL),指示傳輸字符的開始。由于總線在空閑時(shí)處于高電平,因此在開始通信時(shí)首先發(fā)送與空閑狀態(tài)明顯不同的信號(hào),即VOL。

數(shù)據(jù)位

圖片

起始位之后是我們要傳輸?shù)臄?shù)據(jù)。數(shù)據(jù)位可以是 5、6、7、8、9 位等。形成一個(gè)字符(通常為 8 位)。如 ASCII 碼(7 位)和擴(kuò)展 BCD 碼(8 位)。最低位先發(fā)送,最高位最后發(fā)送。使用低電平表示“0”,使用高電平表示“1”以完成數(shù)據(jù)位的傳輸。

奇偶校驗(yàn)位

圖片

將此位添加到數(shù)據(jù)位后,“1”位的位數(shù)應(yīng)為偶數(shù)(偶數(shù)奇偶校驗(yàn))或奇數(shù)(奇偶奇偶校驗(yàn)),以驗(yàn)證數(shù)據(jù)傳輸?shù)恼_性。校驗(yàn)位其實(shí)就是調(diào)整號(hào),串口校驗(yàn)分為幾種方式:

無(wú)奇偶校驗(yàn)

奇偶校驗(yàn):如果數(shù)據(jù)位中“1”的數(shù)字是偶數(shù),則奇偶校驗(yàn)位為“1”,如果“1”的數(shù)字為奇數(shù),則奇偶校驗(yàn)位為“0”。

偶數(shù)奇偶校驗(yàn):如果數(shù)據(jù)中“1”的數(shù)字是偶數(shù),則奇偶校驗(yàn)位為“0”,如果是奇數(shù),則奇偶校驗(yàn)位為“1”。

標(biāo)記平價(jià):校驗(yàn)位始終為 1(不常用)。

平價(jià):奇偶校驗(yàn)位始終為 0(不常用)。

停止位

圖片

它是字符數(shù)據(jù)的結(jié)束標(biāo)記。它可以是 1 位、1.5 位或 2 位 VOH。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每個(gè)設(shè)備都有自己的時(shí)鐘,因此在通信中兩個(gè)設(shè)備之間很可能會(huì)出現(xiàn)小的不同步。因此,停止位不僅指示傳輸結(jié)束,而且還為計(jì)算機(jī)提供了校正時(shí)鐘的機(jī)會(huì)。停止位越多,數(shù)據(jù)傳輸越穩(wěn)定,但數(shù)據(jù)傳輸速度越慢。

協(xié)議層

在協(xié)議層中,指定了數(shù)據(jù)包的內(nèi)容,由起始位、主數(shù)據(jù)、校驗(yàn)位和停止位組成。雙方的數(shù)據(jù)包格式必須一致,才能正常發(fā)送和接收數(shù)據(jù)。

波特率

由于異步通信中沒有時(shí)鐘信號(hào),因此兩個(gè)通信設(shè)備需要就波特率達(dá)成一致。常見的有4800、9600、115200等。

圖片

通信的開始和停止信號(hào):串行通信的數(shù)據(jù)包從開始信號(hào)開始,以停止信號(hào)結(jié)束。數(shù)據(jù)包的開始信號(hào)由邏輯0的數(shù)據(jù)位表示,數(shù)據(jù)包的停止信號(hào)可以用邏輯0的5.1、1、5.2或1個(gè)數(shù)據(jù)位表示,只要雙方同意即可。

數(shù)據(jù)檢查:在有效數(shù)據(jù)之后,有一個(gè)可選的數(shù)據(jù)校驗(yàn)位。由于數(shù)據(jù)通信相對(duì)容易受到外界干擾,傳輸數(shù)據(jù)偏斜,可以在傳輸過程中增加校驗(yàn)位來(lái)解決這個(gè)問題。檢查方法包括奇數(shù)檢查、偶數(shù)檢查、0 檢查(空格)、1 檢查(標(biāo)記)和無(wú)奇偶校驗(yàn)。

奇偶校驗(yàn)要求有效數(shù)據(jù)和奇偶校驗(yàn)位中的“1”數(shù)為奇數(shù)。

例如,8 01101001 位有效數(shù)據(jù),總共有 4 個(gè)“1”。如果校驗(yàn)位為“1”,則最后傳輸?shù)臄?shù)據(jù)將是 8 位有效數(shù)據(jù)加上 1 位校驗(yàn)位,總計(jì) 9 位。偶數(shù)奇偶校驗(yàn)和奇數(shù)奇偶校驗(yàn)要求正好相反。幀數(shù)據(jù)和奇偶校驗(yàn)位中“1”的數(shù)目要求為偶數(shù),如數(shù)據(jù)幀:11001010。此時(shí),數(shù)據(jù)框中“1”的數(shù)量為4,因此偶數(shù)奇偶校驗(yàn)位為“0”。0 check 表示無(wú)論有效數(shù)據(jù)的內(nèi)容是什么,校驗(yàn)位始終為“0”,1 check 表示校驗(yàn)位始終為“1”。

錯(cuò)誤狀態(tài)

以下是使用 UART 時(shí)可能會(huì)遇到的一些錯(cuò)誤:

成幀錯(cuò)誤

UART狀態(tài)和控制寄存器將指示各種狀態(tài)條件,包括與傳輸相關(guān)的錯(cuò)誤狀態(tài)。了解此協(xié)議可以更輕松地理解錯(cuò)誤狀態(tài)。它們包括成幀錯(cuò)誤,當(dāng)接收器在預(yù)期的位時(shí)間看不到停止位時(shí)會(huì)發(fā)生。如果數(shù)據(jù)線在預(yù)期停止位時(shí)未處于預(yù)期的高電平狀態(tài)(取決于設(shè)置 UART 的數(shù)據(jù)和奇偶校驗(yàn)位的數(shù)量),則 UART 將發(fā)出成幀錯(cuò)誤的信號(hào)。

奇偶校驗(yàn)錯(cuò)誤

僅當(dāng) UART 處于奇偶校驗(yàn)?zāi)J綍r(shí),才會(huì)引發(fā)奇偶校驗(yàn)錯(cuò)誤。在奇偶校驗(yàn)?zāi)J较?,發(fā)送一個(gè)額外的位來(lái)保存所有傳輸?shù)臄?shù)據(jù)位的奇偶校驗(yàn)(偶數(shù)或奇數(shù))。如果數(shù)據(jù)位出錯(cuò)(1 表示 0 或 0 表示 1),則奇偶校驗(yàn)位將出錯(cuò),并且將引發(fā)指定錯(cuò)誤的錯(cuò)誤。

溢出錯(cuò)誤

當(dāng)接收方在下一個(gè)字符到達(dá)之前不處理(從輸入緩沖區(qū)中刪除字符)時(shí),會(huì)發(fā)生溢出錯(cuò)誤。

中斷條件

中斷條件不一定是錯(cuò)誤。當(dāng)接收器輸入處于邏輯低電平狀態(tài)超過一定持續(xù)時(shí)間(通常超過一個(gè)字符時(shí)間)時(shí),就會(huì)發(fā)生這種情況。對(duì)于接收者來(lái)說(shuō),它看起來(lái)像一個(gè)帶有成幀錯(cuò)誤的全0字符。在 python 代碼中,您可以看到重置是通過發(fā)送中斷觸發(fā)的。這會(huì)將數(shù)據(jù)線拉低足夠長(zhǎng)的時(shí)間,以便MCLR被拉低并復(fù)位電路板。

以下是UART,I2c和SPI之間的區(qū)別

圖片

您可能想知道,這三種通信中哪一種是最好的?是UART,I2C還是SPI?

沒有“最佳”的通信外圍設(shè)備,每個(gè)通信外設(shè)都有自己的優(yōu)點(diǎn)和缺點(diǎn)。因此,用戶應(yīng)選擇最適合其項(xiàng)目的通信外設(shè)。例如,如果您想要最快的通信外設(shè),SPI 將是理想的選擇。另一方面,如果用戶想要連接多個(gè)設(shè)備而又不太復(fù)雜,I2C 將是理想的選擇,因?yàn)樗疃嗫梢赃B接 127 臺(tái)設(shè)備并且易于管理。

很多MUC控制器都支持UART協(xié)議,SPI協(xié)議和I2C協(xié)議,比如Seeeduino XIAO 控制器,用戶可以根據(jù)自己的需求選擇不同的接口設(shè)備。

圖片

寫在最后

不同通信協(xié)議都有其優(yōu)點(diǎn)和缺點(diǎn),根據(jù)應(yīng)用場(chǎng)景合理選擇即可,這樣我們的MUC控制器就可以控制各種各樣的硬件設(shè)備或傳感器設(shè)備了!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 發(fā)射器
    +關(guān)注

    關(guān)注

    6

    文章

    834

    瀏覽量

    53165
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1673

    瀏覽量

    130959
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1199

    瀏覽量

    100829
  • 異步接收器
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5637
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    UART通信協(xié)議

    通信協(xié)議,工作原理是將傳輸數(shù)據(jù)的每個(gè)字符以串行方式一位接一位的傳輸。如下圖:其中每一位(bit)的意義如下:起始位:先發(fā)出一個(gè)邏輯“0”的信號(hào),表示傳輸字符的開始。數(shù)據(jù)位:緊跟起始位之后。數(shù)據(jù)位的個(gè)數(shù)可以
    發(fā)表于 01-31 10:43

    UART通信協(xié)議是什么

      UART作為異步串口通信協(xié)議的一種,工作原理是將傳輸數(shù)據(jù)的每一個(gè)字符一位一位地傳輸。其中每一位(bit)的意義如下:  起始位:先發(fā)出一個(gè)邏輯“0”的信號(hào),表示傳輸字符開始?! ?shù)據(jù)位:緊接著
    發(fā)表于 02-23 16:54

    怎樣使用STM32CubeMX來(lái)配置USART串口通信協(xié)議

    UART串口通信協(xié)議工作原理是什么?怎樣使用STM32CubeMX來(lái)配置USART串口通信協(xié)議呢?
    發(fā)表于 12-06 06:53

    UART串口通信協(xié)議的相關(guān)資料分享

    #今天也是咸魚的一天~UART是一個(gè)很基礎(chǔ)的串口通信協(xié)議,有人打趣說(shuō)只要有單片機(jī)的地方,就一定有uart。這話不假,不僅很多模塊和單片機(jī)的通信ua
    發(fā)表于 01-18 09:42

    UART通信協(xié)議的相關(guān)資料推薦

    一、前言1、簡(jiǎn)介  寫的這篇博客,是為了簡(jiǎn)單講解一下UART通信協(xié)議,以及UART能夠?qū)崿F(xiàn)的一些功能,還有有關(guān)使用STM32CubeMX來(lái)配置芯片的一些操作,在后面我會(huì)以我使用的STM32F429
    發(fā)表于 01-25 06:40

    串口通信協(xié)議的相關(guān)資料分享

    目錄一、串口通信協(xié)議1、UART簡(jiǎn)介2、 UART通信協(xié)議(1)起始位(2)數(shù)據(jù)幀(3)奇偶校驗(yàn)位(4)停止位(5)下個(gè)起始位(6)波特率二、STM32的USART串口
    發(fā)表于 02-22 07:16

    KWP2000通信協(xié)議與讀碼器工作原理

    KWP2000通信協(xié)議與讀碼器工作原理
    發(fā)表于 12-17 20:48 ?12次下載

    1-Wire通信協(xié)議工作原理及優(yōu)勢(shì)介紹

    了解1-Wire?通信協(xié)議工作原理及其相對(duì)于其他類型串行通信的優(yōu)勢(shì)、常見實(shí)施配置,以及主流的1-Wire應(yīng)用
    的頭像 發(fā)表于 10-09 04:10 ?6797次閱讀

    基于STM32之UART串口通信協(xié)議(一)詳解

    一、前言1、簡(jiǎn)介  寫的這篇博客,是為了簡(jiǎn)單講解一下UART通信協(xié)議,以及UART能夠?qū)崿F(xiàn)的一些功能,還有有關(guān)使用STM32CubeMX來(lái)配置芯片的一些操作,在后面我會(huì)以我使用的STM32F429
    發(fā)表于 11-30 14:36 ?22次下載
    基于STM32之<b class='flag-5'>UART</b>串口<b class='flag-5'>通信協(xié)議</b>(一)詳解

    討論使用UART通信協(xié)議的基本原則

    UART,即通用異步接收器/發(fā)送器,是最常用的設(shè)備間通信協(xié)議之一,正確配置后,UART可以配合許多不同類型的涉及發(fā)送和接收串行數(shù)據(jù)的串行協(xié)議工作
    的頭像 發(fā)表于 02-01 17:54 ?904次閱讀

    【世說(shuō)知識(shí)】一文搞懂UART通信協(xié)議

    UART,即通用異步接收器/發(fā)送器,是最常用的設(shè)備間通信協(xié)議之一,正確配置后,UART可以配合許多不同類型的涉及發(fā)送和接收串行數(shù)據(jù)的串行協(xié)議工作
    的頭像 發(fā)表于 02-02 10:46 ?1983次閱讀
    【世說(shuō)知識(shí)】一文搞懂<b class='flag-5'>UART</b><b class='flag-5'>通信協(xié)議</b>

    UART串口通信協(xié)議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協(xié)議,用于實(shí)現(xiàn)串口通信。它是一種簡(jiǎn)單的、可靠的、廣泛應(yīng)用的串口
    的頭像 發(fā)表于 03-19 17:26 ?960次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART串行通信協(xié)議

    的數(shù)據(jù)通信,特別是在嵌入式系統(tǒng)、計(jì)算機(jī)外設(shè)以及微控制器等場(chǎng)景中。本文將對(duì)UART串行通信協(xié)議進(jìn)行詳細(xì)的介紹,包括其基本原理、工作方式、參數(shù)設(shè)置、錯(cuò)誤檢測(cè)與糾正以及應(yīng)用實(shí)例等方面。
    的頭像 發(fā)表于 05-27 16:09 ?1421次閱讀

    簡(jiǎn)單認(rèn)識(shí)UART通信協(xié)議

    模塊等多種設(shè)備之間的數(shù)據(jù)傳輸。以下是對(duì)UART通訊協(xié)議的詳細(xì)簡(jiǎn)述,內(nèi)容將涵蓋其基本原理、工作方式、配置參數(shù)、常見應(yīng)用以及與其他通信協(xié)議的比較。
    的頭像 發(fā)表于 07-25 18:07 ?987次閱讀

    UART協(xié)議工作原理和應(yīng)用場(chǎng)景

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)協(xié)議是一種廣泛使用的串行通信協(xié)議,它允許計(jì)算機(jī)與外部設(shè)備之間通過串行接口進(jìn)行數(shù)據(jù)傳輸。以下是對(duì)
    的頭像 發(fā)表于 08-25 17:15 ?1387次閱讀