了解通用異步接收器/發(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í),通常會忽略幀協(xié)議的適當(dāng)實(shí)現(xiàn)。
根據(jù)定義,UART是一種硬件通信協(xié)議,以可配置的速度使用異步串行通信。異步意味著沒有時(shí)鐘信號來同步從發(fā)送設(shè)備進(jìn)入接收端的輸出位。
接口
圖1.兩個(gè)UART彼此直接通信
每個(gè)UART設(shè)備的兩個(gè)信號分別命名為:
● 發(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。反過來,對于接收設(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必須了解的幾點(diǎn)。
表1.UART概要
UART接口不使用時(shí)鐘信號來同步發(fā)送器和接收器設(shè)備,而是以異步方式傳輸數(shù)據(jù)。發(fā)送器根據(jù)其時(shí)鐘信號生成的位流取代了時(shí)鐘信號,接收器使用其內(nèi)部時(shí)鐘信號對輸入數(shù)據(jù)進(jìn)行采樣。同步點(diǎn)是通過兩個(gè)設(shè)備的相同波特率來管理的。如果波特率不同,發(fā)送和接收數(shù)據(jù)的時(shí)序可能會受影響,導(dǎo)致數(shù)據(jù)處理過程出現(xiàn)不一致。允許的波特率差異最大值為10%,超過此值,位的時(shí)序就會脫節(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會將傳輸線從高電平拉到低電平并保持1個(gè)時(shí)鐘周期。當(dāng)接收UART檢測到高到低電壓躍遷時(shí),便開始以波特率對應(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ū)動到高電壓并保持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ù)配置的波特率對數(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),但還沒有被充分使用。其主要用途和重要性是為每臺設(shè)備提供安全和保護(hù)方面的增值。
例如,當(dāng)兩個(gè)設(shè)備使用相同的UART幀協(xié)議時(shí),有可能在沒有檢查配置的情況下連接到同一個(gè)UART,設(shè)備會連接到不同的引腳,這可能導(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)識符。
命令(CMD)選擇
命令將取決于用于創(chuàng)建兩個(gè)設(shè)備之間通信的命令列表。
每個(gè)命令的數(shù)據(jù)長度(DL)
數(shù)據(jù)長度將取決于所選的命令。您可以根據(jù)所選的命令來使數(shù)據(jù)長度最大化,因此它會隨選擇而變化。在這種情況下,數(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)識符。
循環(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ù)手冊和硬件參考手冊。
以下是要遵循的步驟:
第一步:檢查設(shè)備的數(shù)據(jù)手冊接口。
圖14.微控制器數(shù)據(jù)手冊
第二步:在存儲器映射下面檢查UART地址。
圖15.微控制器存儲器映射
第三步:檢查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ù)手冊中的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
第五步:對于波特率,務(wù)必檢查要使用的外設(shè)時(shí)鐘(PCLK)。此示例有26 MHz PCLK和16 MHz PCLK可用。請注意,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ū)動的產(chǎn)品時(shí),熟悉UART通信協(xié)議非常有優(yōu)勢。知道如何僅使用兩條線發(fā)送數(shù)據(jù),以及如何傳輸整個(gè)數(shù)據(jù)包或有效載荷,將有助于確保數(shù)據(jù)正確無誤地發(fā)送和接收。UART是最常用的硬件通信協(xié)議,具備相關(guān)知識可以在將來的設(shè)計(jì)中實(shí)現(xiàn)設(shè)計(jì)靈活性。
用例
您可以將UART用于許多應(yīng)用,例如:
● 調(diào)試:在開發(fā)過程中及早發(fā)現(xiàn)系統(tǒng)錯(cuò)誤很重要。添加UART便可從系統(tǒng)捕捉消息,幫助排除錯(cuò)誤。
● 制造功能級追蹤:日志在制造業(yè)中非常重要。通過日志可確定功能,提醒操作員生產(chǎn)線上正在發(fā)生的事情。
● 客戶更新:軟件更新非常重要。完整的動態(tài)硬件和支持更新的軟件對于擁有完整系統(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)問題,請聯(lián)系小編進(jìn)行處理。
推薦閱讀:
特別推薦
- 克服碳化硅制造挑戰(zhàn),助力未來電力電子應(yīng)用
- 了解交流電壓的產(chǎn)生
- 單結(jié)晶體管符號和結(jié)構(gòu)
- 英飛凌推出用于汽車應(yīng)用識別和認(rèn)證的新型指紋傳感器IC
- Vishay推出負(fù)載電壓達(dá)100 V的業(yè)內(nèi)先進(jìn)的1 Form A固態(tài)繼電器
- 康佳特推出搭載AMD 銳龍嵌入式 8000系列的COM Express緊湊型模塊
- 村田推出3225尺寸車載PoC電感器LQW32FT_8H系列
技術(shù)文章更多>>
- “扒開”超級電容的“外衣”,看看超級電容“超級”在哪兒
- DigiKey 誠邀各位參會者蒞臨SPS 2024?展會參觀交流,體驗(yàn)最新自動化產(chǎn)品
- 提前圍觀第104屆中國電子展高端元器件展區(qū)
- 高性能碳化硅隔離柵極驅(qū)動器如何選型,一文告訴您
- 貿(mào)澤電子新品推薦:2024年第三季度推出將近7000個(gè)新物料
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
音頻IC
音頻SoC
音頻變壓器
引線電感
語音控制
元件符號
元器件選型
云電視
云計(jì)算
云母電容
真空三極管
振蕩器
振蕩線圈
振動器
振動設(shè)備
震動馬達(dá)
整流變壓器
整流二極管
整流濾波
直流電機(jī)
智能抄表
智能電表
智能電網(wǎng)
智能家居
智能交通
智能手機(jī)
中電華星
中電器材
中功率管
中間繼電器