winterflower 发表于 2015-4-1 13:48:41

请教ADC的DMA模式的使用问题

我有4个AD要用到,想用DMA模式,看库函数例程只有一个通道,请问要4通道都用DMA模式怎么使用

winterflower 发表于 2015-4-1 13:50:39

用的是L052的芯片,不是F1系列的,F1系列的几通道同时DMA有例程的

发表于 2015-4-1 16:08:44

连续采集,放入到DMA的缓冲区中,他是依次放入的。

木木鱼 发表于 2015-4-1 17:05:02

帮顶一下!

winterflower 发表于 2015-4-2 08:55:25

AdcHandle.Instance = ADC1;

AdcHandle.Init.OversamplingMode      = DISABLE;

AdcHandle.Init.ClockPrescaler      = ADC_CLOCKPRESCALER_PCLK_DIV1;
AdcHandle.Init.LowPowerAutoOff       = DISABLE;
AdcHandle.Init.LowPowerFrequencyMode = ENABLE;
AdcHandle.Init.LowPowerAutoWait      = ENABLE;
   
AdcHandle.Init.Resolution            = ADC_RESOLUTION12b;
AdcHandle.Init.SamplingTime          = ADC_SAMPLETIME_7CYCLES_5;
AdcHandle.Init.ScanDirection         = ADC_SCAN_DIRECTION_UPWARD;
AdcHandle.Init.DataAlign             = ADC_DATAALIGN_RIGHT;
AdcHandle.Init.ContinuousConvMode    = ENABLE;
AdcHandle.Init.DiscontinuousConvMode = DISABLE;
AdcHandle.Init.ExternalTrigConvEdge= ADC_EXTERNALTRIG_EDGE_NONE;
AdcHandle.Init.EOCSelection          = EOC_SINGLE_CONV;
AdcHandle.Init.DMAContinuousRequests = ENABLE;

HAL_ADC_Init(&AdcHandle);
HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) ;
sConfig.Channel = ADC_CHANNEL_0;   
HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);
HAL_ADC_Start_DMA(&AdcHandle, &aResultDMA, 1);


例程如上,我想再增加ADC_CHANNEL_1,ADC_CHANNEL_2;      
改如何设置呢

winterflower 发表于 2015-4-2 08:55:50

安 发表于 2015-4-1 16:08
连续采集,放入到DMA的缓冲区中,他是依次放入的。

能否具体说一下,我不是很明白

发表于 2015-4-2 09:25:13

给你传个多通道的采集例程

数码小叶 发表于 2015-4-2 10:54:11

还没用到那块,帮顶

wambob 发表于 2015-4-2 13:14:55

学习一下

jackzhouly 发表于 2015-4-2 17:30:31

用DMA将读取的数据放到内存的端口,然后再读取就可以来哦
页: [1] 2
查看完整版本: 请教ADC的DMA模式的使用问题