STM32ADC模式和DMA设置

ADC和DMA是独立的模块,很多设置名字差不多可能容易误解。趁着这次了解的深入,所以记录一下。

1、ADC:Scan Conversion Mode 一次转换多个通道还是单个通达

2、Continuous Conversion Mode(连续转换模式)和Discontinuous Conversion Mode(不连续转换模式)控制的并不是同一件事

Continuous Conversion Mode(连续转换模式)

  • 功能:当使能该模式后,ADC 在完成一次转换(比如对一个或多个通道的转换序列完成)后,会立即自动开始下一次转换,不断循环进行,无需外部再次触发(当然如果有外部触发配置,也会受其影响,但核心是内部会持续触发转换)。

Discontinuous Conversion Mode(不连续转换模式)

  • 功能 :此模式下,ADC 的转换序列会被分成若干个不连续的组。每次只转换其中一组的通道,然后就停止,需要外部触发(比如软件触发、定时器触发等)才能开始下一组的转换。通过配置Discontinuous Number Of Conversions(不连续转换的通道数),可以设定每组转换的通道数量。

3、DMA Continuous Requests DMA连续请求
意思是每次ADC转换出新数据。是通知DMA来拿数据一次(有可能一次通知被错过),还是一直通知等DMA把数据取走再停止请求。

4、DMA的两个模式Normal 和 Circular

前提DMA 循环模式要发挥作用,需要满足两个条件:

  1. 持续的数据源:ADC 需不断产生新的转换结果(如开启连续转换,或被外部高频触发);
  2. 持续的请求信号 :要么使能 DMA Continuous Requests 以保持请求,要么 ADC 每次转换后都能产生新的请求脉冲。

Normal意思就是转换完成一轮(设置单次转换的个数)之后,就算ADC再次通知也不会去拿数据。

Circular会每次转换完成一轮,然后再重新相应ADC的请求去拿数据。

当然ADC不发出取数据的请求的话,怎么配置DMA也拿不到数据的。以前理解DMA会主动的到ADC拿数据,起始应该说是单次/循环相应DMA的请求,而不是理解为主动拿数据。

相关推荐
CODECOLLECT3 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen3 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠6 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_6 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技8 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计8 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦10 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报10 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业10 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能10 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微