OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3807|回复: 2

求助,ADC连续采集数据之后停止再重新启动采集

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-3-4
在线时间
6 小时
发表于 2016-7-1 14:56:01 | 显示全部楼层 |阅读模式
1金钱
我想使用ADC采集两路通道的数据,由于两路数据不是同时采集的,所以我想使用ADC连续采集一个通道的50个数据,然后采用DMA传输至内存,之后换个ADC通道,再连续采集50个数据,使用DMA传至内存,第一路数据的采集和DMA传输都能成功,等到第二路的时候就不行了。我使用的是SWSTAR启动传AD采集的,请问各位大神,这么做有什么问题吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-3-4
在线时间
6 小时
 楼主| 发表于 2016-7-1 18:27:24 | 显示全部楼层
我的部分代码,每次调用这个函数的时候,都初始化一下DMA和ADC

void Voltage_AD(void)
{
        DMA_Voltage_AD_Config();
    ADC_Voltage_Config();
   ADC_SoftwareStartConv(ADC3);

        while(1)
        {
                if(DMA_GetFlagStatus(DMA2_Stream0,DMA_FLAG_TCIF0)!=RESET)
                {
                        ADC_Cmd(ADC3, DISABLE);
                        DMA_ClearFlag(DMA2_Stream0,DMA_FLAG_TCIF0);
                        DMA_ClearFlag(DMA2_Stream0,DMA_FLAG_HTIF0);
                        Get_Adc_Average();
                        AD_value_1 = ADC_Average[0];
                        AD_value_1 = (AD_value_1/4096)*3.3;
                        AD_value_2 = ADC_Average[1];
                        AD_value_2 = (AD_value_2/4096)*3.3;
                        AD_value_3 = ADC_Average[2];
                        AD_value_3 = (AD_value_3/4096)*3.3;       
                        AD_value_4 = ADC_Average[3];
                        AD_value_4 = (AD_value_4/4096)*3.3;       
                        break;
                }
        }
       
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-7-2 21:08:14 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 08:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表