STM32的DMA数据传输实例

发布者:TranquilJourney最新更新时间:2024-09-26 来源: elecfans关键字:STM32  DMA  数据传输 手机看文章 扫描二维码
随时随地手机看文章

本文将介绍如何通过DMA将ADC采集的数据直接存储到存储器

而不需要经过CPU;

芯片:STM32F407

工具:STM32CUBEMX KEIL5

①通过STM32CUBEMX配置工程文件

代码实现

①通过STM32CUBEMX配置工程文件

使能USART3用于调试

wKgaomRHMdeAfrRqAAOP8jfacRE677.jpg?imageView2/2/w/1000

PA4外部引脚接的是电压采样电路,将PA4设为ADC1采样通道

wKgZomRHMdiAdyxaAAL4I9SvVvA759.jpg?imageView2/2/w/1000

使能RCC时钟、配置时钟树

wKgaomRHMdmAbMmhAAM7X-ALYpA446.jpg?imageView2/2/w/1000

wKgZomRHMdmAMn6QAALKr6WCJZA128.jpg?imageView2/2/w/1000

配置DMA

wKgaomRHMdqAAr_kAAKgHKGIb4c599.jpg?imageView2/2/w/1000

配置ADC1

wKgZomRHMduAbps2AAOSk0zF75E405.jpg?imageView2/2/w/1000

配置DMA的中断优先级

wKgaomRHMduAWK5_AAN-EoQAEdE218.jpg?imageView2/2/w/1000

7、生成代码

②代码实现

输出重定向:

wKgZomRHMdyAIIpFAAAOxGUlVCw114.jpg?imageView2/2/w/1000

启动ADC采样后的DMA传输函数:

wKgaomRHMd2ABXyPAABd2_DUqC8290.jpg?imageView2/2/w/1000

wKgZomRHMd2Ae6z9AABZktPXsRo469.jpg?imageView2/2/w/1000

日志

wKgaomRHMd6AdviEAAH3Roiv2og890.jpg?imageView2/2/w/1000


关键字:STM32  DMA  数据传输 引用地址:STM32的DMA数据传输实例

上一篇:基于STM32设计的智能灌溉控制系统
下一篇:stm32异步串口通讯配置过程

推荐阅读最新更新时间:2026-03-23 10:48

STM32-自学笔记(19.DMA——存储器直接存取,让数据传输更上一层楼)
概述:DMA(存储器直接存取) 一个完整的微控制器(处理器)通常由CPU、存储器和外设等组件构成。这些组件一般在结构和功能上都是独立的,即一个组件能持续正常工作并不一定建立在另一个组件正常工作的前提上,而各个组件之间的协调与交互就由CPU来完成。如此一来,CPU作为整个芯片的“大脑”,其职能范围可谓广阔吗,如CPU先从A外设拿到一个数据送给B外设使用,同时C外设又需要D外设提供一个数据……这样的数据搬运工作使得CPU的负荷显得相当繁重。 严格来说,搬运数据只是CPU众多职能中比较不重要的一种。CPU最重要的工作是进行数据的运算,从加减乘除四种基本运算到一些高级运算,包括浮点、积分、微分、FFT等运算。而在一些嵌入式的实时应
[单片机]
STM32-自学笔记(19.<font color='red'>DMA</font>——存储器直接存取,让<font color='red'>数据传输</font>更上一层楼)
STM32F4 ADC采集数据的DMA数据传输【库函数操作】
书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。 ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个通道时候,使用DMA可以较好地避免将采集到的数据丢失。当ADC的DMA功能被使能的时候,每个通道转换完毕时都会发出一个DMA请求。DMA方式也不能完全避免数据丢失问题,要实现数据不丢失需要在DMA的同时开启OVERRUN模式,当数据丢失时就停止数据转换。我们只需要检测是否有OVR时间发生,就能解决采样数据丢失造成的问题。比如,通道错位什么的。 在STM32F4的Reference manual中可以查到ADC1 的DMA映射在DMA1、CH0、Stream0上。
[单片机]
Nios系统基础上的UItra DMA数据传输模式
引 言   随着消费类电子,如MP3、3G手机、视频终端以及宽带无线网络的普及,对大容量存储设备的需求越来越强烈。传统的SRAM、SDRAM以及DDR SDRAM等存储设备的价格与容量比,远远比硬盘高;光存储设备虽然更加廉价,但是在便携性上却远逊于硬盘解决方案。现在硬盘厂商提供了各种适用于不同用途的廉价海量存储设备,如1 in(英寸)的微硬盘可以应用于各种小巧的便携设备中,2.5in硬盘可以应用于笔记本和移动存储中,3.5in硬盘可以应用于个人PC和工业自动化中等等。   目前,硬盘支持的最为广泛的IDE接口协议中,规定了PIO、DMA以及Ultra DMA三种数据传输模式,其传输速率PIO 多字DMA   Ultra DMA
[嵌入式]
STM32例程之USB HID双向数据传输
程序功能 将STM32的USB枚举为HID设备。 STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收。 端点长度为64,也就是单次最多可以传输64个字节数据。 STM32获取上位机下发的数据并将该数据通过USB原样返回,同时将数据打印输出。 上位机程序通过调用windows的API实现对HID设备的读写控制。 USB接口原理图: HID枚举成功: 程序效果图 图一 上位机程序运行图 图二 STM32串口打印输出 图三 Bus Hound抓取的数据 程序部分代码 STM32的报告描述符: const uint8_t CustomHID_ReportDescriptor = { 0
[单片机]
STM32串口双缓冲乒乓数据传输方式
对于没玩过DMA 的朋友,这里简单说一下DMA,用自己的语言说吧,那就是,从某个位置 传输数据到某个位置,如果不用DMA,那要CPU参与操作,一个字节一个字节地搬,效率高 点的,就一个字一个字地搬.但当你用了DMA 后,那就是只需要设置:A.从哪里开始搬; B, 搬到哪里去;C以字节方式搬还是半字还是字;D:一共搬多少个.之后,启动DMA.CPU内部 就会开始搬数据了,整个搬数据的过程都不需要指令的参与,唯一要做的,就是检测什么时 候搬完.你可以扫描寄存器,也可以用中断.这里,我使用了中断. 具体设置功能看注释就可以明白了.注意一点就是,有一个设置: DMA_InitStructure.DMA_PeripheralInc = DM
[单片机]
<font color='red'>STM32</font>串口双缓冲乒乓<font color='red'>数据传输</font>方式
陈老师告诉你STM32单片机的DMA怎么使用
DMA技术的运用合乎真香定律,是提高单片机CPU程序执行效率的常用方法之一,但是在其运用前须要对很多的寄存器进行初始配置,对新手不够友好,今天我以串口为例,来带大家梳理一下DMA的运用方法,理清概念之间的关系,帮助大家更好的掌握和运用DMA技术. ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令陈老师/// 串口是单片机最常用的外设,一般可用于达到多机的通讯功能.(串口USART1在单片机内部的位置如下图1处所示),CPU是控制和计算核心(如下图2处所示),DMA也能够认为是一个内部的控制器,(如下图3处所示)
[单片机]
STM32外设AD定时器触发DMA读取模板详解
一,方法思路 前面两种方法各有优劣。轮询法效率低,DMA+定时处理法数据处理不够实时。当我们需要以较为固定的频率进行 ADC 采样,并在采集完一批数据块后进行集中处理时,可以结合定时器、DMA 和中断。 这种方法的思路是: 定时器 (Timer) 作为 启动信号 (可选,或由软件触发): 可以配置一个定时器以固定频率产生触发信号(TRGO),启动 ADC 转换序列。或者,转换序列由软件直接启动。ADC 配置为外部触发模式(如果使用定时器)或软件触发。 DMA “搬运工”: 配置 DMA 通道,在每次 ADC 转换完成后(或根据触发信号),自动将结果从 ADC 数据寄存器搬运到内存缓冲区 (DMA Buffer)。DMA 通
[单片机]
<font color='red'>STM32</font>外设AD定时器触发<font color='red'>DMA</font>读取模板详解
STM32DMA基本原理、寄存器、库函数
DMA的基本介绍 1DMA的基本定义 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。 2DMA的主要特征 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置; 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved