衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32串口收發數據為什么要使用DMA

GReq_mcu168 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2022-02-12 13:22 ? 次閱讀

直接存儲器訪問(Direct Memory Access),簡稱DMA。DMA是CPU一個用于數據從一個地址空間到另一地址空間“搬運”(拷貝)的組件,數據拷貝過程不需CPU干預,數據拷貝結束則通知CPU處理。因此,大量數據拷貝時,使用DMA可以釋放CPU資源,相關文章推薦:詳解STM32中的DMA原理。

在STM32控制器中,芯片采用Cortex-M3架構,總線結構有了很大的優化,DMA占用另外的總線,并不會與CPU的系統總線發生沖突。也就是說,DMA的使用不會影響CPU的運行速度。

STM32串口收發數據為什么要使用DMA

DMA數據拷貝過程,典型的有:

內存—>內存,內存間拷貝

外設—>內存,如uart、spi、i2c等總線接收數據過程

內存—>外設,如uart、spi、i2c等總線發送數據過程

串口有必要使用DMA嗎

串口(UART)是一種低速的串行異步通信,適用于低速通信場景,通常使用的波特率小于或等于115200bps。PC與STM32單片機通信實例推薦:按下按鍵,通過串口發送數據實例。

對于小于或者等于115200bps波特率的,而且數據量不大的通信場景,一般沒必要使用DMA,或者說使用DMA并未能充分發揮出DMA的作用。

對于數量大,或者波特率提高時,必須使用DMA以釋放CPU資源,因為高波特率可能帶來CPU資源過度浪費的問題。

舉個例子

對于發送,使用循環發送,可能阻塞線程,需要消耗大量CPU資源“搬運”數據,浪費CPU。對于發送,使用中斷發送,不會阻塞線程,但需浪費大量中斷資源,CPU頻繁響應中斷。以115200bps波特率,1s大約傳輸11520字節,大約69us需響應一次中斷,如波特率再提高,將消耗更多CPU資源。

對于接收,如仍采用傳統的中斷模式接收,同樣會因為頻繁中斷導致消耗大量CPU資源。

因此,在高波特率傳輸場景下,串口非常有必要使用DMA。

原文標題:STM32串口收發數據為什么要使用DMA?

文章出處:【微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    51170

    瀏覽量

    427239
  • 控制器
    +關注

    關注

    112

    文章

    16445

    瀏覽量

    179446
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357556

原文標題:STM32串口收發數據為什么要使用DMA?

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RS232串口連接方式及注意事項

    交換。 RS-232串口簡介 RS-232標準最初由電子工業聯盟(EIA)在1960年制定,用于定義串行通信的電氣特性、信號定時和數據格式。RS-232串口使用25針的D型連接器(DB-25),但后來更常用的是9針的D型連接器(
    的頭像 發表于 12-10 16:23 ?1661次閱讀

    LS10串口數據庫模塊外擴SD卡功能

    LS10串口數據庫模塊外擴SD卡功能
    的頭像 發表于 11-23 09:42 ?255次閱讀
    LS10<b class='flag-5'>串口</b><b class='flag-5'>數據</b>庫模塊外擴SD卡功能

    快速實現C2000串口程序升級

    電子發燒友網站提供《快速實現C2000串口程序升級.pdf》資料免費下載
    發表于 08-29 10:50 ?1次下載
    快速實現C2000<b class='flag-5'>串口</b>程序升級

    使用stm32f205和esp32之間進行串口通訊時遇到的疑問求解

    時間,接收超時時間設置為50ms,測量最小50ms,最大到了96ms。 stm32f205串口: 使用dma進行收據收發,可以保證通訊速度,50ms
    發表于 06-19 07:53

    用esp32的串口Stm32F407串口通訊,通過TJA轉CAN,結果esp32串口讀到的一直是自己發的數據,為什么?

    我用esp32的串口Stm32F407串口通訊,通過TJA轉CAN。結果esp32串口讀到的一直是自己發的數據,各位大神給我看看哪里有問題
    發表于 06-19 07:00

    485串口可以用can協議嗎

    一、引言 隨著工業自動化和智能控制技術的發展,通信協議在設備間數據傳輸和控制中扮演著越來越重要的角色。485串口和CAN協議是兩種常見的通信協議,它們在不同的應用場景中發揮著重要作用。本文將對這兩種
    的頭像 發表于 06-16 09:21 ?1441次閱讀

    ESP32C3串口可以使用DMA收發嗎?

    ESP32C3串口可以使用DMA收發嗎,如果可以,有沒有相關的使用例程
    發表于 06-11 07:08

    STM32串口DMA通訊接收不到數據的原因?

    //STM32串口DMA通訊接收不到數據 //請各位大神幫忙看看,下面的DMA配置問題出在哪里 //程序編寫思路是:用
    發表于 05-09 06:40

    stm32 adc1和串口2同時使用DMA出錯的原因?

    stm32f103r8t6adc1使用dma方式采集數據串口2使用dma方式收發
    發表于 04-22 08:08

    STM32F103串口DMA+IDLE收發,速率過快會造成overrun數據溢出怎么解決?

    +IDLE, 收發都通過DMA,DMA每次接收最大數是64,進入IDLE中斷后,從串口緩沖拷貝數據。在27字節
    發表于 04-18 06:26

    stm32F429串口采用DMA方式發送,數據流使能失敗的原因?

    最近項目要使用F429的DMA進行串口發送數據,燒錄之后程序無法正常運行,仿真發現在執行完DMA_Cmd(
    發表于 04-17 07:05

    STM32G071串口1無法使用DMA收發是為什么?

    首先說一下過程,之前在F1,F0上使用DMA串口發送和接收數據,開啟空閑中斷接收不定長數據,都沒有任何問題。后來用上了G030,使用串口1做
    發表于 04-01 07:46

    STM32G491使用串口DMA收發數據,一直進中斷卡死其他任務是為什么?

    STM32G491使用串口DMA收發數據,一直進中斷卡死其他任務,具體原因是出現在哪里?
    發表于 03-18 07:49

    stm32f407zet6串口dma會和sdio的dma發生干擾嗎?

    stm32f407zet6 串口dma會和sdio的dma發生干擾嗎
    發表于 03-11 07:25

    STM32F407串口DMA發送卡死在HAL_DMA_GetState怎么解決?

    使用五路串口DMA收發數據,但是在發送的時候,到了while(HAL_DMA_GetState( hdma_usart3_tx) != HA
    發表于 03-06 08:29
    百家乐官网三路法| 星空棋牌舟山清墩| 赌片百家乐的玩法技巧和规则 | 四会市| 足球博彩| 永利博娱乐| 湘阴县| 百家乐官网玩法的技巧| 百家乐官网赢钱海立方| 博E百百家乐官网娱乐城| 百家乐官网专业豪华版| 广东百家乐官网主论坛| 缅甸百家乐官网视频| 百家乐怎么才会赢| 百家乐哪条路准| 威尼斯人娱乐场官网网站是多少| 大发888开户注册会员| 新葡京线上娱乐| 盈丰娱乐| 百家乐官网开户最快的平台是哪家| 百家乐官网偷码| 娱乐网百家乐官网的玩法技巧和规则 | 顶级赌场官方下载| 海安县| 新百家乐官网庄闲路单图记录| 无锡百家乐官网的玩法技巧和规则 | 百家乐群详解包杀| bet365娱乐城注册| 百家乐官网推荐怎么看| 百家乐官网赌钱| 百家乐官网园试玩| 百家乐的各种打法| bet365备用网址b365etbyty| 和顺县| 百盛百家乐官网软件| 百家乐买隔一数| 任你博百家乐的玩法技巧和规则| 最新娱乐城注册送体验金| 百家乐官网最保险的方法| 百家乐官网高手论| 威尼斯人娱乐城首存|