打印

求助:关于STM32的ADC多通道扫描模式的取值问题

[复制链接]
6386|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dwlovehome|  楼主 | 2012-2-6 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
额,如题。先说明下,我使用TIM2的CC2来触发ADC1,然后规则转换7个通道,然后在ADC1里面取值。一个通道用Valuetemp=ADC_GetConversionValue(ADC1);就可以取出来,但是7个通道的该怎么取呢?我用示波器看过,我的CC2周期是0.625ms。ADC中断也是0.625.那么7个数据该怎么取呢?

     网上看了下说如果多通道的话必须用DMA。。。是这样么?

    还有用DMA功能的话,加入我在把数据送入内存ADResult[7*32]中,是不是数据的排列为(假设转换为通道1~7):

通道1第一次,通道2第一次,通道3第一次。。。。通道1第二次,通道2第二次,通道三第二次。。。。。

有没有办法搞成 通道1第一次,通道1第二次。。。通道1第n次;通道2第一次,通道2第2次。。。。。这样的排列方式?
沙发
dwlovehome|  楼主 | 2012-2-7 08:13 | 只看该作者
怎么没大牛进来指点下啊

使用特权

评论回复
板凳
airwill| | 2012-2-7 09:10 | 只看该作者
干吗不好好看看数据手册呢, 上面说得很清楚.
ADResult 通常设置 16 位就够了.
用 DMA 完成一次规则转换(这里是7次转换), 中断响应. 处理掉这些转换结果, 下次转换结果还是在上次结果保存的地址.  当然也可以:
通道1第一次,通道2第一次,通道3第一次。。。。通道1第二次,通道2第二次,通道三第二次。。。。。
你需要在中断里修改 DMA  的地址.
至于
  通道1第一次,通道1第二次。。。通道1第n次;通道2第一次,通道2第2次。。。。。
恐怕很难实现. 你在中断服务里搬家吧, 反正也就 7 个数据, 不麻烦.

使用特权

评论回复
地板
香水城| | 2012-2-7 10:14 | 只看该作者
有什么特殊用途,一定要把每个通道的转换结果集中到一起呢?

使用特权

评论回复
5
dwlovehome|  楼主 | 2012-2-8 11:02 | 只看该作者
4# 香水城

是为了便于直接进行傅立叶计算的,问题已经解决了

使用特权

评论回复
6
dwlovehome|  楼主 | 2012-2-8 11:06 | 只看该作者
3# airwill

原本的想法是采集一个通道20ms内的数据,放到一起,7个通道就是7*32;
最后也能事先。

不过最后改了了一次测7个数据,DMA搬用完后进行中断,手动移入数据,效果还成。
不过还是有些问题。。。在DMA中断后屏蔽掉了我的ADC中断。我的ADC中断优先级是高于DMA的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

41

帖子

0

粉丝