打印

请教STM32F2XX ADC请教

[复制链接]
5111|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
19840312|  楼主 | 2012-2-20 14:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 19840312 于 2012-2-20 14:17 编辑

ADC_InitTypeDef       ADC_InitStructure;
   ADC_CommonInitTypeDef ADC_CommonInitStructure;
   DMA_InitTypeDef       DMA_InitStructure;
   GPIO_InitTypeDef      GPIO_InitStructure;

   /* Enable ADC3, DMA2 and GPIO clocks ****************************************/
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOF, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);

   /* DMA2 Stream0 channel2 configuration **************************************/
   DMA_InitStructure.DMA_Channel            = DMA_Channel_2;  
   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC3_DR_ADDRESS;
   DMA_InitStructure.DMA_Memory0BaseAddr    = (uint32_t)ADC3ConvertedValue;
   DMA_InitStructure.DMA_DIR                = DMA_DIR_PeripheralToMemory;
   DMA_InitStructure.DMA_BufferSize         = ADC_BUFF_LEN ;
   DMA_InitStructure.DMA_PeripheralInc      = DMA_PeripheralInc_Disable;
   DMA_InitStructure.DMA_MemoryInc          = DMA_MemoryInc_Enable;//DMA_MemoryInc_Disable;
   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
   DMA_InitStructure.DMA_MemoryDataSize     = DMA_MemoryDataSize_HalfWord;
   DMA_InitStructure.DMA_Mode               = DMA_Mode_Circular;
   DMA_InitStructure.DMA_Priority           = DMA_Priority_High;
   DMA_InitStructure.DMA_FIFOMode           = DMA_FIFOMode_Disable;         
   DMA_InitStructure.DMA_FIFOThreshold      = DMA_FIFOThreshold_HalfFull;
   DMA_InitStructure.DMA_MemoryBurst        = DMA_MemoryBurst_Single;
   DMA_InitStructure.DMA_PeripheralBurst    = DMA_PeripheralBurst_Single;
   DMA_Init(DMA2_Stream0, &DMA_InitStructure);
   DMA_Cmd(DMA2_Stream0, ENABLE);

   /* Configure ADC3 Channel5 Ff7 pin as analog input ******************************/
   GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7 | GPIO_Pin_6;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOF, &GPIO_InitStructure);

   /* ADC Common Init **********************************************************/
   ADC_CommonInitStructure.ADC_Mode             = ADC_Mode_Independent;
   ADC_CommonInitStructure.ADC_Prescaler        = ADC_Prescaler_Div8;
   ADC_CommonInitStructure.ADC_DMAAccessMode    = ADC_DMAAccessMode_Disabled;
   ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles;
   ADC_CommonInit(&ADC_CommonInitStructure);

   /* ADC3 Init ****************************************************************/
   ADC_InitStructure.ADC_Resolution           = ADC_Resolution_12b;
   ADC_InitStructure.ADC_ScanConvMode         = ENABLE;//DISABLE;
   ADC_InitStructure.ADC_ContinuousConvMode   = ENABLE;
   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
   ADC_InitStructure.ADC_DataAlign            = ADC_DataAlign_Right;
   ADC_InitStructure.ADC_NbrOfConversion      = 2;
   ADC_Init(ADC3, &ADC_InitStructure);

   /* ADC3 regular channel5 configuration *************************************/
   ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 1, ADC_SampleTime_112Cycles);
   ADC_RegularChannelConfig(ADC3, ADC_Channel_4, 2, ADC_SampleTime_112Cycles);

  /* Enable DMA request after last transfer (Single-ADC mode) */
   ADC_DMARequestAfterLastTransferCmd(ADC3, ENABLE);
   /* Enable ADC3 DMA */
   ADC_DMACmd(ADC3, ENABLE);
   /* Enable ADC3 */
     ADC_Cmd(ADC3, ENABLE);

   ADC_SoftwareStartConv(ADC3);



上面为配置:
下面是任务中读取数据
OSTimeDly(500);
      ADC_Cmd(ADC3, DISABLE);
      ADC3_CH5_ConvertedValue = ADC3ConvertedValue[0];
   ADC3_CH4_ConvertedValue = ADC3ConvertedValue[1];
      ADC_Cmd(ADC3, ENABLE);                  
      ADC_SoftwareStartConv(ADC3);

问题:ADC3_CH5_ConvertedValue 和ADC3_CH4_ConvertedValue值不变,在运行不确定时间,有可能是一天后 也可能是两天后,也可能是几个小时之后。程序没有死机,运行的时候,“任务中读取数据”函数之前的运行正确,之后也运行正确
沙发
香水城| | 2012-2-20 18:00 | 只看该作者
不明白你在说什么。

使用特权

评论回复
板凳
19840312|  楼主 | 2012-2-20 20:29 | 只看该作者
ADC3_CH5和ADC3_CH4的值,随时应该变,才是对的。现在出现情况:运行一段时间(可能是一个小时,也可能是一天)后,ADC3_CH5和ADC3_CH4的值固定不变了,AD信号无论怎么变 这个值都不变

使用特权

评论回复
地板
香水城| | 2012-2-21 11:14 | 只看该作者
什么电路?电路参数?

使用特权

评论回复
5
yybj| | 2012-2-21 16:32 | 只看该作者
给的信息不明确,不好分析

使用特权

评论回复
6
雨辰073| | 2012-2-21 16:41 | 只看该作者
这么大爷,能把问题说清楚吗?我调过f207的AD模块,说不定还能帮上你啊!

使用特权

评论回复
7
sfd123| | 2016-9-28 15:13 | 只看该作者
我也才 接触这个,想学习学习

使用特权

评论回复
8
稳稳の幸福| | 2016-9-28 17:09 | 只看该作者
楼主我懂你的意思了,你肯定是那边悬空么有接测量的东西,这样最好接地。要不悬空出来个神奇的数字,每个都一样,既不是地也不是VCC。

使用特权

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

本版积分规则

28

主题

137

帖子

0

粉丝