<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

UART通信協議的工作原理

jf_78858299 ? 來源:柴火創客空間 ? 作者:柴火菌 ? 2023-03-23 14:24 ? 次閱讀

什么是UART?

通用異步接收器/發射器,通常稱為UART,是一種串行,異步,全雙工通信協議,廣泛用于嵌入式領域。

UART連接

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

圖片

作為一種異步串行通信協議,UART的工作原理是逐位傳輸傳輸數據的每個二進制位。在UART通信協議中,當信號線上的狀態為高電平時,表示“1”,當信號線上的狀態為低電平時,表示“0”。

例如,當使用UART通信協議傳輸一個字節的數據時,在信號線上產生八種高電平和低電平組合。

串行通信是指利用一條傳輸線逐位順序傳輸數據,或者兩條信號線可以形成全雙工通信,如RS232。特點是通信線路簡單,使用簡單的電纜即可實現通信,成本降低,適合遠距離通信的應用,但傳輸速度慢。

異步通信以一個字符作為傳輸單元。通信中兩個字符之間的時間間隔不是固定的,但同一字符中兩個相鄰位之間的時間間隔是固定的。一般來說,兩個UART設備之間的通信不需要時鐘線。此時,需要在兩個UART設備上指定相同的傳輸速率,以及空閑位,起始位,奇偶校驗位和結束位,即遵循相同的協議。

數據傳輸速率以波特率表示,即每秒傳輸的位數。例如,如果數據傳輸速率為120個字符/秒,每個字符為10位(1個起始位,7個數據位,1個校驗位,1個停止位),則其傳輸的波特率為10×120 = 1200個字符/秒= 1200波特。

數據通信格式

圖片

起始位

圖片

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

數據位

圖片

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

奇偶校驗位

圖片

將此位添加到數據位后,“1”位的位數應為偶數(偶數奇偶校驗)或奇數(奇偶奇偶校驗),以驗證數據傳輸的正確性。校驗位其實就是調整號,串口校驗分為幾種方式:

無奇偶校驗

奇偶校驗:如果數據位中“1”的數字是偶數,則奇偶校驗位為“1”,如果“1”的數字為奇數,則奇偶校驗位為“0”。

偶數奇偶校驗:如果數據中“1”的數字是偶數,則奇偶校驗位為“0”,如果是奇數,則奇偶校驗位為“1”。

標記平價:校驗位始終為 1(不常用)。

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

停止位

圖片

它是字符數據的結束標記。它可以是 1 位、1.5 位或 2 位 VOH。由于數據是在傳輸線上定時的,并且每個設備都有自己的時鐘,因此在通信中兩個設備之間很可能會出現小的不同步。因此,停止位不僅指示傳輸結束,而且還為計算機提供了校正時鐘的機會。停止位越多,數據傳輸越穩定,但數據傳輸速度越慢。

協議層

在協議層中,指定了數據包的內容,由起始位、主數據、校驗位和停止位組成。雙方的數據包格式必須一致,才能正常發送和接收數據。

波特率

由于異步通信中沒有時鐘信號,因此兩個通信設備需要就波特率達成一致。常見的有4800、9600、115200等。

圖片

通信的開始和停止信號:串行通信的數據包從開始信號開始,以停止信號結束。數據包的開始信號由邏輯0的數據位表示,數據包的停止信號可以用邏輯0的5.1、1、5.2或1個數據位表示,只要雙方同意即可。

數據檢查:在有效數據之后,有一個可選的數據校驗位。由于數據通信相對容易受到外界干擾,傳輸數據偏斜,可以在傳輸過程中增加校驗位來解決這個問題。檢查方法包括奇數檢查、偶數檢查、0 檢查(空格)、1 檢查(標記)和無奇偶校驗。

奇偶校驗要求有效數據和奇偶校驗位中的“1”數為奇數。

例如,8 01101001 位有效數據,總共有 4 個“1”。如果校驗位為“1”,則最后傳輸的數據將是 8 位有效數據加上 1 位校驗位,總計 9 位。偶數奇偶校驗和奇數奇偶校驗要求正好相反。幀數據和奇偶校驗位中“1”的數目要求為偶數,如數據幀:11001010。此時,數據框中“1”的數量為4,因此偶數奇偶校驗位為“0”。0 check 表示無論有效數據的內容是什么,校驗位始終為“0”,1 check 表示校驗位始終為“1”。

錯誤狀態

以下是使用 UART 時可能會遇到的一些錯誤:

成幀錯誤

UART狀態和控制寄存器將指示各種狀態條件,包括與傳輸相關的錯誤狀態。了解此協議可以更輕松地理解錯誤狀態。它們包括成幀錯誤,當接收器在預期的位時間看不到停止位時會發生。如果數據線在預期停止位時未處于預期的高電平狀態(取決于設置 UART 的數據和奇偶校驗位的數量),則 UART 將發出成幀錯誤的信號。

奇偶校驗錯誤

僅當 UART 處于奇偶校驗模式時,才會引發奇偶校驗錯誤。在奇偶校驗模式下,發送一個額外的位來保存所有傳輸的數據位的奇偶校驗(偶數或奇數)。如果數據位出錯(1 表示 0 或 0 表示 1),則奇偶校驗位將出錯,并且將引發指定錯誤的錯誤。

溢出錯誤

當接收方在下一個字符到達之前不處理(從輸入緩沖區中刪除字符)時,會發生溢出錯誤。

中斷條件

中斷條件不一定是錯誤。當接收器輸入處于邏輯低電平狀態超過一定持續時間(通常超過一個字符時間)時,就會發生這種情況。對于接收者來說,它看起來像一個帶有成幀錯誤的全0字符。在 python 代碼中,您可以看到重置是通過發送中斷觸發的。這會將數據線拉低足夠長的時間,以便MCLR被拉低并復位電路板。

以下是UART,I2c和SPI之間的區別

圖片

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

沒有“最佳”的通信外圍設備,每個通信外設都有自己的優點和缺點。因此,用戶應選擇最適合其項目的通信外設。例如,如果您想要最快的通信外設,SPI 將是理想的選擇。另一方面,如果用戶想要連接多個設備而又不太復雜,I2C 將是理想的選擇,因為它最多可以連接 127 臺設備并且易于管理。

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

圖片

寫在最后

不同通信協議都有其優點和缺點,根據應用場景合理選擇即可,這樣我們的MUC控制器就可以控制各種各樣的硬件設備或傳感器設備了!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 發射器
    +關注

    關注

    6

    文章

    785

    瀏覽量

    52601
  • 時鐘
    +關注

    關注

    10

    文章

    1490

    瀏覽量

    130449
  • uart
    +關注

    關注

    22

    文章

    1163

    瀏覽量

    100241
  • 異步接收器
    +關注

    關注

    0

    文章

    6

    瀏覽量

    5627
收藏 人收藏

    評論

    相關推薦

    UART通信協議

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

    UART通信協議是什么

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

    UART通信協議傳輸有哪些配置參數?

    UART通信協議傳輸的一些基本配置參數
    發表于 03-10 06:42

    RS-485通信協議是怎樣工作

    通信協議是指什么?RS-485通信協議是怎樣工作的?
    發表于 11-10 06:15

    怎樣使用STM32CubeMX來配置USART串口通信協議

    UART串口通信協議工作原理是什么?怎樣使用STM32CubeMX來配置USART串口通信協議呢?
    發表于 12-06 06:53

    UART串口通信協議的相關資料分享

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

    UART通信協議的相關資料推薦

    一、前言1、簡介  寫的這篇博客,是為了簡單講解一下UART通信協議,以及UART能夠實現的一些功能,還有有關使用STM32CubeMX來配置芯片的一些操作,在后面我會以我使用的STM32F429
    發表于 01-25 06:40

    串口通信協議的相關資料分享

    目錄一、串口通信協議1、UART簡介2、 UART通信協議(1)起始位(2)數據幀(3)奇偶校驗位(4)停止位(5)下個起始位(6)波特率二、STM32的USART串口
    發表于 02-22 07:16

    KWP2000通信協議與讀碼器工作原理

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

    1-Wire通信協議工作原理及優勢介紹

    了解1-Wire?通信協議工作原理及其相對于其他類型串行通信的優勢、常見實施配置,以及主流的1-Wire應用
    的頭像 發表于 10-09 04:10 ?6632次閱讀

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

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

    討論使用UART通信協議的基本原則

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

    【世說知識】一文搞懂UART通信協議

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

    UART串口通信協議是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一種通信接口協議,用于實現串口通信。它是一種簡單的、可靠的、廣泛應用的串口
    的頭像 發表于 03-19 17:26 ?539次閱讀

    簡單認識UART串行通信協議

    的數據通信,特別是在嵌入式系統、計算機外設以及微控制器等場景中。本文將對UART串行通信協議進行詳細的介紹,包括其基本原理、工作方式、參數設置、錯誤檢測與糾正以及應用實例等方面。
    的頭像 發表于 05-27 16:09 ?228次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>