STM32中的DMA:解锁高效数据传输的秘密武器(内附实例)

目录

引言

理解DMA:数据的高效搬运工

DMA的主要特性

多优先级请求

事件标志

数据对齐

多样化的数据传输路径

广泛的数据源与目标

最大数据长度

DMA寄存器详解

增量与循环模式

DMA中断机制

​编辑

小实验:DMA-ADC串口发送


引言

在现代嵌入式系统设计中,数据传输速度和效率是关键的性能指标。传统的数据传输方法往往需要CPU的频繁干预,这不仅消耗了CPU的宝贵资源,而且限制了系统的整体性能。为了解决这一问题,STM32微控制器集成了DMA控制器,它能够在无需CPU介入的情况下,实现数据在不同存储器区域或存储器与外设之间的高速传输。

理解DMA:数据的高效搬运工

DMA,全称为Direct Memory Access(直接存储器访问),是一种硬件机制,通过为RAM与I/O设备开辟一条直接传送数据的通道,避免了CPU的直接控制和中断处理的开销,显著提高了CPU的效率和系统性能。

DMA的主要特性
多优先级请求
  • 同一个DMA模块可以处理多个优先级请求:很高、高、中等、低。
事件标志
  • 每个通道配备三个事件标志:DMA半传输完成、DMA传输完成、DMA传输出错。
数据对齐
  • 数据源、目标源和数据传输宽度可以按字节(8位)、半字(16位)、全字(32位)对齐。
多样化的数据传输路径
  • 支持存储器<->存储器、外设<->存储器、外设<->外设的数据传输。
广泛的数据源与目标
  • 闪存(flash)、SRAM、APB、AHB、外设均可作为源或目标。
最大数据长度
  • 搬移数据的最大长度为65535字节。
DMA寄存器详解
  • DMA_CPARx:设置外设地址的寄存器。
  • DMA_CMARx:设置存储器地址的寄存器。
  • DMA_CCRx:配置数据传输方向和其他控制选项。
  • DMA_CNDTRx:设置传输的数据量。
增量与循环模式
  • 增量模式:在外设搬移到存储器时,自动增加存储器地址,防止数据覆盖。
  • 循环模式:在一组数据传输完成后,自动恢复初始配置,实现循环数据传输。
DMA中断机制
  • 每个DMA通道在DMA传输过半、传输完成和传输出错时,可产生中断,通过配置寄存器位来启用这些中断,增强了应用的灵活性。

小实验:DMA-ADC串口发送

实验要求:使用DMA发送通过串口打印ADC采集的光照值

从外设---------》内存

以下以CubeMax为例:

什么时候搬移?ADC转换完成之后,再用DMA搬移

怎么用?

启动:HAL库手册(86页)

HAL_StatusTypeDef HAL_ADC_Start_DMA (ADC_HandleTypeDef * hadc, uint32_t * pData, uint32_t Length)

功能:启动ADC开始转换,并通过DMA搬移转换结果。

参数:ADC_HandleTypeDef * hadc 句柄

uint32_t * pData 数据存放地址

uint32_t Length 数据长度

相关推荐
Thanks_ks7 小时前
探索计算机互联网的奇妙世界:从基础到前沿的无尽之旅
物联网·云计算·区块链·tcp/ip协议·计算机互联网·万维网·未来科技
徐嵌10 小时前
STM32项目---畜牧定位器
c语言·stm32·单片机·物联网·iot
Acrelhuang10 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
jjyangyou10 小时前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
火山引擎边缘云1 天前
创新实践:基于边缘智能+扣子的智慧婴儿监控解决方案
物联网·aigc·边缘计算
田三番1 天前
使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
单片机·物联网·http·https·嵌入式·esp32·sntp
AIoT科技物语2 天前
免费,基于React + ECharts 国产开源 IoT 物联网 Web 可视化数据大屏
前端·物联网·react.js·开源·echarts
漫途科技2 天前
漫途焊机安全生产监管方案,提升安全生产管理水平!
物联网·安全
明达技术2 天前
MR30分布式IO模块与高效PLC协同
分布式·物联网·自动化
数码人Digitalor2 天前
数据采集器与物联网网关的区别
物联网