|
ADC采集数据
ADC_InitTypeDef ADC_InitStructure = {0} ;
ADC_CommonInitTypeDef ADC_CommonInitStructure = {0} ;
DMA_InitTypeDef DMA_InitStructure = {0} ;
GPIO_InitTypeDef GPIO_InitStructure = {0} ;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
/* Configure ADC1 Channel6 pin as analog input ******************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* DMA2 Stream0 channe0 configuration **************************************/
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_ADDRESS;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC1ConvertedValue;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 1;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular ;//DMA_Mode_Normal;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
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 Common Init **********************************************************/
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&ADC_CommonInitStructure);
/* ADC1 Init ****************************************************************/
ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
/* ADC1 regular channe6 configuration *************************************/
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_28Cycles);
/* Enable DMA request after last transfer (Single-ADC mode) */
ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);
ADC_DMACmd(ADC1, ENABLE);
ADC_Cmd(ADC1, ENABLE);
ADC_SoftwareStartConv(ADC1);
读取数值ADC1ConvertedValue,当设置ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;读出电压正常
但是设置为ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b时,发现跳跃非常厉害 基本都不对 虽然设置为8bit是也是有点跳跃
以下是输出信号1V ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b测量结果如下 ,还算正常
ADC (0105) 1.035156
ADC (0103) 1.025391
ADC (0107) 0.976563
ADC (0103) 0.986328
ADC (0101) 0.996094
ADC (0104) 0.986328
ADC (0104) 0.996094
ADC (0101) 0.996094
ADC (0101) 0.996094
ADC (0107) 1.044922
ADC (0101) 1.025391
ADC (0099) 1.015625
ADC (0104) 1.005859
ADC (0104) 1.005859
ADC (0102) 1.015625
ADC (0103) 1.015625
ADC (0101) 0.976563
ADC (0105) 1.025391
ADC (0101) 0.996094
ADC (0103) 0.986328
ADC (0104) 0.986328
ADC (0107) 1.005859
ADC (0102) 1.005859
ADC (0099) 1.025391
ADC (0104) 0.996094
ADC (0106) 0.966797
ADC (0103) 0.976563
ADC (0106) 1.044922
ADC (0101) 0.986328
ADC (0102) 0.996094
ADC (0101) 1.044922
ADC (0100) 1.005859
ADC (0101) 0.986328
ADC (0104) 0.986328
ADC (0106) 1.005859
ADC (0101) 0.986328
ADC (0103) 0.996094
ADC (0102) 1.005859
ADC (0100) 0.986328
修改ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b 其他代码不动,1V电压输入 输出ADC的跳跃非常大,完全都不对
ADC (0078) 0.098877
ADC (0126) 0.054321
ADC (0164) 0.053101
ADC (0097) 0.090942
ADC (0128) 0.066528
ADC (0086) 0.069580
ADC (0143) 0.043945
ADC (0069) 0.084229
ADC (0097) 0.057373
ADC (0067) 0.067749
ADC (0095) 0.065308
ADC (0150) 0.032959
ADC (0125) 0.098267
ADC (0103) 0.079346
ADC (0122) 0.057983
ADC (0151) 0.042114
ADC (0150) 0.046387
ADC (0097) 0.062866
ADC (0133) 0.046387
ADC (0111) 0.071411
ADC (0136) 0.061035
请教下是什么问题?
|
|