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

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

3天內不再提示

STM32串口收發(fā)數(shù)據(jù)為什么要使用DMA

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

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

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

STM32串口收發(fā)數(shù)據(jù)為什么要使用DMA

DMA數(shù)據(jù)拷貝過程,典型的有:

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

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

內存—>外設,如uart、spi、i2c等總線發(fā)送數(shù)據(jù)過程

串口有必要使用DMA嗎

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

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

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

舉個例子

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

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

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

原文標題:STM32串口收發(fā)數(shù)據(jù)為什么要使用DMA?

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

審核編輯:湯梓紅

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

    關注

    450

    文章

    49631

    瀏覽量

    417120
  • 控制器
    +關注

    關注

    112

    文章

    15879

    瀏覽量

    175344
  • STM32
    +關注

    關注

    2257

    文章

    10828

    瀏覽量

    352444

原文標題:STM32串口收發(fā)數(shù)據(jù)為什么要使用DMA?

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

收藏 人收藏

    評論

    相關推薦

    485串口可以用can協(xié)議嗎

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

    ESP32C3串口可以使用DMA收發(fā)嗎?

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

    STM32F103串口DMA+IDLE收發(fā),速率過快會造成overrun數(shù)據(jù)溢出怎么解決?

    +IDLE, 收發(fā)都通過DMADMA每次接收最大數(shù)是64,進入IDLE中斷后,從串口緩沖拷貝數(shù)據(jù)。在27字節(jié)
    發(fā)表于 04-18 06:26

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

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

    STM32G491使用串口DMA收發(fā)數(shù)據(jù),一直進中斷卡死其他任務是為什么?

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

    STM32F407串口DMA發(fā)送卡死在HAL_DMA_GetState怎么解決?

    使用五路串口DMA收發(fā)數(shù)據(jù),但是在發(fā)送的時候,到了while(HAL_DMA_GetState( hdma_usart3_tx) != HA
    發(fā)表于 03-06 08:29

    什么是RS-232串口?消費級電腦通常沒有232串口的主要原因

    什么是RS-232串口?消費級電腦通常沒有232串口的主要原因? RS-232串口是一種標準的串行通信接口,用于在計算機和外部設備之間傳輸數(shù)據(jù),目的是為計算機和外部設備之間提供可靠的
    的頭像 發(fā)表于 01-09 13:52 ?832次閱讀

    STM32串口收發(fā)數(shù)據(jù)使用DMA的原因

    提高數(shù)據(jù)傳輸效率** :DMA(Direct Memory Access)是一種能夠直接從內存中讀取或寫入數(shù)據(jù)的硬件設備。
    的頭像 發(fā)表于 12-13 11:16 ?800次閱讀

    ROS與STM32串口通信代碼

    Stm32_Serial; // 聲明串口對象 并且在類的定義中,聲明兩個結構體,用來存儲接收和要發(fā)送的數(shù)據(jù) RECEIVE_DATA Receive_Data ; //The serial port
    的頭像 發(fā)表于 11-17 18:10 ?856次閱讀

    GD32串口dma接收空閑中斷配置流程是怎樣的?

    GD32串口dma接收空閑中斷配置流程是怎樣的,用過的朋友分享下經驗?,F(xiàn)在已經實現(xiàn)串口+DMA的發(fā)送和接收,都沒有問題,并且使用查詢idle方式也可以接收不定長
    發(fā)表于 11-03 07:51

    STM32 HAL庫串口收發(fā)是如何使用的?

    STM32 HAL庫串口收發(fā)是如何使用的? STM32是一款高性能的微控制器,它擁有廣泛的應用領域,其中包括了各種通訊應用,如UART串口
    的頭像 發(fā)表于 10-26 17:42 ?1078次閱讀

    STM32串口中斷及DMA接收常見的幾個問題

    STM32串口中斷及DMA接收常見的幾個問題
    的頭像 發(fā)表于 10-26 16:41 ?3173次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>中斷及<b class='flag-5'>DMA</b>接收常見的幾個問題

    STM32串口中斷接收不定長報文介紹

    本項目中,需要使STM32的USART6串口與FPGA板(下位機)通信,需要發(fā)送和接收數(shù)據(jù),有報文應答機制。
    的頭像 發(fā)表于 10-26 11:01 ?865次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>中斷接收不定長報文介紹

    利用Simulink自動生成STM32串口代碼

    功能:利用Simulink自動生成STM32串口代碼,在Keil中編譯后直接下載到主芯片,實現(xiàn)串口通訊的功能。
    的頭像 發(fā)表于 10-25 17:04 ?1539次閱讀
    利用Simulink自動生成<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>代碼

    STM32串口通信簡明知識

    STM32串口通信簡明知識
    的頭像 發(fā)表于 10-25 15:48 ?1159次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通信簡明知識