一、DMA的使用方法

了解概念:
1.单次传输和循环传输:在DMA中源地址中的数据传输之后,如果要关闭DMA再打开才能继续传输。在如果传输玩后自动开始下一次传输,就是循环传输。
2.触发选择:软件触发(连续触发)是尽快完成数据转运,适用于存储器到存储器(此时不应使用循环传输)。硬件出发适用于外设。

配置过程:
1.开启DMA的时钟
2.初始化DMA(大部分项都义如其名,需要理解的有以下三个:
① DMA_Mode:传输模式,一次传输或循环传输,决定了传输计数器是否自动重装,即是否传输完后手动写传输寄存器。
② DMA_BufferSize:缓冲区大小,即传输计数器的值,每次传输几个数据
③DMA_M2M:是不是存储器到存储器,即硬件触发还是软件触发。存储器到存储器传输不能使用循环模式。
3.开启外设的DMA(如ADC_DMACmd),开启触发信号的输出
4.如需要,开启DMA的中断(DMA_ITConfig). 之前要在NVIC里配置相应的通道,编写中断服务函数
5.DMA_Cmd(); 使能DMA开始转运
6.用DMA_GetFlagStatus判断是否传输完成,记得手动清除标志位。
6.当使用单次传输,如果传输结束后需要再次传输,需要先失能DMA后写传输计数器DMA_SetCurrDataCounter再使能DMA;如果使用循环传输则不需要这句话


--------------------------------------------------------------------------分割线-------------------------------------------------------------------------------------------------

二、DMA转运ADC多通道

了解概念:
1.规则序列,有16个位置的菜单;注入序列:有4个位置的菜单。只有在规则序列存在的情况下才有注入序列,在规则序列转换的时候,注入序列有打断的权力,只有当注入序列转换完后规则序列才能继续。
2.ADC模式有两种,一种是单ADC,另一种是同时使用两个ADC,两个ADC一起工作,对同一个引脚交叉采样。
3.单次转换和连续转换。对于规则菜单和注入菜单,单次转换后只出个EOC标志位,需要手动触发才能继续转换。对于连续转换,每次菜单转换完后都会自己触发下一轮转换,一般都用连续转换。
4.是否扫描。非扫描模式下规则序列和注入序列中都是只有1个位置安排上了通道,也就是说转换的时候没有用到菜单。扫描模式下菜单里会填上很多通道,每次转换开始后挨个转换。

配置过程:
1.打开GPIO和ADC时钟
2.初始化GPIO
3.初始化ADC,注意以下两个选项:
①ADC_ContinuousConvMode:单次还是连续转换
②ADC_ScanConvMode:单个通道还是扫描菜单里的多个通道
4.设置ADC菜单里各个位置上的通道号及采样时间
5.如有需要,ADC_ITConfig配置中断,配置NVIC,编写中断服务函数
6.ADC_Cmd开启ADC
7.初始化ADC校准寄存器,等待校准寄存器初始化完成,ADC开始校准,等待校准完成。
8.ADC_SoftwareStartConvCmd软件触发ADC(单次转换每次调用,连续转换调用一次)或者硬件触发ADC(一般是用TIM触发ADC,也可以用外部引脚)

stm32 DMA转运ADC多通道相关推荐

  1. STM32自学笔记ADC多通道扫描

    STM cubemx STM32F1 ADC多通道采集(非DMA) ADC模式介绍: 扫描模式: 多通道采集必须开启,这一项CUBE已经默认设置好了.这个模式就是自动扫描你开启的所有通道进行转换,直至 ...

  2. STM-32:ADC模数转换器—ADC单通道转换/ADC多通道转换

    目录 一.ADC 模数转换器 1.1ADC简介 1.2 逐次逼近型ADC工作原理 1.3STM32中的ADC基本结构 1.4STM32中ADC的输入通道 1.5STM32中的ADC的四种转换模式 1. ...

  3. STM32之DMA转运学习,附代码

    DMA简介: 注:如果DMA进行的是存储器到存储器的数据转运,比如我们想把Flash里的数据转运到SRAM里去,那就需要软件触发了,使用软件触发之后,DMA就会一股脑地把这批数据,以最快的速度全部转运 ...

  4. STM32 CubeMX配置ADC+DMA进行FFT(1)

    STM32 CubeMX配置ADC+DMA,计算采样率和ADC电压 原创:睿智嵌入式 最近,因为项目需要处理音频信号,对AD采集的音频信号进行FFT运算,记录一下学习过程. 主要内容: 1.ADC和D ...

  5. 【STM32】STM32CUBEMX + ADC(单通道,双通道DMA)

    STM32CUBEMX + ADC(单通道,双通道DMA) 案例应用 :使用ADC采集电压(单通道.单通道+DMA.双通道+DMA),并利用串口打印采集转换后的电压值 1.工具 IAR STM32CU ...

  6. STM32 ADC多通道采集

    ADC多通道采集(阻塞模式.ADC_DMA模式) ADC多通道采集(阻塞模式) ADC多通道采集(DMA模式) ADC多通道采集(阻塞模式) 1.时钟源配置 2.配置RCC时钟(选择第三个选项 Cry ...

  7. dma和通道的区别_STM32 定时器触发 ADC 多通道采集,DMA搬运至内存

    引言 ADC 的功能是将模拟信号采样得到数字信号,而有些时候,我们需要使用到定时采样,比如在计算一个采集的波形的频率的时候,我们需要精确的知道采样频率,也就是 1 s 内采集的点数,这个时候,就需要使 ...

  8. STM32/APM32 用DMA采集ADC1多通道--标准库

    本文使用的是APM32E103作为示例的, STM32F/E以及APM32F等系列同样适用. 一.ADC及其通道 ADC1:最多16个外部通道,2个内部通道.内部通道分别是温度传感器和参考电压 ①:温 ...

  9. STM32CubeMX | HAL库的ADC多通道数据采集(轮训、DMA、DMA+TIM)、读取内部传感器温度

    STM32CubeMX | HAL库的ADC多通道数据采集(轮训.DMA.DMA+TIM).读取内部传感器温度 目录 STM32CubeMX | HAL库的ADC多通道数据采集(轮训.DMA.DMA+ ...

最新文章

  1. 老生常谈:装饰者模式
  2. 猎豹MFC--CMenu菜单 设置主菜单 给主对话框设置菜单 设置快捷菜单
  3. java记录目录树_Java记录
  4. 2.1.2数据通信基础知识
  5. java测试一个泰勒级数_自己 推导一个 泰勒级数
  6. Flask 模版(四)- 时间 Flask-Moment
  7. 一周二次课(12月12日)
  8. python可不可以同时执行1000个线程_python怎么能同时执行代码(多线程)?
  9. ARM64体系结构编程与实践:基础知识
  10. 夜神模拟器android版本修改器,夜神模拟器怎么用 夜神安卓模拟器使用方法大大全...
  11. :last-of-type , :last-child 无效的问题
  12. 一般线性模型(general linear model,GLM)
  13. Taro 如何开始微信小程序的开发
  14. 周鸿祎的“花房上市”执念
  15. 有些MP4只有音频没有视频的解决办法
  16. 手机自动识别软件项目举例
  17. 学神经网络应该看看哪些书
  18. 自适应滤波器:递归最小二乘(RLS)
  19. Python IDE开发环境
  20. 沪深交易所level2行情

热门文章

  1. 生成HTTPS协议需要的SSL证书
  2. 零基础学电路(一):白噪声电子催眠器电子温度计
  3. Efficient Image Dehazing with Boundary Constraint and Contextual Regularization
  4. 如何通过纯javascript实现表单提交
  5. [Dest0g3 520迎新赛] Web部分wp
  6. rsync守护进程部署
  7. 虚拟机WindowServer2003共享文件夹
  8. MTK平台闪光灯驱动分析
  9. EXCEL 2016常用知识--Excel数据透视表
  10. Promise的作用及用法