OVR溢出错误
最近调试一个板子,使用ADC1采集多个通道,然后DMA传输到对应数组里。模仿STM32F1的写法后,一直出现OVR错误(溢出)。
网上看了各位大神的分析,里面有个比较关键的说DMA溢出,需要判断溢出的时候,重新配置DMA和再次启动ADC。发现好像没有效果。
然后看到配置中有这个选项(ADC_DMAAccessMode ):
ADC_DeInit();
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;// 独立ADC模式
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; //ADC最高时钟允许36M,AP2B2为84M,所以4分频即21M
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;// DMA直接访问模式,只有在双重或者三重模式才需要设置
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; //2个采样阶段之前的延迟,仅适用于双重或三重交错模式
ADC_CommonInit( &ADC_CommonInitStructure );
之前是ADC_DMAAccessMode_1模式,改为DISABLE就没出现OVR错误了,就可以正常ADC采样了。
————————————————————————————