打印
[STM32F4]

AD采集模块,采集到的数据老是有波动,求大神指教

[复制链接]
2864|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chonchonyudon|  楼主 | 2015-4-9 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void ADC3_IN4_Config(void)
{
    GPIO_InitTypeDef         GPIO_InitStructure;
    DMA_InitTypeDef          DMA_InitStructure;
    ADC_InitTypeDef          ADC_InitStructure;
    ADC_CommonInitTypeDef    ADC_CommonInitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);                  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,  ENABLE);


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    DMA_InitStructure.DMA_Channel            = DMA_Channel_0;
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Addr;              
    DMA_InitStructure.DMA_Memory0BaseAddr    = (uint32_t)&ADC1ConvertedValue;        
    DMA_InitStructure.DMA_DIR                = DMA_DIR_PeripheralToMemory;   
    DMA_InitStructure.DMA_BufferSize         = RTD_RX_NO;                          
    DMA_InitStructure.DMA_PeripheralInc      = DMA_PeripheralInc_Disable;         
    DMA_InitStructure.DMA_MemoryInc          = DMA_MemoryInc_Enable;               
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;      
    DMA_InitStructure.DMA_MemoryDataSize     = DMA_PeripheralDataSize_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);                                             


    ADC_DeInit();
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;                     
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;                           
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;                          
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;     
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                        
    ADC_InitStructure.ADC_NbrOfConversion = 1;                             
    ADC_Init(ADC1, &ADC_InitStructure);

    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);

    ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 1, ADC_SampleTime_480Cycles);

    ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);                     

    ADC_DMACmd(ADC1, ENABLE);

    ADC_Cmd(ADC1, ENABLE);

    ADC_SoftwareStartConv(ADC1);
}
沙发
chonchonyudon|  楼主 | 2015-4-9 22:49 | 只看该作者
采集到的数字量老是有波动,波动范围在200左右,硬件查看了下所加电压模拟量,又没有太大波动。参考电压加的是2.5V。请路过大神帮忙解答一下,小弟刚接触这款芯片不久

使用特权

评论回复
板凳
forrest11| | 2015-4-9 23:18 | 只看该作者
200的波动对应多少电压范围,可能噪声就是有这么大。还有就是注意采样频率和时序。

使用特权

评论回复
地板
airwill| | 2015-4-10 09:08 | 只看该作者
从参考电源看, 200的波动对应多少电压范围,120mV 多
太大了, 先检查信号的纹波和参考电压的噪声吧

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝