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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;全球已有超百个…