<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 一文搞懂UART通信協(xié)議

一文搞懂UART通信協(xié)議

作者: 時(shí)間:2023-12-28 來(lái)源:亞德諾半導體 收藏

,即通用異步接收器/發(fā)送器,是最常用的設備間之一,正確配置后,可以配合許多不同類(lèi)型的涉及發(fā)送和接收串行數據的串行協(xié)議工作。在串行通信中,數據通過(guò)單條線(xiàn)路或導線(xiàn)逐位傳輸。在雙向通信中,我們使用兩根導線(xiàn)來(lái)進(jìn)行連續的串行數據傳輸。根據應用和系統要求,串行通信需要的電路和導線(xiàn)較少,可降低實(shí)現成本。

本文引用地址:http://dyxdggzs.com/article/202312/454323.htm

本文將用作硬件應遵循的標準步驟進(jìn)行說(shuō)明,討論使用UART的基本原則,重點(diǎn)是數據包傳輸、標準幀協(xié)議和定制幀協(xié)議;定制幀協(xié)議將是安全合規性方面的增值特性,尤其是在代碼開(kāi)發(fā)期間。在產(chǎn)品開(kāi)發(fā)過(guò)程中,本文還將分享一些基本步驟,以檢查數據表的實(shí)際使用,目標是幫助更好地理解和遵循UART標準,以便最大程度地發(fā)揮其能力和應用優(yōu)勢,特別是在開(kāi)發(fā)新產(chǎn)品時(shí)。

通信協(xié)議在組織設備之間的通信時(shí)扮演著(zhù)重要角色。它基于系統要求而以不同方式進(jìn)行設計。此類(lèi)協(xié)議具有特定的規則,為實(shí)現成功通信,不同設備都遵循該規則。

根據定義,UART是一種硬件通信協(xié)議,以可配置的速度使用異步串行通信。異步意味著(zhù)沒(méi)有時(shí)鐘信號來(lái)同步從發(fā)送設備進(jìn)入接收端的輸出位。

嵌入式系統、微控制器和計算機大多將UART作為設備間硬件通信協(xié)議的一種形式。在可用通信協(xié)議中,UART的發(fā)送和接收端僅使用兩條線(xiàn)。盡管它是一種廣泛使用的硬件通信方法,但它并非在所有時(shí)候都是完全優(yōu)化的。在微控制器內部使用UART模塊時(shí),通常會(huì )忽略幀協(xié)議的適當實(shí)現。

接口

圖片.png

圖1.兩個(gè)UART彼此直接通信

每個(gè)UART設備的兩個(gè)信號分別命名為:

■ 發(fā)送器(Tx)

■ 接收器(Rx)

每個(gè)設備的發(fā)送器和接收器線(xiàn)的主要作用是用于串行通信的串行數據的發(fā)送和接收。

圖片.png

圖2.帶的UART

發(fā)送UART連接到以并行形式發(fā)送數據的控制。然后,數據將在傳輸線(xiàn)路(導線(xiàn))上一位一位地串行傳輸到接收UART。反過(guò)來(lái),對于接收設備,串行數據會(huì )被轉換為并行數據。

UART線(xiàn)用作發(fā)送和接收數據的通信介質(zhì)。請注意,UART設備具有專(zhuān)門(mén)用于發(fā)送或接收的發(fā)送和接收引腳。對于UART和大多數串行通信,發(fā)送和接收設備需要將波特率設置為相同的值。波特率是指信息傳輸到信道的速率。對于串行端口,設定的波特率將用作每秒傳輸的最大位數。表1總結了關(guān)于UART必須了解的幾點(diǎn)。

圖片

表1.UART概要

UART接口不使用時(shí)鐘信號來(lái)同步發(fā)送器和接收器設備,而是以異步方式傳輸數據。發(fā)送器根據其時(shí)鐘信號生成的位流取代了時(shí)鐘信號,接收器使用其內部時(shí)鐘信號對輸入數據進(jìn)行采樣。同步點(diǎn)是通過(guò)兩個(gè)設備的相同波特率來(lái)管理的。如果波特率不同,發(fā)送和接收數據的時(shí)序可能會(huì )受影響,導致數據處理過(guò)程出現不一致。允許的波特率差異最大值為10%,超過(guò)此值,位的時(shí)序就會(huì )脫節。

數據傳輸

在UART中,傳輸模式為數據包形式。連接發(fā)送器和接收器的機制包括串行數據包的創(chuàng )建和物理硬件線(xiàn)路的控制。數據包由起始位、數據幀、奇偶校驗位和停止位組成。

圖片.png

圖3.UART數據包

■ 起始位

當不傳輸數據時(shí),UART數據傳輸線(xiàn)通常保持高電壓電平。若要開(kāi)始數據傳輸,發(fā)送UART會(huì )將傳輸線(xiàn)從高電平拉到低電平并保持1個(gè)時(shí)鐘周期。當接收UART檢測到高到低電壓躍遷時(shí),便開(kāi)始以波特率對應的頻率讀取數據幀中的位。

圖片.png

圖4.起始位

■ 數據幀

數據幀包含所傳輸的實(shí)際數據。如果使用奇偶校驗位,數據幀長(cháng)度可以是5位到8位。如果不使用奇偶校驗位,數據幀長(cháng)度可以是9位。在大多數情況下,數據以最低有效位優(yōu)先方式發(fā)送。

圖片.png

圖5.數據幀

■ 奇偶校驗

奇偶性描述數字是偶數還是奇數。通過(guò)奇偶校驗位,接收UART判斷傳輸期間是否有數據發(fā)生改變。電磁輻射、不一致的波特率或長(cháng)距離數據傳輸都可能改變數據位。

接收UART讀取數據幀后,將計數值為1的位,檢查總數是偶數還是奇數。如果奇偶校驗位為0(偶數奇偶校驗),則數據幀中的1或邏輯高位總計應為偶數。如果奇偶校驗位為1(奇數奇偶校驗),則數據幀中的1或邏輯高位總計應為奇數。

當奇偶校驗位與數據匹配時(shí),UART認為傳輸未出錯。但是,如果奇偶校驗位為0,而總和為奇數,或者奇偶校驗位為1,而總和為偶數,則UART認為數據幀中的位已改變。

圖片.png

圖6.奇偶校驗位

■ 停止位

為了表示數據包結束,發(fā)送UART將數據傳輸線(xiàn)從低電壓驅動(dòng)到高電壓并保持1到2位時(shí)間。

圖片.png

圖7.停止位

UART傳輸步驟

第一步:發(fā)送UART從并行接收數據。

圖片.png

圖8.數據總線(xiàn)至發(fā)送UART

第二步:發(fā)送UART將起始位、奇偶校驗位和停止位添加到數據幀。

圖片.png

圖9.Tx側的UART數據幀

第三步:從起始位到結束位,整個(gè)數據包以串行方式從發(fā)送UART送至接收UART。接收UART以預配置的波特率對數據線(xiàn)進(jìn)行采樣。

圖片.png

圖10.UART傳輸

第四步:接收UART丟棄數據幀中的起始位、奇偶校驗位和停止位。

圖片.png

圖11.Rx側的UART數據幀

第五步:接收UART將串行數據轉換回并行數據,并將其傳輸到接收端的數據總線(xiàn)。

圖片.png

圖12.接收UART至數據總線(xiàn)

幀協(xié)議

UART的一個(gè)關(guān)鍵特性是幀協(xié)議的實(shí)現,但還沒(méi)有被充分使用。其主要用途和重要性是為每臺設備提供安全和保護方面的增值。例如,當兩個(gè)設備使用相同的UART幀協(xié)議時(shí),有可能在沒(méi)有檢查配置的情況下連接到同一個(gè)UART,設備會(huì )連接到不同的引腳,這可能導致系統故障。

另一方面,實(shí)現幀協(xié)議可確保安全性,因為需要根據設計幀協(xié)議解析接收到的信息。每個(gè)幀協(xié)議都經(jīng)過(guò)專(zhuān)門(mén)設計,以確保唯一性和安全性。

在設計幀協(xié)議時(shí),設計人員可以給不同設備設置期望的報頭和報尾(包括CRC)。在圖13中,2個(gè)字節被設置為報頭的一部分。

圖片

圖13.UART幀協(xié)議示例

根據示例,您可以給您的設備設置獨有的報頭、報尾和CRC。

報頭1(H1為0xAB)和報頭2(H2為0xCD)

報頭是確定您是否在與正確的設備通信的唯一標識符。

■ 命令(CMD)選擇

命令將取決于用于創(chuàng )建兩個(gè)設備之間通信的命令列表。

■ 每個(gè)命令的數據長(cháng)度(DL)

數據長(cháng)度將取決于所選的命令。您可以根據所選的命令來(lái)使數據長(cháng)度最大化,因此它會(huì )隨選擇而變化。在這種情況下,數據長(cháng)度可以調整。

■ 數據n(可變數據)

數據是要從設備傳輸的有效載荷。

■ 報尾1(T1為0xE1)和報尾2(T2為0xE2)

報尾是在傳輸結束后添加的數據。就像報頭一樣,報尾也可以唯一標識符。

■ 循環(huán)冗余校驗(CRC公式)

循環(huán)冗余校驗公式是一種附加的錯誤檢測模式,用于檢測原始數據是否發(fā)生意外更改。發(fā)送設備的CRC值必須始終等于接收器端的CRC計算值。

建議為每個(gè)UART設備實(shí)現幀協(xié)議來(lái)增加安全性,幀協(xié)議要求發(fā)送和接收設備使用相同的配置。

UART工作原理

使用任何硬件通信協(xié)議時(shí),首先必須檢查數據手冊和硬件參考手冊。以下是要遵循的步驟:

第一步:檢查設備的數據手冊接口。

圖片

圖14.微控制器數據手冊

第二步:在存儲器映射下面檢查UART地址。

圖片

圖15.微控制器存儲器映射

第三步:檢查UART端口的具體信息,例如工作模式、數據位長(cháng)度、奇偶校驗位和停止位。示例MCU提供了一個(gè)全雙工UART端口,其與PC標準UART完全兼容。UART端口提供一個(gè)簡(jiǎn)化的UART接口用于連接其他外設或主機,支持全雙工、DMA和異步串行數據傳輸。UART端口支持5到8個(gè)數據位,以及無(wú)校驗、偶校驗和奇校驗。幀由一個(gè)半或兩個(gè)停止位終止。

第四步:檢查UART操作的詳細信息,包括波特率計算。波特率通過(guò)以下示例公式進(jìn)行配置。此公式隨微控制器而異。

數據手冊中的UART端口詳細信息示例:

■ 5到8個(gè)數據位

■ 1、2或1 ?個(gè)停止位

■ 無(wú)、偶數或奇數奇偶校驗

■ 可編程過(guò)采樣率為4、8、16、32

■ 波特率 = PCLK/((M + N/2048) × 2OSR + 2 × DIV

其中:

OSR(過(guò)采樣率)

UART_LCR2.OSR = 0至3

DIV(波特率分頻器)

UART_DIV = 1至65535

M(DIVM小數波特率M)

UART_FBR.DIVM = 1至3

N(DIVM小數波特率M)

UART_FBR.DIVN = 0至2047

第五步:對于波特率,務(wù)必檢查要使用的外設時(shí)鐘(PCLK)。此示例有26 MHz PCLK和16 MHz PCLK可用。請注意,OSR、DIV、DIVM和DIVN隨設備而異。

圖片

表2.基于26 MHz PCLK的波特率示例

圖片

表3.基于16 MHz PCLK的波特率示例

第六步:下一部分是檢查UART配置的詳細寄存器。了解計算波特率時(shí)的參數,例如UART_LCR2、UART_DIV和UART_FBR。表4要列出所涉及的具體寄存器。

圖片

表4.UART寄存器描述

第七步:檢查每個(gè)寄存器下的詳細信息,代入值以計算波特率,然后開(kāi)始實(shí)現UART。

應用范例

當開(kāi)發(fā)穩健的、質(zhì)量驅動(dòng)的產(chǎn)品時(shí),熟悉UART通信協(xié)議非常有優(yōu)勢。知道如何僅使用兩條線(xiàn)發(fā)送數據,以及如何傳輸整個(gè)數據包或有效載荷,將有助于確保數據正確無(wú)誤地發(fā)送和接收。UART是最常用的硬件通信協(xié)議,具備相關(guān)知識可以在將來(lái)的設計中實(shí)現設計靈活性。

您可以將UART用于許多應用,例如:

■ 調試:在開(kāi)發(fā)過(guò)程中及早發(fā)現系統錯誤很重要。添加UART便可從系統捕捉消息,幫助排除錯誤。

■ 制造功能級追蹤:日志在制造業(yè)中非常重要。通過(guò)日志可確定功能,提醒操作員生產(chǎn)線(xiàn)上正在發(fā)生的事情。

■ 客戶(hù)更新:軟件更新非常重要。完整的動(dòng)態(tài)硬件和支持更新的軟件對于擁有完整系統至關(guān)重要。

■ 測試/驗證:在產(chǎn)品離開(kāi)制造過(guò)程之前進(jìn)行驗證有助于為客戶(hù)提供最優(yōu)質(zhì)的產(chǎn)品。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>