单片机
返回首页

关于STM32 ADC时采用DMA的一点疑问

2024-10-25 来源:cnblogs

手册上有这样的话:只有ADC1能够产生DMA请求,似乎是只有ADC通道1能采用DMA方式传输数据。


但是万利的开发板上的ADC例子,用的是ADC通道10,还用了DMA 方式传数据。

所以我猜测  “只有ADC1能够产生DMA请求”中提到的ADC1 并不是指ADC 通道1,
而是软件可配置的 ADC 通道的分类形式,可分为ADC1和ADC2.
      我们可将 通道10(或其他)配置成ADC1 “模式”。通过函数
/* ADC1 regular channel10 configuration */
  ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);
实现

 

来自芯片手册:
注:
– ADC1的模拟输入通道16和通道17在芯片内部分别连到了温度传感器和VREFINT。
– ADC2的模拟输入通道16和通道17在芯片内部连到了VSS。   

来自网友评论:
stm32的ADC2 问题
stm32的ADC2是 不是可以用DMA方式,怎么用???我看手册里只有ADC1有DMA功能,如果ADC1和ADC2同时规则采集16个通道,DMA怎么用呢????

是的,只有ADC1有DMACEDN论坛3 r1 C' j$ N6 y$ l% c
但是你的16个通道都可以使用ADC1处理,那也不是16个通道都能用DMA方式了吗


原来如此啊:
来自STM32F103 的另一份手册:
ADC(模拟/数字转换器)
STM32F103xx增强型产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC有多达16个外部通道,可以实现单次或扫描转换。在扫描模式下,转换在选定的一组模拟输入上自动进行。
ADC接口上额外的逻辑功能允许:

同时采样和保持

交叉采样和保持

单次采样
ADC可以使用DMA操作。
模拟看门狗功能允许非常精准地监视一路、多路或所有选中的通道,当被监视的信号超出预置的阀值时,将产生中断。
由标准定时器(TIMx)和高级控制定时器(TIM1)产生的事件,可以分别内部级联到ADC的开始触发、外部触发和DMA触发,以使应用程序能同步AD转换和时钟。


关于它的双ADC 模式

16.10 双ADC模式
在有2 个ADC的器件中,可以使用双ADC模式(见图148双ADC框图)。
在双ADC 模式里,根据ADC1_CR1 寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1 主和ADC2 从的交替触发或同时触发。

注意: 在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。但是,主和从ADC的外部触发必须同时被激活。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • 光控音效发生器电路

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 基于IC555的可变PWM振荡器电路

  • 分享一个电网倾角计电路

  • 电谐波图形均衡器示意图

    相关电子头条文章