根据ES32F3的ADC时钟频率,ES32F3的ADC有高速(ADC时钟频率大于1M)和低速(ADC时钟频率小于1M)两种工作模式,使用时,如果设置的工作模式和ADC时钟不匹配,会出现采样值异常的现象:如采集的电压变化时,AD采集值不变化等异常。
ES32F3的ADC工作模式由ADC->CCR.PWRMODSEL位决定。
ADC的时钟源是PCLK2(最大24M),不同主频,在ald_cmu库文件里,会将PCLK2设置成不同频率,48/96M主频时,PCLK2会设置成24M,36/72M主频时,PCLK2会设置成18M。
ADC初始化时,通过下述语句可以对PCLK2分频,ADC时钟频率即分频后的值。
h_adc.init.div = ADC_CKDIV_128;
如果ADC的时钟频率小于1M,将ald_adc库文件ald_adc_init函数的下述语句将ADC设置成低速工作模式:
MODIFY_REG(ADC0->CCR, ADC_CCR_PWRMODSEL_MSK, DISABLE << ADC_CCR_PWRMODSEL_POS);
如果ADC的时钟频率大于1M,将ald_adc库文件ald_adc_init函数的下述语句将ADC设置成高速工作模式:
MODIFY_REG(ADC0->CCR, ADC_CCR_PWRMODSEL_MSK, ENABLE << ADC_CCR_PWRMODSEL_POS);