GD32 MCU ADC采样率如何计算?

描述

大家在使用ADC采样的时候是否计算过ADC的采样率,这个问题非常关键!

以下为GD32F303系列MCU中有关ADC的参数,其中ADC时钟最大值为40MHz,12位分辨率下最大采样率为2.86MSPS.如果ADC时钟超频的话,可能会造成ADC采样异常,因而对于ADC时钟以及采样率的计算很重要。

GD32

 

首先给大家介绍下ADC时钟如何配置,如下为RCU时钟树中有关ADC时钟的说明,通过ADCPSC控制位可以选择ADC时钟来自于AHB还是APB2分频,若ADCPSC配置为0,ADC时钟为APB2时钟2/4/6/8/12/16分频,若ADCPSC配置为1,ADC时钟为AHB时钟5/6/10/20分频。

GD32

 

ADC时钟配置可通过以下rcu_adc_clock_config函数实现。

/*! \brief configure the ADC prescaler factor \param[in] adc_psc: ADC prescaler factor only one parameter can be selected which is shown as below: \arg RCU_CKADC_CKAPB2_DIV2: ADC prescaler select CK_APB2 / 2 \arg RCU_CKADC_CKAPB2_DIV4: ADC prescaler select CK_APB2 / 4 \arg RCU_CKADC_CKAPB2_DIV6: ADC prescaler select CK_APB2 / 6 \arg RCU_CKADC_CKAPB2_DIV8: ADC prescaler select CK_APB2 / 8 \arg RCU_CKADC_CKAPB2_DIV12: ADC prescaler select CK_APB2 / 12 \arg RCU_CKADC_CKAPB2_DIV16: ADC prescaler select CK_APB2 / 16 \arg RCU_CKADC_CKAHB_DIV5: ADC prescaler select CK_AHB / 5 \arg RCU_CKADC_CKAHB_DIV6: ADC prescaler select CK_AHB / 6 \arg RCU_CKADC_CKAHB_DIV10: ADC prescaler select CK_AHB / 10 \arg RCU_CKADC_CKAHB_DIV20: ADC prescaler select CK_AHB / 20 \param[out] none \retval none */ void rcu_adc_clock_config(uint32_t adc_psc)

ADC时钟计算好后,根据不同的分辨率就可以计算采样率了,如下图所示,不同的分辨率对应的采样转换时间是不同的,比如12位分辨率,采样转换就需要14个ADCCLK。

GD32

 

综上举例:如果系统时钟AHBCLK为120M,APB2时钟为60M,如果ADC时钟配置为rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6),那么ADCCLK的时钟为60M/6=10M,若ADC配置为12位分辨率,则ADC采样转换时间为14/10M=1400ns,采样率为10M/14=714KSPS.

画两个重点:1、ADC采样时钟一定不要超过手册标注的最大值;2、若采样定时触发ADC采样的话,定时触发的周期要大于多通道ADC采样时间之和。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分