芯片解密单片机解密GD32C103GD32 ADC采样问题

简介

最近用GD32F303CCT6的ADC采集电压,测试过程中发现ADC存在诡异的问题。调节测量电压,绝大部分情况下均能正确采样电压值,证明软硬件没有问题。但在做精细调节测试时,发现当采样信号大致在0.415V~0.455V之间时,ADC采样值不变。一开始以为硬件问题,经过反复排查,确认引脚上的电压和设定值一致,并且一旦超过该范围,又能采样到正确的值。而且在其他某些电压区间也存在该问题。


但经过测试,将rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4)放在adc_calibration_enable(ADC0)后面,问题并未解决。最后怀疑是不是ADC时钟太快,将时钟降低,改位rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6),问题有所好转,出问题的区间电压范围似乎变小了,但并未完全解决。如此来说应该就是ADC的时钟问题,最后把时钟再降低,改为rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV8),问题解决!


通过GD官方手册的描述,ADC时钟是可以达到30M的,我的板子APB2时钟为120M,rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4)将ADC时钟分频为30M,理论上是没问题的。通过这次掉坑的经历来看,GD32的ADC时钟还是不能太快。
  • 数据手册下载

相关