我在时间触发模式下使用STM32F303的ADC1。 TIM1用于生成更新事件,并用作ADC1的触发源。时间触发频率为1kHz。我想验证ADC的总转换。在F3参考手册中,提到可以将最大ADC时钟设置为72Mhz。 ADC设置为异步时钟模式,并配置了PLL时钟72Mhz(RCC_ADC12PLLCLK_Div1)。 采样时间:7.5个周期 分辨率:12位
计算的总转换时间:采样时间+转换时间= 7.5cycles + 12.5cycles(对于12位)= 20个ADC时钟周期。 1)对于ADC异步时钟= 72Mhz:((1/72000000)* 20cycles)= 0.2777 us
试图在示波器上进行验证: 我在更新中断中将GPIO引脚设为高电平,而在ADC EOC(EOC标志检查)中断中将相同的GPIO引脚设为低电平。 GPIO引脚的开启时间:1.48us;
2)对于ADC异步时钟= 12Mhz:((1/12000000)* 20cycles)= 1.666 us 但在范围上显示为2.08 us。
建议如何验证转换时间??
RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div6);//RCC_ADC12PLLCLK_Div1
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE);
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;
ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Disable;
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 1, ADC_SampleTime_7Cycles5);
计算的转换时间和范围内经过验证的实际时间会有所不同。