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

STM32F091RC ADC奇怪的异常

[复制链接]
Max.xu 提问时间: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个回答
Max.xu 回答时间:2020-4-4 00:14:44
我如果直接把这个脚接地,就不会有这个现象,会不会是阻抗匹配的问题? 可是我如果用两个1K电阻分压一下,虽然上升的电平幅度会有变化,但是还是会有尖峰,那这个ADC的内部阻抗也太小了吧。
Max.xu 回答时间: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, 下载次数: 5)

评分

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

查看全部评分

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

评分

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

查看全部评分

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

评分

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

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版