stm32f4 dma的一些問題

文章目錄

  • 前言
  • 一、使用開發板燒錄dma代碼不生效問題
  • 二、一個工程同時使用uart2、uart3借助dma來傳遞
    • 1.并行。
    • 2.DMA "同時工作"的本質
    • 3.總線訪問的具體含義
    • 4.實際效果
    • 5.最佳實踐
      • 5.1 總線傳輸機制:
    • 6.DMA傳輸中斷的問題
  • 總結


前言

記錄一些使用stm32f4 dma過程中的疑問和一些問題


一、使用開發板燒錄dma代碼不生效問題

參考正點原子的實驗18進行的測試。原版是dma2 uart1
我想改為dma1 uart2
用的新版的stlink(可以供電。。)
同時連接電源、stlink,typec-usb線

我發現燒錄程序后,打開串口調試助手沒有用(即沒有顯示信息)
一開始是有的,后期沒了,特別是改完dma1 uart2之后一直以為自己沒改對。。。

我把stlink拔掉然后重新上下點就開始哐哐收數據了。。。。
在此記錄一下

二、一個工程同時使用uart2、uart3借助dma來傳遞

新手的問題:同時使用dma來傳遞uart2、uart3會不會導致只節省一半的時間(比如使用uart2發送數據不占用CPU時間了,但是uart3還得等地啊uart2這邊發送完之后在重新弄這個過程。)

1.并行。

DMA1 資源分配(STM32F4)

  • UART2 TX: DMA1 Stream6(通道4)
  • UART3 TX: DMA1 Stream3(通道4)

同時傳輸時的行為:

  • 并行傳輸能力:

    • DMA1 有8個獨立的數據流(Stream0-7)
    • 不同流可以同時工作(如 UART2 TX 用 Stream6,UART3 TX 用 Stream3)
    • 實際總線訪問由 DMA 仲裁器調度(基于優先級)
  • 沖突場景:

    • 如果兩個外設使用同一個流(如 UART2 TX 和 UART3 TX 都嘗試用 Stream6)

    • 如果同時訪問相同內存區域(需確保源/目標地址不重疊)

2.DMA "同時工作"的本質

  • 邏輯層面的并行:

    • 不同DMA流可以獨立配置和啟動

    • 它們可以同時處于激活狀態

    • 從程序員角度看,它們"同時工作"

  • 物理層面的仲裁:

    • 所有DMA流共享相同的總線資源(AHB總線矩陣)

    • 當多個流同時請求總線訪問時,仲裁器決定訪問順序

    • 實際數據傳輸是分時復用總線資源的

3.總線訪問的具體含義

  • 總線類型:

    • AHB總線:連接CPU、DMA、內存控制器

    • APB總線:連接低速外設(如UART)

    • DMA需要在AHB總線上讀取內存,在APB總線上寫入外設

  • 訪問過程示例:

// UART2 TX傳輸(Stream6)
DMA1_Stream6->M0AR = (uint32_t)tx_buf;  // 內存地址
DMA1_Stream6->PAR = (uint32_t)&USART2->DR; // 外設地址
每次傳輸需要:1.通過AHB總線從內存讀取數據2.通過APB總線將數據寫入UART數據寄存器

4.實際效果

  • 對于UART這種慢速外設(115200bps ≈ 11.5KB/s)

  • DMA傳輸速度(STM32F4 @168MHz > 100MB/s)

  • 即使有仲裁,多個UART的DMA傳輸在人類時間尺度上看起來是同時的

對于UART DMA傳輸,即使有總線仲裁,不同流的傳輸在實際應用中可以認為是并行工作的,因為仲裁產生的延遲遠小于UART傳輸一個字節的時間(87μs@115200bps)。

5.最佳實踐

  • 優先級配置:
    對實時性要求高的外設設高優先級

  • 避免總線擁塞:

    • 將DMA源/目標緩沖區放在不同內存塊

        SRAM1/SRAM2分開使用
      
    • 使用內存對齊訪問

    __attribute__((aligned(4))) uint8_t buf1[256];
    __attribute__((aligned(4))) uint8_t buf2[256];
    

5.1 總線傳輸機制:

  • STM32的總線系統(AHB/APB)以32位字為基本傳輸單位

  • 每次總線訪問至少傳輸4字節

  • 非對齊訪問會導致多次總線事務

6.DMA傳輸中斷的問題

DMA_SxCR_TCIE 中斷表示:DMA控制器已經將數據從內存傳輸到UART的數據寄存器(DR),而不是UART已經將數據完全發送出去。

詳細過程分解

  1. DMA傳輸完成:

    • DMA將最后一個字節寫入USARTx->DR寄存器

    • DMA控制器設置傳輸完成標志(TCIF)

    • 觸發DMA傳輸完成中斷

  2. UART發送過程:

    • UART將數據從DR寄存器轉移到發送移位寄存器

    • UART按波特率將數據逐位發送到TX引腳

    -這個物理發送過程需要時間(例如115200bps下,1字節約需87μs)

總結

xxx

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89541.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89541.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

登錄功能實現深度解析:從會話管理到安全校驗全流程指南

登錄功能實現深度解析:從會話管理到安全校驗全流程指南大家好,我是凱哥Java本文標簽:登錄驗證流程、過濾器與攔截器、安全防護措施簡介本文深入探討了從登錄功能實現到會話管理和安全校驗的全流程,包括參數校驗、身份驗證、令牌生…

2023 年 5 月青少年軟編等考 C 語言六級真題解析

目錄 T1. 字符串插入 思路分析 T2. 機器翻譯 思路分析 T3. 棧基本操作 思路分析 T4. 雙端隊列 思路分析 T1. 字符串插入 題目鏈接:SOJ D1138 有兩個字符串 s t r str str 和 s u b s t r substr substr, s t r str str 的字符個數不超過 10 10 10, s u b s t r substr …

Redux架構解析:狀態管理的核心原理

Redux 作為 JavaScript 應用的狀態管理庫,其技術架構與核心原理圍繞??可預測的狀態管理??設計,通過嚴格的單向數據流和函數式編程理念實現復雜應用的狀態控制。以下從設計理念、核心架構、工作流程、源碼實現等角度進行系統性剖析:一、設…

linux制作鏡像、壓縮鏡像、燒錄的方法

最近在玩香橙派的時候,需要搞多個板子,一個一個配環境也太麻煩了吧......于是通過搜索,發現可以把linux設備(比如香橙派,樹莓派等等)制作為鏡像,然后像燒錄官方鏡像一樣燒進新的sd卡&#xff0c…

機械材料計算軟件,快速核算重量

軟件介紹 今天為大家推薦一款專為機械行業設計人員打造的金屬材料重量計算軟件,幫助工程師快速完成材料重量核算。 軟件特點 這款綠色版計算工具體積小巧,不足100KB,無需安裝即可直接運行,不占用系統資源,特別適…

Chrome更新后,擴展不能用問題

Chrome更新后,擴展不能用問題 此擴展程序不再受支持,因此已停用 在 Windows 10/11 搜索框中輸入 regedit 打開 注冊表編輯器 在注冊表編輯器中打開:HKEYLOCALMACHINE\SOFTWARE\Policies\ 右鍵單擊 Policies 新建項 命名為 Google 右鍵單…

【Python】通過cmd的shell命令獲取局域網內所有IP、MAC地址,通過主機名獲取IP

【Python】通過cmd的shell命令獲取局域網內所有IP、MAC地址,通過主機名獲取IP 更新以gitee為準: gitee 文章目錄cmd命令獲取IPping主機名獲取IP的主機名socket獲取當前網關運行效果附錄:列表的賦值類型和py打包列表賦值BUG復現代碼改進優化總…

sky-take-out項目Mybatis的使用

分頁查詢public PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO) {PageHelper.startPage(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize());//下一條sql進行分頁&#xff0c;自動加入limit關鍵字分頁Page<Category> page categor…

H3CNE小小綜合實驗

實驗拓撲圖實驗需求 按照圖示配置IP地址在SW1和SW2之間配置鏈路聚合增加鏈路帶寬&#xff0c;提高可靠性PC5和PC6屬于VLAN10&#xff0c; PC7和PC8屬于VLAN20SW1和SW2屬于二層交換機&#xff0c;SW3為三層交換機&#xff08;VLAN100用于對接R4&#xff09;,在交換機之間相連的鏈…

IP協議深入理解

一、什么是ip協議?1.1、ip協議是網絡層協議&#xff0c;ip協議的本質工作是提供一種能力&#xff0c;把數據可靠的跨網絡從主機A送到主機B&#xff1b;1.2、什么是ip&#xff1f;ip目標網絡目標主機&#xff1b;畫圖圖解:如圖&#xff0c;當主機A想要把數據發給主機B時&#x…

接收表單數據:serialize()函數解析

一、form-serialize作用與引入 作用&#xff1a; form-serialize可以快速收集表單數據&#xff0c;按照使用者意愿轉化為對象或字符串輸出&#xff0c;以便于提交至服務器。 引入&#xff1a; form-serialize不是瀏覽器自帶的JS方法&#xff0c;而是第三方工具庫。可以直接通過…

vc配置使用預編譯

預編譯原理 stdafx.h中加入系統文件&#xff0c;減少cpp中對這些文件的解析&#xff0c;提高速度 stdafx.h 會把編譯的文件生成pch&#xff0c;后續解析頭文件直接調用pch里面的數據 配置 新建stdafx.h和stdafx.cpp文件 配置stdafx.cpp文件為/Yc 創建預編譯文件整個項目設置/Yc…

反射機制的登錄系統

一、實體層&#xff08;po層&#xff09; //UserInfo package com.hugeyurt.po;import java.sql.ResultSet; import java.sql.SQLException;public class UserInfo {private String userID;private String name;private int count;private Long errorTime;private String pwd;p…

裝飾器模式及優化

裝飾器模式&#xff08;Decorator Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許向一個現有的對象添加新的功能&#xff0c;同時又不改變其結構。這種模式創建了一個裝飾器類&#xff0c;用來包裝原有的類&#xff0c;并在保持類方法簽名完整性的前提下&#xff…

共指消解技術全解析:從語言學規則到深度學習(附論文精讀)

精讀威斯康星大學綜述《Coreference Resolution: A Survey》&#xff0c;揭秘NLP中"實體鏈接"的核心技術一、什么是共指消解&#xff1f;為什么它是NLP的基石&#xff1f;共指消解(Coreference Resolution) 旨在識別文本中指向同一實體的不同表述。例如&#xff1a;t…

git配置git commit -m “fix 11,22: 修改bugid為11,22“

文章目錄前言一、報錯提示二、實現1.commitlint.config.js規范配置2. **修改正則表達式**&#xff1a;3. **移除 scope-case 規則**&#xff1a;4. **增強自定義規則邏輯**&#xff1a;測試結果&#xff1a;正則表達式詳解&#xff1a;前言 提示&#xff1a;正常的配置git規范…

nastools繼任者?極空間部署影視自動化訂閱系統『MediaMaster』

nastools繼任者&#xff1f;極空間部署影視自動化訂閱系統『MediaMaster』 哈嘍小伙伴們好&#xff0c;我是Stark-C~ 對于我們NAS玩家來說&#xff0c;觀影總是大家繞不開的一個執念&#xff0c;并且為觀影的折騰大家也都是樂此不疲~ 曾經有一個非常絕絕子的觀影神器擺在我們…

題解:CF1690G Count the Trains

思路&#xff1a; 首先我們可以理清一下各種情況&#xff1a;1&#xff09;m可能為02&#xff09;一次操作時&#xff0c;只需要考慮每節火車的車頭。3&#xff09;當一節火車的速度降低時&#xff0c;只會影響它及它后面的車廂當m0時&#xff0c;我們可以記錄上一節車頭的速度…

CCF編程能力等級認證GESP—C++3級—20250628

CCF編程能力等級認證GESP—C3級—20250628單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;判斷題&#xff08;每題 2 分&#xff0c;共 20 分&#xff09;編程題 (每題 25 分&#xff0c;共 50 分)奇偶校驗分糖果單選題&#xff08;每題 2 分&#xff0c;共 30 分…

2G和3G網絡關閉/退網狀態(截止2025年7月)

從能打語音電話的2G&#xff0c;到能發彩信、聊QQ的3G&#xff0c;這兩項陪伴了我們數十年的通信技術&#xff0c;正在悄然退出歷史舞臺。近日&#xff0c;全球移動供應商協會&#xff08;GSA&#xff09;發布的《2025年7月2G和3G網絡關閉報告》顯示&#xff0c;全球已有超百個…