Опорное напряжение Vdda=2.5в. Тактовая частота ядра 40Mhz пред делить АЦП=4 (ADCCLK=10Mhz) Период дискретизации 100ms.
Код инициализации.(режим одиночного преобразования)
Спойлер
Код: Выделить всё
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //ADC init
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //ADC init
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
/* Now do the setup */
ADC_Init(ADC1, &ADC_InitStructure);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);
/* Enable ADC1 reset calibaration register */
ADC_ResetCalibration(ADC1);
/* Check the end of ADC1 reset calibration register */
while(ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));
Спойлер
Код: Выделить всё
u16 adc_read(u8 channel)
{
ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_239Cycles5);
// Start the conversion
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
// Wait until conversion completion
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
// Get the conversion value
return ADC_GetConversionValue(ADC1);
}
Устанавливаю напряжение на входе АЦП =1В значение АЦП при минимальной времени выборки (ADC_SampleTime_1Cycles5 )
получается (1865 это 1.139В) при увеличении времени выборки значение напряжение увеличивается при ADC_SampleTime_239Cycles5 значение АЦП получается 3225(1.970В).
1) Из за чего такое может происходить ? ведь при увеличении времени выборки напряжение наоборот должно выравняться с входным.
2) откуда взялась погрешность в 0.130В при измерении на ADC_SampleTime_1Cycles5.

