验证ADC STM32F303的总转换时间

时间:2019-04-26 11:11:49

标签: stm32 adc

我在时间触发模式下使用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);

计算的转换时间和范围内经过验证的实际时间会有所不同。

0 个答案:

没有答案