程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

STM32 ADC没有输入电压时,采集结果不为0

发布于2021-05-30 19:01     阅读(1162)     评论(0)     点赞(9)     收藏(2)


1. 问题概述

硬件焊接完成后测试程序ADC采集功能,先通过接入3.3V来看下。结果发现三个通道可以采集到0V/3.3V,而另外三个通道在没有接入3.3V时,采集结果并不为0,基本在1V以上。

2. 问题分析

6个通道都是ADC1,对于程序来说,不同通道只是设置下通道号而已,按道理不应该出现部分采集正常,部分采集异常呀?
查了不少资料手册和例程,程序配置上没有发现明显问题。翻出了一块旧电路板,正好使用了出现异常的一个ADC通道。将程序直接下载进去,发现可以采集0V/3V。
对比两块电路板的原理图,发现了差异。可以正常采集的三个通道,外部电路均进行了分压:
在这里插入图片描述
而出现问题,浮空时仍然采集到电压的三个通道,外部电路均为直接输入:
在这里插入图片描述
顺着这个角度查阅了一些资料,的确有人遇到相同的情况,普遍反应是ADC管脚不要悬空使用。

相当于一个悬浮电压,大概为3.3V的一半。
是因为里面多路开关的特性引起的,开关输入引脚悬空就是个亚稳态。

回想一下,确实以前遇到的都是先分压再接到STM32的IO,一直以为是单纯因为参考电压的限制。这次因为采集电压的压值并不高,且电流非常小,担心会采不准,所以选择了直接接到IO上。不过查看了下手册,并没有找到相关的说明:
在这里插入图片描述
哪位大佬看到还希望能够详细解释下

3. 复用功能

刚开始怀疑是没有成功配置成ADC功能。如下图:
在这里插入图片描述
第二功能有好多个,如何选择成ADC呢?程序上还真没有针对性的做过配置,查了一番:

PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。(如何理解STM32单片机引脚的复用功能?

但是我的程序一直使能了USART2,又开启了ADC。测试结果是可以正常作为ADC来使用的,并不需要关闭USART2的时钟。可能是因为把管脚配置成了模拟输入

4. 总结

越来越发现,单片机程序写了不少,往往更关注业务逻辑,一些细节理解还不到位。一直以为悬空会不稳定,只是对电平输入而言,没想到模拟输入同样存在这个问题。
一位同事之前还用悬空的AD通道来做硬件随机数发生器,看来还是自己的经验不足,要继续努力呀

原文链接:https://blog.csdn.net/u014448875/article/details/117298783



所属网站分类: 技术文章 > 博客

作者:龙膜授权

链接:http://www.phpheidong.com/blog/article/86673/70a75ec0aff88643f5bc/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)