99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

常見的UART收發(fā)方式

星星科技指導(dǎo)員 ? 來源:億佰特 ? 作者:億佰特 ? 2024-02-19 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1、數(shù)據(jù)隊(duì)列(Queue)收發(fā)

這種方式適合大多數(shù)單片機(jī),只要有中斷就行。使用UART Write發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)并不是直接寫入到UART發(fā)送器,而是放進(jìn)了一個(gè)環(huán)形緩沖區(qū)中。然后在UART TX發(fā)送完畢中斷服務(wù)函數(shù)中讀取環(huán)形緩沖區(qū)并把讀到的字節(jié)送入U(xiǎn)ART發(fā)送器,然后等待TX發(fā)送完畢中斷服務(wù)函數(shù)再次執(zhí)行時(shí)送入下一個(gè)字節(jié),直到把環(huán)形緩沖區(qū)的數(shù)據(jù)送完為止。環(huán)形緩沖區(qū)通常有一個(gè)標(biāo)記頭和尾的變量,只要頭和尾的變量值不相等就說明緩沖區(qū)有數(shù)據(jù)。使用UART Read接收數(shù)據(jù)時(shí),也不是直接從UART接收器中獲取數(shù)據(jù),而是從環(huán)形緩沖區(qū)中獲取數(shù)據(jù)。UART RX收到中斷服務(wù)函數(shù)中把UART接收器收到的字節(jié)送進(jìn)環(huán)形緩沖區(qū),單片機(jī)執(zhí)行UART Read時(shí)獲取到的數(shù)據(jù)是環(huán)形緩沖區(qū)的數(shù)據(jù),這樣可以保證單片機(jī)程序不用一直等待UART接收器。這種設(shè)計(jì)的優(yōu)點(diǎn)是可以有效地處理實(shí)時(shí)數(shù)據(jù),避免了數(shù)據(jù)的丟失。但是,如果Queue的大小設(shè)置不當(dāng),可能會(huì)導(dǎo)致數(shù)據(jù)的溢出。因此,我們需要根據(jù)實(shí)際的應(yīng)用場(chǎng)景來合理地設(shè)置Queue的大小。

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

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

3、帶DMA的UART收發(fā)

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

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

審核編輯:黃飛

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

    關(guān)注

    6067

    文章

    44989

    瀏覽量

    650362
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1276

    瀏覽量

    103917
  • 數(shù)據(jù)緩存
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    7338
  • 發(fā)送器
    +關(guān)注

    關(guān)注

    1

    文章

    261

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    uart通信的詳細(xì)講解

    UART通信的基本原理、工作模式、波特率計(jì)算以及常見使用方式,幫助有一定單片機(jī)開發(fā)能力的人群更好地理解和應(yīng)用UART通信。01UART通信的
    的頭像 發(fā)表于 09-22 08:22 ?3592次閱讀
    <b class='flag-5'>uart</b>通信的詳細(xì)講解

    RS485和RS232uart中斷方式的半雙工收發(fā)數(shù)據(jù) 接到數(shù)據(jù)原樣返回

    RS485和RS232 uart中斷方式的半雙工收發(fā)數(shù)據(jù) 接到數(shù)據(jù)原樣返回的c語言代碼有什么區(qū)別嗎???我現(xiàn)在有一個(gè)RS232C語言執(zhí)行的uart中斷
    發(fā)表于 09-18 16:59

    UART阻塞方式收發(fā)

    博主能力有限,有錯(cuò)誤望大佬指出0x00 文章內(nèi)容:UART阻塞方式收發(fā)UART中斷方式收發(fā)
    發(fā)表于 08-10 07:32

    STM32 UART串口收發(fā)與中斷方式接收環(huán)境

    STM32 UART串口收發(fā)與中斷方式接收環(huán)境:1、STM32CubeMX 5.32、Atollic TrueSTUDIO for STM32 9.3.03、戰(zhàn)艦迷你板(stm32f103rb)(一
    發(fā)表于 08-13 08:49

    如何去實(shí)現(xiàn)UART阻塞方式收發(fā)數(shù)據(jù)呢

    如何去實(shí)現(xiàn)UART阻塞方式收發(fā)數(shù)據(jù)呢?如何去實(shí)現(xiàn)UART中斷方式收發(fā)數(shù)據(jù)呢?
    發(fā)表于 12-08 06:50

    UART異步通信方式引腳連接方法是什么?

    常見的串行通信接口有哪些?UART異步通信方式引腳連接方法是什么?UART異步通信方式特點(diǎn)是什么?
    發(fā)表于 12-16 07:16

    HAL庫中UART的三種收發(fā)方式是什么?

    HAL庫中UART的三種收發(fā)方式是什么?
    發(fā)表于 02-18 06:33

    UART收發(fā)器設(shè)計(jì)實(shí)例

    UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)是廣泛使用的異步串行數(shù)據(jù)通信協(xié)議。下面首先介紹 UART 硬件接口及電平轉(zhuǎn)換電路,分析
    發(fā)表于 07-22 11:24 ?113次下載
    <b class='flag-5'>UART</b><b class='flag-5'>收發(fā)</b>器設(shè)計(jì)實(shí)例

    通用異步收發(fā)器(UART

    通用異步收發(fā)器(UART
    發(fā)表于 10-11 14:53 ?21次下載
    通用異步<b class='flag-5'>收發(fā)</b>器(<b class='flag-5'>UART</b>

    UART收發(fā)數(shù)據(jù)操作介紹

    Curiosity PIC32MZEF學(xué)習(xí)教程之:如何通過UART收發(fā)數(shù)據(jù)PIC32MZEF一共有6個(gè)UART端口,資源還是比較豐富的。UART是比較常用的外設(shè),特別是在調(diào)試的時(shí)候,串
    的頭像 發(fā)表于 02-01 03:27 ?1.4w次閱讀
    <b class='flag-5'>UART</b>的<b class='flag-5'>收發(fā)</b>數(shù)據(jù)操作介紹

    UART收發(fā)器的設(shè)計(jì)實(shí)例詳細(xì)說明

    UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)是廣泛使用的異步串行數(shù)據(jù)通信協(xié)議。下面首先介紹 UART 硬件接口及電平轉(zhuǎn)換電路
    發(fā)表于 12-27 08:00 ?4次下載
    <b class='flag-5'>UART</b><b class='flag-5'>收發(fā)</b>器的設(shè)計(jì)實(shí)例詳細(xì)說明

    STM8S_ 004_UART基本收發(fā)數(shù)據(jù)

    STM8S_004_UART基本收發(fā)數(shù)據(jù)
    的頭像 發(fā)表于 03-20 10:41 ?4993次閱讀
    STM8S_ 004_<b class='flag-5'>UART</b>基本<b class='flag-5'>收發(fā)</b>數(shù)據(jù)

    【CubeIDE】STM32 HAL庫史上最詳細(xì)教程(一):UART串口收發(fā)

    博主能力有限,有錯(cuò)誤望大佬指出  0x00 文章內(nèi)容:UART阻塞方式收發(fā)UART中斷方式
    發(fā)表于 11-23 17:51 ?12次下載
    【CubeIDE】STM32 HAL庫史上最詳細(xì)教程(一):<b class='flag-5'>UART</b>串口<b class='flag-5'>收發(fā)</b>

    UART通用異步收發(fā)器原理是什么

    UART通用異步收發(fā)器(串口通信) 一般來說,開發(fā)過程中我們通常使用串口進(jìn)行DEBUG調(diào)試。 原理 通用異步收發(fā)傳輸器(Universal Asynchronous Receiver
    的頭像 發(fā)表于 11-09 17:32 ?1105次閱讀
    <b class='flag-5'>UART</b>通用異步<b class='flag-5'>收發(fā)</b>器原理是什么

    常見通信的底層數(shù)據(jù)傳輸原理(UART、SPI、I2C)

    UART:Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器。 UART串口是最常見的一種串口通信,下面是串口連接上位機(jī)
    發(fā)表于 01-15 10:41 ?1559次閱讀
    <b class='flag-5'>常見</b>通信的底層數(shù)據(jù)傳輸原理(<b class='flag-5'>UART</b>、SPI、I2C)