了解通用異步接收器/發送器的硬件通信協議
發布時間:2021-02-01 來源:Eric Peňa 和 Mary Grace Legaspi 責任編輯:wenwei
【導讀】UART,即通用異步接收器/發送器,是最常用的設備間通信協議之一。本文將UART用作硬件通信協議應遵循的標準步驟進行說明。
正確配置後,UART可ke以yi配pei合he許xu多duo不bu同tong類lei型xing的de涉she及ji發fa送song和he接jie收shou串chuan行xing數shu據ju的de串chuan行xing協xie議yi工gong作zuo。在zai串chuan行xing通tong信xin中zhong,數shu據ju通tong過guo單dan條tiao線xian路lu或huo導dao線xian逐zhu位wei傳chuan輸shu。在zai雙shuang向xiang通tong信xin中zhong,我wo們men使shi用yong兩liang根gen導dao線xian來lai進jin行xing連lian續xu的de串chuan行xing數shu據ju傳chuan輸shu。根gen據ju應ying用yong和he係xi統tong要yao求qiu,串chuan行xing通tong信xin需xu要yao的de電dian路lu和he導dao線xian較jiao少shao,可ke降jiang低di實shi現xian成cheng本ben。
本文將討論使用UART的基本原則,重點是數據包傳輸、標準幀協議和定製幀協議;定ding製zhi幀zhen協xie議yi將jiang是shi安an全quan合he規gui性xing方fang麵mian的de增zeng值zhi特te性xing,尤you其qi是shi在zai代dai碼ma開kai發fa期qi間jian。在zai產chan品pin開kai發fa過guo程cheng中zhong,本ben文wen檔dang還hai旨zhi在zai分fen享xiang一yi些xie基ji本ben步bu驟zhou,以yi檢jian查zha數shu據ju表biao的de實shi際ji使shi用yong。
最後,本文的目標是幫助更好地理解和遵循UART標準,以便最大程度地發揮其能力和應用優勢,特別是在開發新產品時。
"溝通最大的問題在於,人們想當然地認為已經溝通了。"
——喬治·蕭伯納
通(tong)信(xin)協(xie)議(yi)在(zai)組(zu)織(zhi)設(she)備(bei)之(zhi)間(jian)的(de)通(tong)信(xin)時(shi)扮(ban)演(yan)著(zhe)重(zhong)要(yao)角(jiao)色(se)。它(ta)基(ji)於(yu)係(xi)統(tong)要(yao)求(qiu)而(er)以(yi)不(bu)同(tong)方(fang)式(shi)進(jin)行(xing)設(she)計(ji)。此(ci)類(lei)協(xie)議(yi)具(ju)有(you)特(te)定(ding)的(de)規(gui)則(ze),為(wei)實(shi)現(xian)成(cheng)功(gong)通(tong)信(xin),不(bu)同(tong)設(she)備(bei)都(dou)遵(zun)循(xun)該(gai)規(gui)則(ze)。
嵌入式係統、微控製器和計算機大多將UART作為設備間硬件通信協議的一種形式。在可用通信協議中,UART的發送和接收端僅使用兩條線。
盡管它是一種廣泛使用的硬件通信方法,但它並非在所有時候都是完全優化的。在微控製器內部使用UART模塊時,通常會忽略幀協議的適當實現。
根據定義,UART是一種硬件通信協議,以可配置的速度使用異步串行通信。異步意味著沒有時鍾信號來同步從發送設備進入接收端的輸出位。
接口

圖1.兩個UART彼此直接通信
每個UART設備的兩個信號分別命名為:
● 發送器(Tx)
● 接收器(Rx)
每個設備的發送器和接收器線的主要作用是用於串行通信的串行數據的發送和接收。

圖2.帶數據總線的UART
發送UART連接到以並行形式發送數據的控製數據總線。然後,數據將在傳輸線路(導線)上一位一位地串行傳輸到接收UART。反過來,對於接收設備,串行數據會被轉換為並行數據。
UART線用作發送和接收數據的通信介質。請注意,UART設備具有專門用於發送或接收的發送和接收引腳。
對於UARThedaduoshuchuanxingtongxin,fasonghejieshoushebeixuyaojiangbotelvshezhiweixiangtongdezhi。botelvshizhixinxichuanshudaoxindaodesulv。duiyuchuanxingduankou,shedingdebotelvjiangyongzuomeimiaochuanshudezuidaweishu。
表1總結了關於UART必須了解的幾點。
表1.UART概要

UART接jie口kou不bu使shi用yong時shi鍾zhong信xin號hao來lai同tong步bu發fa送song器qi和he接jie收shou器qi設she備bei,而er是shi以yi異yi步bu方fang式shi傳chuan輸shu數shu據ju。發fa送song器qi根gen據ju其qi時shi鍾zhong信xin號hao生sheng成cheng的de位wei流liu取qu代dai了le時shi鍾zhong信xin號hao,接jie收shou器qi使shi用yong其qi內nei部bu時shi鍾zhong信xin號hao對dui輸shu入ru數shu據ju進jin行xing采cai樣yang。同tong步bu點dian是shi通tong過guo兩liang個ge設she備bei的de相xiang同tong波bo特te率lv來lai管guan理li的de。如ru果guo波bo特te率lv不bu同tong,發fa送song和he接jie收shou數shu據ju的de時shi序xu可ke能neng會hui受shou影ying響xiang,導dao致zhi數shu據ju處chu理li過guo程cheng出chu現xian不bu一yi致zhi。允yun許xu的de波bo特te率lv差cha異yi最zui大da值zhi為wei10%,超過此值,位的時序就會脫節。
數據傳輸
在UART中,傳輸模式為數據包形式。連接發送器和接收器的機製包括串行數據包的創建和物理硬件線路的控製。數據包由起始位、數據幀、奇偶校驗位和停止位組成。

圖3.UART數據包
起始位
當不傳輸數據時,UART數據傳輸線通常保持高電壓電平。若要開始數據傳輸,發送UART會將傳輸線從高電平拉到低電平並保持1個時鍾周期。當接收UART檢測到高到低電壓躍遷時,便開始以波特率對應的頻率讀取數據幀中的位。

圖4.起始位
數據幀
數據幀包含所傳輸的實際數據。如果使用奇偶校驗位,數據幀長度可以是5位到8位。如果不使用奇偶校驗位,數據幀長度可以是9位。在大多數情況下,數據以最低有效位優先方式發送。

圖5.數據幀
奇偶校驗
奇偶性描述數字是偶數還是奇數。通過奇偶校驗位,接收UART判斷傳輸期間是否有數據發生改變。電磁輻射、不一致的波特率或長距離數據傳輸都可能改變數據位。
接收UART讀取數據幀後,將計數值為1的位,檢查總數是偶數還是奇數。如果奇偶校驗位為0(偶數奇偶校驗),則數據幀中的1或邏輯高位總計應為偶數。如果奇偶校驗位為1(奇數奇偶校驗),則數據幀中的1或邏輯高位總計應為奇數。
當奇偶校驗位與數據匹配時,UART認為傳輸未出錯。但是,如果奇偶校驗位為0,而總和為奇數,或者奇偶校驗位為1,而總和為偶數,則UART認為數據幀中的位已改變。

圖6.奇偶校驗位
停止位
為了表示數據包結束,發送UART將數據傳輸線從低電壓驅動到高電壓並保持1到2位時間。

圖7.停止位
UART傳輸步驟
第一步:發送UART從數據總線並行接收數據。

圖8.數據總線至發送UART
第二步:發送UART將起始位、奇偶校驗位和停止位添加到數據幀。

圖9.Tx側的UART數據幀
第三步:從起始位到結束位,整個數據包以串行方式從發送UART送至接收UART。接收UART以預配置的波特率對數據線進行采樣。

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

圖11.Rx側的UART數據幀
第五步:接收UART將串行數據轉換回並行數據,並將其傳輸到接收端的數據總線。

圖12.接收UART至數據總線
幀協議
UART的一個關鍵特性是幀協議的實現,但還沒有被充分使用。其主要用途和重要性是為每台設備提供安全和保護方麵的增值。
例如,當兩個設備使用相同的UART幀協議時,有可能在沒有檢查配置的情況下連接到同一個UART,設備會連接到不同的引腳,這可能導致係統故障。
另(ling)一(yi)方(fang)麵(mian),實(shi)現(xian)幀(zhen)協(xie)議(yi)可(ke)確(que)保(bao)安(an)全(quan)性(xing),因(yin)為(wei)需(xu)要(yao)根(gen)據(ju)設(she)計(ji)幀(zhen)協(xie)議(yi)解(jie)析(xi)接(jie)收(shou)到(dao)的(de)信(xin)息(xi)。每(mei)個(ge)幀(zhen)協(xie)議(yi)都(dou)經(jing)過(guo)專(zhuan)門(men)設(she)計(ji),以(yi)確(que)保(bao)唯(wei)一(yi)性(xing)和(he)安(an)全(quan)性(xing)。
在設計幀協議時,設計人員可以給不同設備設置期望的報頭和報尾(包括CRC)。在圖13中,2個字節被設置為報頭的一部分。

圖13.UART幀協議示例
根據示例,您可以給您的設備設置獨有的報頭、報尾和CRC。
報頭1(H1為0xAB)和報頭2(H2為0xCD)
報頭是確定您是否在與正確的設備通信的唯一標識符。
命令(CMD)選擇
命令將取決於用於創建兩個設備之間通信的命令列表。
每個命令的數據長度(DL)
數shu據ju長chang度du將jiang取qu決jue於yu所suo選xuan的de命ming令ling。您nin可ke以yi根gen據ju所suo選xuan的de命ming令ling來lai使shi數shu據ju長chang度du最zui大da化hua,因yin此ci它ta會hui隨sui選xuan擇ze而er變bian化hua。在zai這zhe種zhong情qing況kuang下xia,數shu據ju長chang度du可ke以yi調tiao整zheng。
數據n(可變數據)
數據是要從設備傳輸的有效載荷。
報尾1(T1為0xE1)和報尾2(T2為0xE2)
報尾是在傳輸結束後添加的數據。就像報頭一樣,報尾也可以唯一標識符。
循環冗餘校驗(CRC公式)
循環冗餘校驗公式是一種附加的錯誤檢測模式,用於檢測原始數據是否發生意外更改。發送設備的CRC值必須始終等於接收器端的CRC計算值。
建議為每個UART設備實現幀協議來增加安全性。幀協議要求發送和接收設備使用相同的配置。
UART工作原理
使用任何硬件通信協議時,首先必須檢查數據手冊和硬件參考手冊。
以下是要遵循的步驟:
第一步:檢查設備的數據手冊接口。

圖14.微控製器數據手冊
第二步:在存儲器映射下麵檢查UART地址。

圖15.微控製器存儲器映射
第三步:檢查UART端口的具體信息,例如工作模式、數據位長度、奇偶校驗位和停止位。
示例MCU提供了一個全雙工UART端口,其與PC標準UART完全兼容。UART端口提供一個簡化的UART接口用於連接其他外設或主機,支持全雙工、DMA和異步串行數據傳輸。UART端口支持5到8個數據位,以及無校驗、偶校驗和奇校驗。幀由一個半或兩個停止位終止。
第四步:檢查UART操作的詳細信息,包括波特率計算。波特率通過以下示例公式進行配置。此公式隨微控製器而異。
數據手冊中的UART端口詳細信息示例:
● 5到8個數據位
● 1、2或1 ½個停止位
● 無、偶數或奇數奇偶校驗
● 可編程過采樣率為4、8、16、32
● 波特率 = PCLK/((M + N/2048) × 2OSR + 2 × DIV
其中:
OSR(過采樣率)
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
第五步:對於波特率,務必檢查要使用的外設時鍾(PCLK)。此示例有26 MHz PCLK和16 MHz PCLK可用。請注意,OSR、DIV、DIVM和DIVN隨設備而異。
表2.基於26 MHz PCLK的波特率示例

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

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

第七步:檢查每個寄存器下的詳細信息,代入值以計算波特率,然後開始實現UART。
為何重要?
當開發穩健的、質量驅動的產品時,熟悉UART通tong信xin協xie議yi非fei常chang有you優you勢shi。知zhi道dao如ru何he僅jin使shi用yong兩liang條tiao線xian發fa送song數shu據ju,以yi及ji如ru何he傳chuan輸shu整zheng個ge數shu據ju包bao或huo有you效xiao載zai荷he,將jiang有you助zhu於yu確que保bao數shu據ju正zheng確que無wu誤wu地di發fa送song和he接jie收shou。UART是最常用的硬件通信協議,具備相關知識可以在將來的設計中實現設計靈活性。
用例
您可以將UART用於許多應用,例如:
● 調試:在開發過程中及早發現係統錯誤很重要。添加UART便可從係統捕捉消息,幫助排除錯誤。
● 製造功能級追蹤:日誌在製造業中非常重要。通過日誌可確定功能,提醒操作員生產線上正在發生的事情。
● 客戶更新:軟件更新非常重要。完整的動態硬件和支持更新的軟件對於擁有完整係統至關重要。
● 測試/驗證:在產品離開製造過程之前進行驗證有助於為客戶提供最優質的產品。
參考電路
"UART通信基礎。" Electronics Hub,2017年7月。
Campbell, Scott。 "UART通信基礎。" 電路基礎。
"回到基礎:通用異步接收器/發送器。" 關於電路的一切,2016年12月。
"何為UART協議?UART通信闡釋。" Arrow。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 貿澤EIT係列新一期,探索AI如何重塑日常科技與用戶體驗
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 創新不止,創芯不已:第六屆ICDIA創芯展8月南京盛大啟幕!
- AI時代,為什麼存儲基礎設施的可靠性決定數據中心的經濟效益
- 矽典微ONELAB開發係列:為毫米波算法開發者打造的全棧工具鏈
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索



