了解通用異步接收器/發(fā)送器的硬件通信協(xié)議
發(fā)布時間:2021-02-01 來源:Eric Peňa 和 Mary Grace Legaspi 責任編輯:wenwei
【導(dǎo)讀】UART,即通用異步接收器/發(fā)送器,是最常用的設(shè)備間通信協(xié)議之一。本文將UART用作硬件通信協(xié)議應(yīng)遵循的標準步驟進行說明。
正確配置后,UART可以配合許多不同類型的涉及發(fā)送和接收串行數(shù)據(jù)的串行協(xié)議工作。在串行通信中,數(shù)據(jù)通過單條線路或?qū)Ь€逐位傳輸。在雙向通信中,我們使用兩根導(dǎo)線來進行連續(xù)的串行數(shù)據(jù)傳輸。根據(jù)應(yīng)用和系統(tǒng)要求,串行通信需要的電路和導(dǎo)線較少,可降低實現(xiàn)成本。
本文將討論使用UART的基本原則,重點是數(shù)據(jù)包傳輸、標準幀協(xié)議和定制幀協(xié)議;定制幀協(xié)議將是安全合規(guī)性方面的增值特性,尤其是在代碼開發(fā)期間。在產(chǎn)品開發(fā)過程中,本文檔還旨在分享一些基本步驟,以檢查數(shù)據(jù)表的實際使用。
最后,本文的目標是幫助更好地理解和遵循UART標準,以便最大程度地發(fā)揮其能力和應(yīng)用優(yōu)勢,特別是在開發(fā)新產(chǎn)品時。
"溝通最大的問題在于,人們想當然地認為已經(jīng)溝通了。"
——喬治·蕭伯納
通信協(xié)議在組織設(shè)備之間的通信時扮演著重要角色。它基于系統(tǒng)要求而以不同方式進行設(shè)計。此類協(xié)議具有特定的規(guī)則,為實現(xiàn)成功通信,不同設(shè)備都遵循該規(guī)則。
嵌入式系統(tǒng)、微控制器和計算機大多將UART作為設(shè)備間硬件通信協(xié)議的一種形式。在可用通信協(xié)議中,UART的發(fā)送和接收端僅使用兩條線。
盡管它是一種廣泛使用的硬件通信方法,但它并非在所有時候都是完全優(yōu)化的。在微控制器內(nèi)部使用UART模塊時,通常會忽略幀協(xié)議的適當實現(xiàn)。
根據(jù)定義,UART是一種硬件通信協(xié)議,以可配置的速度使用異步串行通信。異步意味著沒有時鐘信號來同步從發(fā)送設(shè)備進入接收端的輸出位。
接口
圖1.兩個UART彼此直接通信
每個UART設(shè)備的兩個信號分別命名為:
● 發(fā)送器(Tx)
● 接收器(Rx)
每個設(shè)備的發(fā)送器和接收器線的主要作用是用于串行通信的串行數(shù)據(jù)的發(fā)送和接收。
圖2.帶數(shù)據(jù)總線的UART
發(fā)送UART連接到以并行形式發(fā)送數(shù)據(jù)的控制數(shù)據(jù)總線。然后,數(shù)據(jù)將在傳輸線路(導(dǎo)線)上一位一位地串行傳輸?shù)浇邮誙ART。反過來,對于接收設(shè)備,串行數(shù)據(jù)會被轉(zhuǎn)換為并行數(shù)據(jù)。
UART線用作發(fā)送和接收數(shù)據(jù)的通信介質(zhì)。請注意,UART設(shè)備具有專門用于發(fā)送或接收的發(fā)送和接收引腳。
對于UART和大多數(shù)串行通信,發(fā)送和接收設(shè)備需要將波特率設(shè)置為相同的值。波特率是指信息傳輸?shù)叫诺赖乃俾?。對于串行端口,設(shè)定的波特率將用作每秒傳輸?shù)淖畲笪粩?shù)。
表1總結(jié)了關(guān)于UART必須了解的幾點。
表1.UART概要
UART接口不使用時鐘信號來同步發(fā)送器和接收器設(shè)備,而是以異步方式傳輸數(shù)據(jù)。發(fā)送器根據(jù)其時鐘信號生成的位流取代了時鐘信號,接收器使用其內(nèi)部時鐘信號對輸入數(shù)據(jù)進行采樣。同步點是通過兩個設(shè)備的相同波特率來管理的。如果波特率不同,發(fā)送和接收數(shù)據(jù)的時序可能會受影響,導(dǎo)致數(shù)據(jù)處理過程出現(xiàn)不一致。允許的波特率差異最大值為10%,超過此值,位的時序就會脫節(jié)。
數(shù)據(jù)傳輸
在UART中,傳輸模式為數(shù)據(jù)包形式。連接發(fā)送器和接收器的機制包括串行數(shù)據(jù)包的創(chuàng)建和物理硬件線路的控制。數(shù)據(jù)包由起始位、數(shù)據(jù)幀、奇偶校驗位和停止位組成。
圖3.UART數(shù)據(jù)包
起始位
當不傳輸數(shù)據(jù)時,UART數(shù)據(jù)傳輸線通常保持高電壓電平。若要開始數(shù)據(jù)傳輸,發(fā)送UART會將傳輸線從高電平拉到低電平并保持1個時鐘周期。當接收UART檢測到高到低電壓躍遷時,便開始以波特率對應(yīng)的頻率讀取數(shù)據(jù)幀中的位。
圖4.起始位
數(shù)據(jù)幀
數(shù)據(jù)幀包含所傳輸?shù)膶嶋H數(shù)據(jù)。如果使用奇偶校驗位,數(shù)據(jù)幀長度可以是5位到8位。如果不使用奇偶校驗位,數(shù)據(jù)幀長度可以是9位。在大多數(shù)情況下,數(shù)據(jù)以最低有效位優(yōu)先方式發(fā)送。
圖5.數(shù)據(jù)幀
奇偶校驗
奇偶性描述數(shù)字是偶數(shù)還是奇數(shù)。通過奇偶校驗位,接收UART判斷傳輸期間是否有數(shù)據(jù)發(fā)生改變。電磁輻射、不一致的波特率或長距離數(shù)據(jù)傳輸都可能改變數(shù)據(jù)位。
接收UART讀取數(shù)據(jù)幀后,將計數(shù)值為1的位,檢查總數(shù)是偶數(shù)還是奇數(shù)。如果奇偶校驗位為0(偶數(shù)奇偶校驗),則數(shù)據(jù)幀中的1或邏輯高位總計應(yīng)為偶數(shù)。如果奇偶校驗位為1(奇數(shù)奇偶校驗),則數(shù)據(jù)幀中的1或邏輯高位總計應(yīng)為奇數(shù)。
當奇偶校驗位與數(shù)據(jù)匹配時,UART認為傳輸未出錯。但是,如果奇偶校驗位為0,而總和為奇數(shù),或者奇偶校驗位為1,而總和為偶數(shù),則UART認為數(shù)據(jù)幀中的位已改變。
圖6.奇偶校驗位
停止位
為了表示數(shù)據(jù)包結(jié)束,發(fā)送UART將數(shù)據(jù)傳輸線從低電壓驅(qū)動到高電壓并保持1到2位時間。
圖7.停止位
UART傳輸步驟
第一步:發(fā)送UART從數(shù)據(jù)總線并行接收數(shù)據(jù)。
圖8.數(shù)據(jù)總線至發(fā)送UART
第二步:發(fā)送UART將起始位、奇偶校驗位和停止位添加到數(shù)據(jù)幀。
圖9.Tx側(cè)的UART數(shù)據(jù)幀
第三步:從起始位到結(jié)束位,整個數(shù)據(jù)包以串行方式從發(fā)送UART送至接收UART。接收UART以預(yù)配置的波特率對數(shù)據(jù)線進行采樣。
圖10.UART傳輸
第四步:接收UART丟棄數(shù)據(jù)幀中的起始位、奇偶校驗位和停止位。
圖11.Rx側(cè)的UART數(shù)據(jù)幀
第五步:接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線。
圖12.接收UART至數(shù)據(jù)總線
幀協(xié)議
UART的一個關(guān)鍵特性是幀協(xié)議的實現(xiàn),但還沒有被充分使用。其主要用途和重要性是為每臺設(shè)備提供安全和保護方面的增值。
例如,當兩個設(shè)備使用相同的UART幀協(xié)議時,有可能在沒有檢查配置的情況下連接到同一個UART,設(shè)備會連接到不同的引腳,這可能導(dǎo)致系統(tǒng)故障。
另一方面,實現(xiàn)幀協(xié)議可確保安全性,因為需要根據(jù)設(shè)計幀協(xié)議解析接收到的信息。每個幀協(xié)議都經(jīng)過專門設(shè)計,以確保唯一性和安全性。
在設(shè)計幀協(xié)議時,設(shè)計人員可以給不同設(shè)備設(shè)置期望的報頭和報尾(包括CRC)。在圖13中,2個字節(jié)被設(shè)置為報頭的一部分。
圖13.UART幀協(xié)議示例
根據(jù)示例,您可以給您的設(shè)備設(shè)置獨有的報頭、報尾和CRC。
報頭1(H1為0xAB)和報頭2(H2為0xCD)
報頭是確定您是否在與正確的設(shè)備通信的唯一標識符。
命令(CMD)選擇
命令將取決于用于創(chuàng)建兩個設(shè)備之間通信的命令列表。
每個命令的數(shù)據(jù)長度(DL)
數(shù)據(jù)長度將取決于所選的命令。您可以根據(jù)所選的命令來使數(shù)據(jù)長度最大化,因此它會隨選擇而變化。在這種情況下,數(shù)據(jù)長度可以調(diào)整。
數(shù)據(jù)n(可變數(shù)據(jù))
數(shù)據(jù)是要從設(shè)備傳輸?shù)挠行лd荷。
報尾1(T1為0xE1)和報尾2(T2為0xE2)
報尾是在傳輸結(jié)束后添加的數(shù)據(jù)。就像報頭一樣,報尾也可以唯一標識符。
循環(huán)冗余校驗(CRC公式)
循環(huán)冗余校驗公式是一種附加的錯誤檢測模式,用于檢測原始數(shù)據(jù)是否發(fā)生意外更改。發(fā)送設(shè)備的CRC值必須始終等于接收器端的CRC計算值。
建議為每個UART設(shè)備實現(xiàn)幀協(xié)議來增加安全性。幀協(xié)議要求發(fā)送和接收設(shè)備使用相同的配置。
UART工作原理
使用任何硬件通信協(xié)議時,首先必須檢查數(shù)據(jù)手冊和硬件參考手冊。
以下是要遵循的步驟:
第一步:檢查設(shè)備的數(shù)據(jù)手冊接口。
圖14.微控制器數(shù)據(jù)手冊
第二步:在存儲器映射下面檢查UART地址。
圖15.微控制器存儲器映射
第三步:檢查UART端口的具體信息,例如工作模式、數(shù)據(jù)位長度、奇偶校驗位和停止位。
示例MCU提供了一個全雙工UART端口,其與PC標準UART完全兼容。UART端口提供一個簡化的UART接口用于連接其他外設(shè)或主機,支持全雙工、DMA和異步串行數(shù)據(jù)傳輸。UART端口支持5到8個數(shù)據(jù)位,以及無校驗、偶校驗和奇校驗。幀由一個半或兩個停止位終止。
第四步:檢查UART操作的詳細信息,包括波特率計算。波特率通過以下示例公式進行配置。此公式隨微控制器而異。
數(shù)據(jù)手冊中的UART端口詳細信息示例:
● 5到8個數(shù)據(jù)位
● 1、2或1 ½個停止位
● 無、偶數(shù)或奇數(shù)奇偶校驗
● 可編程過采樣率為4、8、16、32
● 波特率 = PCLK/((M + N/2048) × 2OSR + 2 × DIV
其中:
OSR(過采樣率)
UART_LCR2.OSR = 0至3
DIV(波特率分頻器)
UART_DIV = 1至65535
M(DIVM小數(shù)波特率M)
UART_FBR.DIVM = 1至3
N(DIVM小數(shù)波特率M)
UART_FBR.DIVN = 0至2047
第五步:對于波特率,務(wù)必檢查要使用的外設(shè)時鐘(PCLK)。此示例有26 MHz PCLK和16 MHz PCLK可用。請注意,OSR、DIV、DIVM和DIVN隨設(shè)備而異。
表2.基于26 MHz PCLK的波特率示例
表3.基于16 MHz PCLK的波特率示例
第六步:下一部分是檢查UART配置的詳細寄存器。了解計算波特率時的參數(shù),例如UART_LCR2、UART_DIV和UART_FBR。表4要列出所涉及的具體寄存器。
表4.UART寄存器描述
第七步:檢查每個寄存器下的詳細信息,代入值以計算波特率,然后開始實現(xiàn)UART。
為何重要?
當開發(fā)穩(wěn)健的、質(zhì)量驅(qū)動的產(chǎn)品時,熟悉UART通信協(xié)議非常有優(yōu)勢。知道如何僅使用兩條線發(fā)送數(shù)據(jù),以及如何傳輸整個數(shù)據(jù)包或有效載荷,將有助于確保數(shù)據(jù)正確無誤地發(fā)送和接收。UART是最常用的硬件通信協(xié)議,具備相關(guān)知識可以在將來的設(shè)計中實現(xiàn)設(shè)計靈活性。
用例
您可以將UART用于許多應(yīng)用,例如:
● 調(diào)試:在開發(fā)過程中及早發(fā)現(xiàn)系統(tǒng)錯誤很重要。添加UART便可從系統(tǒng)捕捉消息,幫助排除錯誤。
● 制造功能級追蹤:日志在制造業(yè)中非常重要。通過日志可確定功能,提醒操作員生產(chǎn)線上正在發(fā)生的事情。
● 客戶更新:軟件更新非常重要。完整的動態(tài)硬件和支持更新的軟件對于擁有完整系統(tǒng)至關(guān)重要。
● 測試/驗證:在產(chǎn)品離開制造過程之前進行驗證有助于為客戶提供最優(yōu)質(zhì)的產(chǎn)品。
參考電路
"UART通信基礎(chǔ)。" Electronics Hub,2017年7月。
Campbell, Scott。 "UART通信基礎(chǔ)。" 電路基礎(chǔ)。
"回到基礎(chǔ):通用異步接收器/發(fā)送器。" 關(guān)于電路的一切,2016年12月。
"何為UART協(xié)議?UART通信闡釋。" Arrow。
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。
推薦閱讀:
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計
- ADI電機運動控制解決方案 驅(qū)動智能運動新時代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 功率器件熱設(shè)計基礎(chǔ)(九)——功率半導(dǎo)體模塊的熱擴散
- 準 Z 源逆變器的設(shè)計
- 第12講:三菱電機高壓SiC芯片技術(shù)
- 一文看懂電壓轉(zhuǎn)換的級聯(lián)和混合概念
- 意法半導(dǎo)體推出首款超低功耗生物傳感器,成為眾多新型應(yīng)用的核心所在
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
單向可控硅
刀開關(guān)
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容
點膠設(shè)備
電池
電池管理系統(tǒng)
電磁蜂鳴器
電磁兼容
電磁爐危害
電動車
電動工具
電動汽車
電感
電工電路
電機控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險絲
電流表
電流傳感器
電流互感器
電路保護
電路圖