Chinaunix首页 | 论坛 | 博客
  • 博客访问: 481729
  • 博文数量: 93
  • 博客积分: 1431
  • 博客等级: 上尉
  • 技术积分: 1006
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-18 10:30
文章分类

全部博文(93)

文章存档

2011年(20)

2010年(2)

2009年(71)

我的朋友

分类: 嵌入式

2009-07-06 16:53:48

关于 STM32 ADC 时采用DMA 的一点疑问:
    手册上有这样的话:只有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的外部触发必须同时被激活。
 
阅读(5765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~