你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F091RC ADC奇怪的异常

[复制链接]
geekland 提问时间:2020-4-3 22:04 /
寻求大神帮忙,最近在使用NUCLEO F091RC这个开发板的时候,使用ADC1外设,发现这个外设有点问题。
现象如下: 设置PA0为ADC输入引脚,设置为单次转换,发现在ADSTART寄存器被置1的瞬间,用示波器量PA0引脚居然被拉到3.3V。正常PA0引脚应该是0V,而DR寄存器读出来的值也非0值,而是0XFFF,读的是那个异常的波峰的值。
开发板没有做任何修改,使用的代码也是cubemx生成的。整个代码如下:
int main(void)
{
  /* ADC Configuration */
  ADC_Config();

  /* Infinite loop */
  while (1)
  {
    /* Test EOC flag */
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

    /* Get ADC1 converted data */
    ADC1ConvertedValue =ADC_GetConversionValue(ADC1);

    /* Compute the voltage */
    ADC1ConvertedVoltage = (ADC1ConvertedValue *3300)/0xFFF;
  }
}

模拟的手法就是用KEIL对ADC1的ADSTART寄存器写1,异常波形就出来了,波形如下:


异常波形.png
收藏 评论7 发布时间:2020-4-3 22:04

举报

7个回答
geekland 回答时间:2020-4-4 00:14:44
我如果直接把这个脚接地,就不会有这个现象,会不会是阻抗匹配的问题? 可是我如果用两个1K电阻分压一下,虽然上升的电平幅度会有变化,但是还是会有尖峰,那这个ADC的内部阻抗也太小了吧。
geekland 回答时间:2020-4-4 00:15:36
不知道这个系列的ADC引脚,阻抗是多少呢?
aiherong 回答时间:2020-4-4 04:57:26
能说一下,具体你是怎样向寄存器写1的?
wenyangzeng 回答时间:2020-4-4 08:36:38
官方就有代码可参考,对比以下看是否把输入加上拉了。

ADC.rar (99.98 KB, 下载次数: 4)

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

glenxu 回答时间:2020-4-14 09:12:22
我做过试验,输入悬空会有这个现象,如果必须有输入开路或输入阻抗很高的情况,请在输入端并联一个500K~2M的电阻试试。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

likang1202 回答时间:2020-4-14 09:45:29
围观
butterflyspring 回答时间:2020-4-14 15:39:18
从这边板子的图纸上看,ADC引脚悬空,容易受到数字噪声影响。为了保证对采样信号真实的有效的给ADC内部采样电容充电,所以ADC通道外部电路需要一定的阻容才能有效工作。
ADC 外部电路图.PNG

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版