GD32 ADC内部通道采样异常原因

描述

熟悉GD32的小伙伴都知道,ADC除了可以采集IO口上的电压外,还有两个内部通道,分别为内部温度传感器通道(ADC0_CH16)和Vrefint通道(ADC0_CH17),其中内部温度传感器通道可以采集芯片周围的温度(注意,这个温度通道适用于采集相对温度,如果用来测试绝对温度,是有一定的误差哦),Vrefint是一个稳定的带隙基准电压,典型值为1.2V。

有的小伙伴反馈使用这两个内部通道时,始终得不到转换数据,那么可能的原因有哪些呢?

原因一:

使用ADC的外部通道即IO电压时,将IO口配置为模拟模式,

IO

 

然后配置ADC就可以正常工作了,而由于内部通道不需要配置IO口,所有有的小伙伴就直接将IO口的配置去除,但此时发现内部通道始终没有数据。

IO

 

这是因为ADC的配置中少了一个关键的函数,那就是adc_tempsensor_vrefint_enable:

IO

 

这个函数是用来打开ADC内部通道的,需要在ADC使能前调用,否则就没办法正常使用内部通道哦。

原因二:

我们知道同一个IO口可以给多个ADC单元来使用,比如PA0,从datasheet中可以看出可以用于ADC0、ADC1或ADC2的通道0

IO

 

所以很多小伙伴想当然的认为内部通道也可以给ADC1或ADC2来使用,但其实GD32的用户手册中已经明确的指出内部通道只能用于ADC0:

IO

 

所以你用ADC1或ADC2去转换,当然是不行的啦。

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

全部0条评论

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

×
20
完善资料,
赚取积分