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