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

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

3天内不再提示

STM32F030芯片内部ADC结果挪位的问题分析及解决办法

茶话MCU 来源:茶话MCU 2024-01-05 10:14 次阅读

有人使用STM32F030芯片内部ADC的CH0、CH3、CH5共3个通道,单次扫描转换后通过DMA将结果放在一个数组,。ADC转换多通道的扫描方向是Forward,即将所选择通道按照从小编号往大编号通道依次转换。

在ADC的DMA传输完成中断里改变选择的通道序列,将原来的CH0、CH3、CH5改成CH1、CH3、CH5后,出现不同通道数据窜位或挪位情况。正常转换后的值应在20以内,却出现了1480左右的数值。

为什么会出现这种情况?是不是选定了一个转换序列后就不可以再改变转换序列?

简单点说,上面要表达的就是当更换ADC通道形成新的转换序列后,转换结果与预期不符,出现异常。

基于上面情况,我找到STM32F070RB 开发板做验证测试,尝试找找原因。也选用3个通道来验证。我这里先对CH14、CH15和CH17【内部与Vrefint电压相连】做ADC,其中CH14接地,CH15接VDD。转换结果使用DMA搬运到内存数组。

2f460cd6-aafd-11ee-8b88-92fbcf53809c.png

2f5ae5d4-aafd-11ee-8b88-92fbcf53809c.png

当上一个序列转换完成后,我将转换序列改成CH13,CH15,CH17,即将前面的CH14换成CH13,该通道未外接特定信号,处于浮空状态【转换结果可能不定】。然后,开启第2轮转换,之后结束测试。

我刚开始的用户测试代码是下面的这些。数组pData1[]和pData2[]分别存放前后两次的转换结果。用Delay(20)延时代替等待转换完成,反正这里只是做下验证测试而已。

2f7d6244-aafd-11ee-8b88-92fbcf53809c.png

两次的转换结果如下面截图所示:

2f9125c2-aafd-11ee-8b88-92fbcf53809c.png

第一次的3个通道的转换结果符合预期,是正确的。见上图中数组pData1【】的结果。

CH14接地,CH15接VDD,CH17接1.2v的Vrefint电压信号。

但第二次的3个通道的转换结果跟预期就不一致了。我希望得到的是CH13、CH15和CH17的转换结果,可现在看到的结果显然依次是CH13、CH14和CH15的,不见CH17的结果。

数据跟期望的不符,在内存中的位置也不对,出现了位置移动。另外,按理说CH14不应有转换结果出来,它明显出结果了。

难道说,我的第二次转换序列设置跟实际的转换序列不一致?现在感觉没看到CH17的结果,会不会已经出来了,只是跟我的DMA传输长度及数组长度设置有关?目前设置的长度为3,如果我把数组长度改长点,比方5吧。看看结果如何?

不出所料,看来第二次ADC转换的果真是4个通道的。见下图的pData2的结果。

2fa88a78-aafd-11ee-8b88-92fbcf53809c.png

这进一步证实了第二次的ADC配置有问题!再回头看看第2次ADC初始化的代码:

2fba5348-aafd-11ee-8b88-92fbcf53809c.png

从代码上看似乎并没有啥问题。相比第一次配置,只是把CH14换成了CH13,难道说我的第2次ADC配置增加CH13的同时CH14并没有被替换掉,而是依然存在于新的转换序列?

我们不妨借助调试工具看看ADC通道选择寄存器内容来证实当前的猜测。运行程序后借助调试环境可看到下面的ADC通道选择器的结果。

2fc42f80-aafd-11ee-8b88-92fbcf53809c.png

的确,第2次ADC配置后,转换序列里是4个通道而不是3个通道,即CH14通道依然存在于转换序列。这跟当前的输出结果就非常吻合了,只是不符合当前需求而已。

那么,如何让第二次ADC转换只使用CH13,CH15,CH17三个通道呢?

我们可以这样操作,在做第2次ADC转换序列初始化前,先将ADC做下复位。将前面代码稍加改动,注意下面红色代码行。

2ff6ac80-aafd-11ee-8b88-92fbcf53809c.png

再做调试运行,这次结果就正确了。见下面截图:

30007ae4-aafd-11ee-8b88-92fbcf53809c.png

看来,问题出在ADC的配置方面,ADC转换序列当然可以修改,只是要按照正确的步骤操作才行。

顺便提下,CH13是代码里另外加进去的,使用CubeMx配置的话,记得将CH13的复用管脚事先配置成Analog模式,这样让CubeMx创建工程时自动帮我们将该脚的GPIO复用功能配置好。






审核编辑:刘清

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

    关注

    16

    文章

    1133

    浏览量

    50570
  • 电压信号
    +关注

    关注

    0

    文章

    140

    浏览量

    12802
  • VDD
    VDD
    +关注

    关注

    1

    文章

    301

    浏览量

    31908
  • ADC芯片
    +关注

    关注

    3

    文章

    68

    浏览量

    20070
  • STM32F030
    +关注

    关注

    1

    文章

    33

    浏览量

    6462

原文标题:STM32F0 ADC结果挪位的问题分析及解决

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    连续开机半年死机,STM32F030使用内部晶体,现在冬天出现...

    本帖最后由 C-Korey 于 2018-1-25 10:01 编辑 STM32F030使用内部晶体,开机半年,现在冬天出现死机状态使用STM32F030做了一个室外机的内部的电源电
    发表于 08-20 07:14

    STM32F030 ADC结果为什么受串口RX电平影响

    用的CH340G的串口转USB板,连接STM32F030,3.3V供电,串口打印ADC结果。当串口芯片选用3.3V电平时,AD结果正常;当选
    发表于 11-02 08:50

    请问STM32F030有96的全球唯一的ID号吗?

    我知道STM32F051和STM32F103都有这个ID号,数据手册和参考手册上也写得很清楚。现在在用的STM32F030芯片,发现数据手册和参考手册都没有只字未提关于这个ID号的相关
    发表于 01-30 08:14

    有什么办法可以解决STM32F030产能不稳定的问题

    STM32F030之前以其稳定的性能及相对低廉的价格一直在客户的产品开发使用中占有很大的比重,近期由于全球疫情的影响,意法的产能极不稳定,而且供求关系必然导致成本的提高。有什么办法可以解决这个
    发表于 08-05 06:38

    STM32F103和STM32F030 ADC有哪些不同之处呢

    STM32F103和STM32F030 ADC有哪些不同之处呢?
    发表于 10-19 06:29

    使用STM32F030多路ADC采样遇到了哪些问题

    使用STM32F030多路ADC采样遇到了哪些问题?怎样去解决这些问题呢?
    发表于 10-21 09:29

    HC32F030可以替换STM32F030

    HC32F030具有哪些特点?HC32F030可以替换STM32F030吗?
    发表于 10-21 06:54

    STM32f030内部的FLASH擦写时间是多少

    STM32f030内部的FLASH擦写时间是多少?STM32f030内部的FLASH擦写次数是多少?STM32f030
    发表于 10-22 06:23

    如何去使用STM32F030内部时钟呢

    如何去使用STM32F030内部时钟呢?如何去使用STM32F030外的部时钟呢?
    发表于 10-26 06:58

    造成stm32F030ADC异常的原因是什么

    造成stm32F030ADC异常的原因是什么?stm32F030ADC异常该怎样办呢?
    发表于 02-10 06:52

    STM32F030的定时器PWM使用设置与ADC的dma代码

    里面是STM32F030的定时器PWM使用设置与ADC的dma代码
    发表于 03-21 15:29 151次下载

    stm32f030原理图

    stm32f030原理图
    发表于 10-09 17:16 283次下载

    如何建一个STM32F030工程模板(标准库版)

    如何建一个STM32F030工程模板(标准库版)
    发表于 12-08 20:21 0次下载
    如何建一个<b class='flag-5'>STM32F030</b>工程模板(标准库版)

    STM32F030低温下RTC不工作

    STM32F030低温下RTC不工作
    发表于 12-09 09:21 19次下载
    <b class='flag-5'>STM32F030</b>低温下RTC不工作

    STM32F030在低温下无法启动

    STM32F030在低温下无法启动
    的头像 发表于 09-27 16:19 1038次阅读
    <b class='flag-5'>STM32F030</b>在低温下无法启动