了解通用異步接收器/發送器的硬件通信協議
發布時間:2021-02-01 來源:Eric Peňa 和 Mary Grace Legaspi 責任編輯:wenwei
【導讀】UART,即通用異步接收器/發送器,是最常用的設備間通信協議之一。本文將UART用作硬件通信協議應遵循的標準步驟進行說明。
正確配置後,UARTkeyipeihexuduobutongleixingdeshejifasonghejieshouchuanxingshujudechuanxingxieyigongzuo。zaichuanxingtongxinzhong,shujutongguodantiaoxianluhuodaoxianzhuweichuanshu。zaishuangxiangtongxinzhong,womenshiyonglianggendaoxianlaijinxinglianxudechuanxingshujuchuanshu。genjuyingyonghexitongyaoqiu,chuanxingtongxinxuyaodedianluhedaoxianjiaoshao,kejiangdishixianchengben。
本文將討論使用UART的基本原則,重點是數據包傳輸、標準幀協議和定製幀協議;dingzhizhenxieyijiangshianquanheguixingfangmiandezengzhitexing,youqishizaidaimakaifaqijian。zaichanpinkaifaguochengzhong,benwendanghaizhizaifenxiangyixiejibenbuzhou,yijianzhashujubiaodeshijishiyong。
最後,本文的目標是幫助更好地理解和遵循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設備具有專門用於發送或接收的發送和接收引腳。
對於UART和he大da多duo數shu串chuan行xing通tong信xin,發fa送song和he接jie收shou設she備bei需xu要yao將jiang波bo特te率lv設she置zhi為wei相xiang同tong的de值zhi。波bo特te率lv是shi指zhi信xin息xi傳chuan輸shu到dao信xin道dao的de速su率lv。對dui於yu串chuan行xing端duan口kou,設she定ding的de波bo特te率lv將jiang用yong作zuo每mei秒miao傳chuan輸shu的de最zui大da位wei數shu。
表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)為(wei)10%,超過此值,位的時序就會脫節。
數據傳輸
在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,設備會連接到不同的引腳,這可能導致係統故障。
lingyifangmian,shixianzhenxieyikequebaoanquanxing,yinweixuyaogenjushejizhenxieyijiexijieshoudaodexinxi。meigezhenxieyidoujingguozhuanmensheji,yiquebaoweiyixingheanquanxing。
在設計幀協議時,設計人員可以給不同設備設置期望的報頭和報尾(包括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。
為何重要?
當開發穩健的、質量驅動的產品時,熟悉UARTtongxinxieyifeichangyouyoushi。zhidaoruhejinshiyongliangtiaoxianfasongshuju,yijiruhechuanshuzhenggeshujubaohuoyouxiaozaihe,jiangyouzhuyuquebaoshujuzhengquewuwudifasonghejieshou。UART是最常用的硬件通信協議,具備相關知識可以在將來的設計中實現設計靈活性。
用例
您可以將UART用於許多應用,例如:
● 調試:在開發過程中及早發現係統錯誤很重要。添加UART便可從係統捕捉消息,幫助排除錯誤。
● 製造功能級追蹤:日誌在製造業中非常重要。通過日誌可確定功能,提醒操作員生產線上正在發生的事情。
● 客戶更新:軟件更新非常重要。完整的動態硬件和支持更新的軟件對於擁有完整係統至關重要。
● 測試/驗證:在產品離開製造過程之前進行驗證有助於為客戶提供最優質的產品。
參考電路
"UART通信基礎。" Electronics Hub,2017年7月。
Campbell, Scott。 "UART通信基礎。" 電路基礎。
"回到基礎:通用異步接收器/發送器。" 關於電路的一切,2016年12月。
"何為UART協議?UART通信闡釋。" Arrow。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 具身智能成最大亮點!CITE 2026開幕峰會釋放產業強信號
- 助力醫療器械產業高質量發展 派克漢尼汾閃耀2026 ICMD
- 比異步時鍾更隱蔽的“芯片殺手”——跨複位域(RDC)問題
- 數據之外:液冷技術背後的連接器創新
- “眼在手上”的嵌入式實踐:基於ROS2與RK3576的機械臂跟隨抓取方案
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索





