geekland 发表于 2020-4-3 22:04:55

STM32F091RC ADC奇怪的异常

寻求大神帮忙,最近在使用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,异常波形就出来了,波形如下:


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

官方就有代码可参考,对比以下看是否把输入加上拉了。


glenxu 发表于 2020-4-14 09:12:22

我做过试验,输入悬空会有这个现象,如果必须有输入开路或输入阻抗很高的情况,请在输入端并联一个500K~2M的电阻试试。

likang1202 发表于 2020-4-14 09:45:29

围观

butterflyspring 发表于 2020-4-14 15:39:18

从这边板子的图纸上看,ADC引脚悬空,容易受到数字噪声影响。为了保证对采样信号真实的有效的给ADC内部采样电容充电,所以ADC通道外部电路需要一定的阻容才能有效工作。
页: [1]
查看完整版本: STM32F091RC ADC奇怪的异常