0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

聚沃科技 2024-01-26 09:45 次阅读

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

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

原因一:

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

wKgZomWzDmiAGoXlAABF4RuCVXs186.png

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

wKgaomWzDmyAFGZpAAE-seG1x8U131.png

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

wKgZomWzDnKAN7zAAAA77ctDYS4267.png

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

原因二:

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

wKgZomWzDniACsFoAAA5AlZlBSQ774.png

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

wKgaomWzDoGAB2ZpAAGTtkDOTf4531.png

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

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

    关注

    6002

    文章

    43982

    浏览量

    620915
  • IO
    IO
    +关注

    关注

    0

    文章

    397

    浏览量

    38516
  • adc
    adc
    +关注

    关注

    95

    文章

    5653

    浏览量

    539508
  • GD32
    +关注

    关注

    7

    文章

    333

    浏览量

    23748
收藏 人收藏

    评论

    相关推荐

    GD32开发实战指南(基础篇) 第14章 内部温度传感器

    GD32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。该温度传感器在内部和 ADCx_IN16 输入通道相连接,此通道
    的头像 发表于 05-17 08:58 4041次阅读
    <b class='flag-5'>GD32</b>开发实战指南(基础篇) 第14章 <b class='flag-5'>内部</b>温度传感器

    GD32 ADC内部通道采样异常原因#GD32 #单片机 #嵌入式开发 #ADC

    单片机mcu
    聚沃科技
    发布于 :2024年01月26日 09:54:01

    如何通过GD32 MCU内部ADC参考电压通道提高采样精度?#GD32 #MCU #ADC

    单片机mcu
    聚沃科技
    发布于 :2024年02月26日 09:21:16

    ADuc7023 ADC采样异常

    我们的产品单片机以后,ADC采样全部异常,具体表现如下: 开发板上电源电压采样出来大约是3.3V,温度采样大约是32度左右,另外有三个
    发表于 02-28 14:16

    什么是GD32

    一、前言什么GD32GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。所以GD32和STM32有很多地方都是一样的,不过
    发表于 08-12 07:46

    怎样使用软件触发读取GD32ADC

    GD32ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6使用步骤1.初始化IO引脚设置为模拟输入模式2.初始
    发表于 01-26 07:05

    GD32替换STM32?这些坑你别踩...

    的输入阻抗相对来说要小。具体情况见下表这是跑在72M的主频下,ADC采样时钟为14M的输入阻抗和采样周期的关系:8、FSMCSTM32只有100Pin以上的大容量(256K及以上)才有FSMC,
    发表于 03-31 10:51

    GD32F310-ADC规则组连续采样

    即可配置。有一点疑问的地方就是ADC_CTL1寄存器中的 ETSRC[2:0] 的软件触发选项,目前是不用配置也不影响你的软件触发ADC转换。注入通道的 ETSIC[2:0] 没有测试,大致应该是一样的。原作者:兆易创新
    发表于 10-21 15:21

    GD32是否有内部的晶振?

    能用GD32内部晶振作为时钟源吗
    发表于 10-10 06:35

    GD32GD32读取ADC数据

    GD32ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6使用步骤1.初始化IO引脚设置为模拟输入模式2.初始
    发表于 12-02 15:06 26次下载
    【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>读取<b class='flag-5'>ADC</b>数据

    GD32GD32设置TIMER0输出PWM

    GD32ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6使用步骤1.初始化IO引脚设置为模拟输入模式2.初始
    发表于 12-02 15:06 21次下载
    【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>设置TIMER0输出PWM

    GD32GD32 DMA+ADC通道扫描

    芯片:GD32F350 运行在8M目标:每10ms读取三个adc通道,并且通过DMA传输流程1.配置DMA传输2.配置ADC模式和通道3.配
    发表于 12-02 15:06 16次下载
    【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b> DMA+<b class='flag-5'>ADC</b>多<b class='flag-5'>通道</b>扫描

    GD32 串口接受异常的几个原因

    前面我们介绍过GD32 485发送时出现异常的最常见原因,有小伙伴反馈想要知道GD32 串口接受异常的可能
    的头像 发表于 01-18 09:57 1793次阅读
    <b class='flag-5'>GD32</b> 串口接受<b class='flag-5'>异常</b>的几个<b class='flag-5'>原因</b>

    GD32 MCU ISP失败的原因

    玩过GD32的小伙伴们都知道,GD32 MCU支持ISP,即在系统编程,前面的常见问题也给大家讲过什么是ISP,什么是IAP?那有没有小伙伴遇到过ISP失败的情况,失败的原因是什么呢?
    的头像 发表于 02-28 09:23 412次阅读
    <b class='flag-5'>GD32</b> MCU ISP失败的<b class='flag-5'>原因</b>

    GD32断上电采样相同电压有偏差如何处理?

    大家是否碰到过使用GD32 MCU断上电采样相同的电压存在偏差的情况?如果在上电正常运行的情况下,采样相同的直流电压,ADC采样数值都比较稳
    的头像 发表于 02-29 09:44 200次阅读
    <b class='flag-5'>GD32</b>断上电<b class='flag-5'>采样</b>相同电压有偏差如何处理?