chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

uart通信的詳細講解

億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 2023-09-22 08:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是一種常用的串行通信協(xié)議,廣泛應(yīng)用于單片機或各種嵌入式設(shè)備之間的通信。本文將詳細介紹UART通信的基本原理、工作模式、波特率計算以及常見使用方式,幫助有一定單片機開發(fā)能力的人群更好地理解和應(yīng)用UART通信。

01

UART通信的異步通信機制

UART通信是一種異步串行通信方式,其基本原理是通過數(shù)據(jù)線上傳輸二進制數(shù)據(jù)位。UART通信系統(tǒng)主要由發(fā)送端和接收端兩部分組成,它們之間通過數(shù)據(jù)線進行數(shù)據(jù)傳輸。發(fā)送端將待發(fā)送的數(shù)據(jù)轉(zhuǎn)換為并行信號,然后通過驅(qū)動電路將并行信號轉(zhuǎn)換為串行信號,并通過發(fā)送電路將串行信號發(fā)送到數(shù)據(jù)線上。接收端則通過接收電路將數(shù)據(jù)線上的信號還原為并行信號,再通過解碼電路將并行信號轉(zhuǎn)換為原始數(shù)據(jù)位。

203bbdce-58de-11ee-9788-92fbcf53809c.jpg


UART通信采用異步通信方式,即發(fā)送端和接收端之間通過數(shù)據(jù)線進行數(shù)據(jù)傳輸。在異步通信中,發(fā)送端和接收端不需要同時處于激活狀態(tài),而是通過起始位和停止位來標(biāo)識數(shù)據(jù)幀的開始和結(jié)束。具體來說,當(dāng)發(fā)送端產(chǎn)生起始位后,發(fā)送一個數(shù)據(jù)位;然后等待接收端的起始位,如果接收到起始位,則繼續(xù)發(fā)送下一個數(shù)據(jù)位;如果沒有接收到起始位,則認(rèn)為數(shù)據(jù)幀傳輸失敗。同樣,當(dāng)接收端產(chǎn)生停止位后,發(fā)送一個校驗位;然后等待發(fā)送端的停止位,如果接收到停止位,則認(rèn)為數(shù)據(jù)幀傳輸成功。

204f10c2-58de-11ee-9788-92fbcf53809c.png

02

UART的波特率

波特率表示單位時間內(nèi)通過線路傳輸?shù)亩M制數(shù)據(jù)的位數(shù),通常用bps(bits per second)表示。例如,如果波特率為9600bps,則每秒鐘可以傳輸9600個比特位的數(shù)據(jù)。


串口傳輸數(shù)據(jù)的波特率是單片機的時鐘系統(tǒng)來產(chǎn)生的,因此它和單片機的系統(tǒng)時鐘存在算式關(guān)系。

波特率= (16 * 時鐘頻率) / (32 * 采樣時間) + (1 * 時鐘頻率) / (32 * 采樣時間) - (1 * 時鐘頻率) / (64* 采樣時間)

其中,采樣時間指從上一次起始位到本次起始位之間的時間間隔。例如,如果采樣時間為10ns,則波特率為9600bps。


常見的波特率有2400、4800、9600、19200、38400、57600、115200……它們都可是2400的整數(shù)倍,因此不同的波特率可以通過分頻器來產(chǎn)生?,F(xiàn)在的單片機雖然都有著不同的頻率,常見的有32MHz、48MHz和144MHz,通常它們都會有一個外部系統(tǒng)時鐘為單片機的外圍設(shè)備提供基礎(chǔ)時鐘頻率(如1MHz),UART產(chǎn)生波特率也是從該時鐘產(chǎn)生時鐘信號。


需要注意的是,在實際使用中,時鐘頻率可能會受到一些因素的影響,如晶振漂移、電源噪聲等。因此,為了保證數(shù)據(jù)傳輸?shù)恼_性和可靠性,建議在設(shè)計UART通信系統(tǒng)時使用外部晶振或時鐘發(fā)生器,并對其進行校準(zhǔn)和補償。

03

停止位和奇偶校驗

在UART異步通信中,停止位用于表示數(shù)據(jù)幀的結(jié)束。停止位可以是1個或2個比特位。當(dāng)停止位為1個比特位時,每個數(shù)據(jù)字節(jié)的后面都添加一個額外的時間間隔,以補償時鐘抖動和其他因素引起的誤差。例如,如果波特率為9600bps,則每個字節(jié)的時間間隔為4ms,因此每個停止位的時間間隔為4ms / 8 = 0.5ms。

206cc13a-58de-11ee-9788-92fbcf53809c.png

當(dāng)停止位為2個比特位時,每個數(shù)據(jù)字節(jié)的后面都添加兩個額外的時間間隔,即每個字節(jié)的時間間隔為4ms / (8 + 4) = 0.3125ms。這種模式適用于需要更高精度的數(shù)據(jù)傳輸場景。


奇偶校驗是一種常用的錯誤檢測方法,可以檢測數(shù)據(jù)傳輸過程中的錯誤和丟失。在UART通信中,可以通過設(shè)置奇偶校驗位來提高數(shù)據(jù)傳輸?shù)恼_性和可靠性。


需要注意的是,奇偶校驗位只能檢測數(shù)據(jù)傳輸過程中的錯誤和丟失,而不能保證數(shù)據(jù)的完整性和正確性。因此,在使用UART通信時,還需要采取其他措施來確保數(shù)據(jù)傳輸?shù)恼_性和可靠性。

04

UART的輪詢收發(fā)和中斷收發(fā)

前面我們講過,UART通信就是把一個字節(jié)的數(shù)據(jù)拆分成若干bit位,然后一個bit一個bit的發(fā)送。當(dāng)一個字節(jié)的數(shù)據(jù)被送進UART發(fā)送器后,這個字節(jié)被轉(zhuǎn)換成bit位,UART發(fā)送這個字節(jié)后還要產(chǎn)生停止位,此時UART發(fā)送器已經(jīng)空閑,可以繼續(xù)發(fā)送下一個字節(jié)。通常UART發(fā)送器發(fā)送完一個字節(jié)后會產(chǎn)生一個空閑狀態(tài),輪詢式發(fā)送就是等待這個空閑狀態(tài)并發(fā)送下一個字節(jié)。


UART接收也是如此,UART接收器收完一個字節(jié)并收到停止位信號時,就會向單片機的UART數(shù)據(jù)寄存器保存剛收到的數(shù)據(jù),并產(chǎn)生一個收到標(biāo)志位,輪詢該標(biāo)志位就可以接收到該字節(jié)數(shù)據(jù)。


但是在單片機系統(tǒng)中經(jīng)常不止UART收發(fā)應(yīng)用,這時就要用到中斷收發(fā)。通常單片機的UART收發(fā)都有RX收到中斷和TX完畢中斷。中斷發(fā)送時,UART發(fā)送器是空閑狀態(tài),此時往發(fā)送器里面寫入第一個字節(jié),該字節(jié)傳輸完畢后產(chǎn)生TX完畢中斷,在TX完畢中斷的服務(wù)函數(shù)中再填入后續(xù)字節(jié)并產(chǎn)生下一個中斷,最后直到把需要傳輸?shù)淖止?jié)都傳完為止。中斷接收時,UART接收器收到字節(jié)后會產(chǎn)生RX收到中斷,在RX收到中斷服務(wù)函數(shù)中讀取收到的字節(jié),每次中斷時都讀取收到的字節(jié)。

207f10a6-58de-11ee-9788-92fbcf53809c.png

05

帶數(shù)據(jù)緩存的UART收發(fā)

在很多單片機系統(tǒng)中,都會提供UART Read和UART Write這樣的接口函數(shù)。一些高級的單片機甚至還有UART Read Callback和UART Write Callback這樣的回調(diào)函數(shù)來收發(fā)數(shù)據(jù)。通常很多單片機的數(shù)據(jù)處理能力相對UART通信來說要快得多,因此像采用上述接口函數(shù)的單片機系統(tǒng)都使用了數(shù)據(jù)緩存來輔助UART收發(fā)。常見的UART收發(fā)方式有這幾種:


數(shù)據(jù)隊列(Queue)收發(fā)

這種方式適合大多數(shù)單片機,只要有中斷就行。使用UART Write發(fā)送數(shù)據(jù)時,數(shù)據(jù)并不是直接寫入到UART發(fā)送器,而是放進了一個環(huán)形緩沖區(qū)中。然后在UART TX發(fā)送完畢中斷服務(wù)函數(shù)中讀取環(huán)形緩沖區(qū)并把讀到的字節(jié)送入UART發(fā)送器,然后等待TX發(fā)送完畢中斷服務(wù)函數(shù)再次執(zhí)行時送入下一個字節(jié),直到把環(huán)形緩沖區(qū)的數(shù)據(jù)送完為止。環(huán)形緩沖區(qū)通常有一個標(biāo)記頭和尾的變量,只要頭和尾的變量值不相等就說明緩沖區(qū)有數(shù)據(jù)。使用UART Read接收數(shù)據(jù)時,也不是直接從UART接收器中獲取數(shù)據(jù),而是從環(huán)形緩沖區(qū)中獲取數(shù)據(jù)。UART RX收到中斷服務(wù)函數(shù)中把UART接收器收到的字節(jié)送進環(huán)形緩沖區(qū),單片機執(zhí)行UART Read時獲取到的數(shù)據(jù)是環(huán)形緩沖區(qū)的數(shù)據(jù),這樣可以保證單片機程序不用一直等待UART接收器。


這種設(shè)計的優(yōu)點是可以有效地處理實時數(shù)據(jù),避免了數(shù)據(jù)的丟失。但是,如果Queue的大小設(shè)置不當(dāng),可能會導(dǎo)致數(shù)據(jù)的溢出。因此,我們需要根據(jù)實際的應(yīng)用場景來合理地設(shè)置Queue的大小。

帶硬件FIFO的UART收發(fā)

很多先進的單片機的UART收發(fā)用上了硬件FIFO。沒有硬件FIFO的單片機在收發(fā)數(shù)據(jù)時每收發(fā)一個字節(jié)就要執(zhí)行一次中斷函數(shù),在高波特率通信時單片機會頻繁進入中斷,從而影響單片機主任務(wù)的處理。而硬件FIFO則可以緩解這種矛盾。例如單片機的UART FIFO是16字節(jié),單片機在發(fā)送數(shù)據(jù)時一次最多可以傳輸16字節(jié)數(shù)據(jù),等16字節(jié)數(shù)據(jù)發(fā)送完畢后才產(chǎn)生UART TX發(fā)送完畢中斷。接收數(shù)據(jù)時通常是“半滿”中斷和“超時”中斷,即接收FIFO中的字節(jié)數(shù)超過8字節(jié),或者接收FIFO不為空但是超過1字節(jié)的時間內(nèi)沒有收到新的字節(jié)數(shù)據(jù),產(chǎn)生一次UART RX接收中斷。通常帶硬件FIFO的UART會和數(shù)據(jù)隊列的方式相結(jié)合使用,在高波特率通信下傳輸效率更高。

DMA的UART收發(fā)

DMA(Direct Memory Access)是一種可以將計算機的某個存儲區(qū)域直接映射到內(nèi)存地址空間的技術(shù),從而實現(xiàn)對內(nèi)存和其他外設(shè)的統(tǒng)一訪問。當(dāng)UART接收到數(shù)據(jù)時,數(shù)據(jù)會被直接寫入到DMA控制的內(nèi)存區(qū)域中,然后觸發(fā)中斷。在中斷服務(wù)程序中,我們可以從DMA控制的內(nèi)存區(qū)域中取出數(shù)據(jù),進行必要的處理,然后再通過UART發(fā)送出去。

20895778-58de-11ee-9788-92fbcf53809c.png

DMA傳輸


使用DMA進行UART傳輸對連續(xù)多條數(shù)據(jù)的傳輸幫助特別大,例如前面提到的UART Read Callback和UART Write Callback回調(diào)函數(shù)的方式。連續(xù)發(fā)送多條數(shù)據(jù)流時,可以把數(shù)據(jù)流放在單片機的多個不同的緩沖區(qū),然后DMA直接指向緩沖區(qū)地址,待DMA傳輸完畢后產(chǎn)生UART Write Callback,然后在UART Write Callback中把DMA指向下一個緩沖區(qū)地址。接收數(shù)據(jù)時也可以預(yù)約一個接收緩沖區(qū),DMA傳輸?shù)臄?shù)據(jù)傳輸?shù)皆摼彌_區(qū),傳輸滿了后產(chǎn)生UART Read Callback再指向下一個接收緩沖區(qū),同時可以讓單片機主程序處理已收滿數(shù)據(jù)的緩沖區(qū)的內(nèi)容。

本文詳細介紹了UART通信的基本原理、波特率計算、工作模式以及常見的使用方式,幫助有一定單片機開發(fā)能力的人群更好地理解和應(yīng)用UART通信。掌握UART通信技術(shù),可以為單片機控制系統(tǒng)的設(shè)計和應(yīng)用帶來很大的便利。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6074

    文章

    45322

    瀏覽量

    662993
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3793

    瀏覽量

    110524
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6313

    瀏覽量

    139525
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1304

    瀏覽量

    106064
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    UART的優(yōu)點介紹

    實施簡單方便: UART 通信實施起來很簡單,只需要兩根線即可實現(xiàn)完整的雙工數(shù)據(jù)傳輸(TX 和 RX 線)。這種簡單性使得系統(tǒng)設(shè)置變得簡單且經(jīng)濟高效,尤其是在資源受限的嵌入式系統(tǒng)中。 全雙工通信
    發(fā)表于 11-27 06:29

    UART 串口通信還能玩出什么花樣?

    還記得打印機、鼠標(biāo)和調(diào)制解調(diào)器曾經(jīng)使用粗線和笨重連接器嗎?那些必須擰進電腦里的連接器?這些設(shè)備很可能使用UART與電腦通信。雖然USB幾乎完全取代了那些老式的線纜和連接器,但UART絕非過時之物。你
    的頭像 發(fā)表于 11-24 19:05 ?142次閱讀
    <b class='flag-5'>UART</b> 串口<b class='flag-5'>通信</b>還能玩出什么花樣?

    UART通信中出現(xiàn)隨機亂碼怎么解決?

    UART 通信中出現(xiàn)隨機亂碼
    發(fā)表于 11-21 07:05

    多路UART數(shù)據(jù)轉(zhuǎn)發(fā)芯片 支持1主4從UART接口 UART擴展芯片

    -40℃ 至 85℃ 的工業(yè)級溫度范圍,能夠在嚴(yán)苛環(huán)境下保持穩(wěn)定通信。該芯片提供 1 個主 UART 和 4 個從 UART,共 5 個獨立接口。主接口最高通信速率可達 460800
    的頭像 發(fā)表于 11-12 10:33 ?133次閱讀

    基于UART通訊控制TMC2208/2209模塊驅(qū)動兩相四線步進電機

    本文將介紹如何通過UART串口通信控制TMC2208/2209步進電機驅(qū)動模塊驅(qū)動42步進電機。從TMC2209詳細的說明的寄存器配置方法說明、常用指令說明、模塊的串口連接方式、電流、延遲時間等關(guān)鍵參數(shù)的計算方法等方面展開對TM
    的頭像 發(fā)表于 11-10 19:33 ?393次閱讀
    基于<b class='flag-5'>UART</b>通訊控制TMC2208/2209模塊驅(qū)動兩相四線步進電機

    RVMCU課堂「13」: 手把手教你玩轉(zhuǎn)RVSTAR—UART通信

    小實驗,簡單講解UART串口通信的應(yīng)用方法。 系統(tǒng)環(huán)境 Windows 10-64bit 軟件平臺 [size=14.6667px]NucleiStudio IDE 202102版或
    發(fā)表于 10-31 07:02

    基于FPGA開發(fā)板TSP的串口通信設(shè)計

    本文詳細介紹基于Terasic FPGA開發(fā)板TSP(又名C5P和OSK)和其板載CP2102N USB-UART橋接芯片的串口通信系統(tǒng)設(shè)計與實現(xiàn)。系統(tǒng)采用Verilog HDL編寫UART
    的頭像 發(fā)表于 10-15 11:05 ?4095次閱讀
    基于FPGA開發(fā)板TSP的串口<b class='flag-5'>通信</b>設(shè)計

    微五科技 CF5010RBT60 開發(fā)板與廬山派開發(fā)板通過 UART 串口通信詳細步驟

    以下是微五科技CF5010RBT60開發(fā)板與廬山派開發(fā)板通過UART串口通信詳細步驟: 一、硬件連接 確定通信接口 CF5010RBT60:使用USART1(兼容STM32F103
    發(fā)表于 09-05 20:51

    UART 擴展芯片 數(shù)據(jù)轉(zhuǎn)發(fā)多串口擴展 1主4從,高效通信

    uart
    穩(wěn)控自動化
    發(fā)布于 :2025年08月11日 14:20:36

    芯知識|廣州唯創(chuàng)電子語音芯片UART通信協(xié)議解析:發(fā)碼長度與校驗碼計算

    一、UART通信協(xié)議概述UART(通用異步收發(fā)器)是一種廣泛應(yīng)用于嵌入式系統(tǒng)的串行通信協(xié)議,其核心特點為無需時鐘同步,通過起始位、數(shù)據(jù)位、校驗位和停止位構(gòu)成數(shù)據(jù)幀。在語音芯片應(yīng)用中,
    的頭像 發(fā)表于 05-27 08:48 ?509次閱讀
    芯知識|廣州唯創(chuàng)電子語音芯片<b class='flag-5'>UART</b><b class='flag-5'>通信</b>協(xié)議解析:發(fā)碼長度與校驗碼計算

    ElfBoard嵌入式教育科普|UART接口全面解析

    掌握UART通信接口的深入知識,對嵌入式初學(xué)者而言,不僅能夠深化對通信協(xié)議與方式的認(rèn)知,增強調(diào)試技巧及通信接口設(shè)計能力,還能拓寬應(yīng)用范疇并培育系統(tǒng)級思考方式。因此本文將對
    的頭像 發(fā)表于 03-10 09:29 ?1575次閱讀
    ElfBoard嵌入式教育科普|<b class='flag-5'>UART</b>接口全面解析

    WTVxxxx系列語音芯片UART通信說明書V1

    WTVxxxx系列語音芯片UART通信說明書V1
    發(fā)表于 03-06 08:26 ?0次下載

    L298電機驅(qū)動模塊的詳細講解

    電動小車的組成 ? 一個電動小車整體的運行性能,首先 取決于它的電源模塊和電機驅(qū)動模塊。 ? 電機驅(qū)動模塊主要功能:驅(qū)動小車輪子 轉(zhuǎn)動,使小車行進。 ? 電源模塊:顧名思義,就是為整個系統(tǒng) 提供動力支持的部分 下載PDF文檔了解L298電機驅(qū)動模塊詳細講解
    發(fā)表于 02-26 15:53

    開源直接用!UDP-UART數(shù)據(jù)透傳來了

    今天就來分享一下UDP-UART透傳示例,源碼開放,可根據(jù)實際需求靈活應(yīng)用。 一、UDP-UART透傳簡介 UDP-UART透傳是一種將UDP數(shù)據(jù)流直接傳輸?shù)?b class='flag-5'>UART接口的
    的頭像 發(fā)表于 02-05 17:14 ?556次閱讀
    開源直接用!UDP-<b class='flag-5'>UART</b>數(shù)據(jù)透傳來了

    USB/UART橋接器的應(yīng)用優(yōu)勢

    這一切都要歸功于USB/UART橋接器——它們是嵌入式系統(tǒng)中的強大工具。無論您是從事調(diào)試、物聯(lián)網(wǎng)還是工業(yè)應(yīng)用,了解此橋接器都可以簡化硬件集成并提高通信可靠性。以下是USB/UART橋接如何簡化這些連接以及一些現(xiàn)實用例的說明(見下
    的頭像 發(fā)表于 12-03 13:52 ?1172次閱讀
    USB/<b class='flag-5'>UART</b>橋接器的應(yīng)用優(yōu)勢