本帖最后由 zhangbaoyin 于 2023-6-26 20:27 编辑
【雅特力AT-START-F435】ADC采样速率测试5.33MSPS
一、时钟配置
从时钟树上可以看到:
- ADC通道的最大时钟速率为80MHz。
- ADC全部挂载到APB2总线上,配置系统时钟使用apb2 不分频
总体的系统时钟配置为
Sys-Clock |
320MHz |
APB1 |
320MHz |
APB2 |
320MHz |
ADC-Freq |
80MHz |
二、代码设计
- 将ADC设置为:软件触发+连续转换+2.5采样周期
- 使用基本定时器TMR6定时1秒,每次溢出产生中断TMR_OVF_INT
- ADC转换完成后产生转换完成中断ADC_OCCE_INT
- 在ADC转换完成中断内 将计数值++,这个计数值就是ADC的转换频率
/**
* [url=home.php?mod=space&uid=159083]@brief[/url] this function handles adc1_2_3 handler.
* @param none
* @retval none
*/
void ADC1_2_3_IRQHandler(void)
{
if(adc_flag_get(ADC1, ADC_OCCE_FLAG) != RESET)
{
adc_flag_clear(ADC1, ADC_OCCE_FLAG);
adc1_conversion_end_flag++;
}
}
void TMR6_DAC_GLOBAL_IRQHandler(void)
{
if(tmr_flag_get(TMR6, TMR_OVF_FLAG) != RESET)
{
printf("ADC_Value: %u\tFreq: %dHz\n", ADC1->odt, adc1_conversion_end_flag);
adc1_conversion_end_flag = 0;
tmr_flag_clear(TMR6, TMR_OVF_FLAG);
}
}
三、实验结果:
- 如果对APB1/2 二分频处理,最大采样速率只有4.92MSPS
- 如果对APB1/2 不分频处理,最大采样速率可以达到5.33MSPS