zoukankan      html  css  js  c++  java
  • STM32的AD通道干扰问题

      今天调试STM32F103的ADC,使用ADC1单次转换模式进行两通道AD采样,发现两路通道存在烦扰问题。相关AD操作代码如下:

    void adc_start_convert(uint8_t ch)
    {
        ADC1->SMPR2 = (ADC1->SMPR2 & 0XFFFFFFF8) | 7;
        ADC1->SQR3 = (ADC1->SQR3 & 0XFFFFFFE0) | ch;
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    }
    
    
    uint8_t adc_is_convert_finish(void)
    {
        if((ADC1->SR&0x02) == 0)
            return 0;
        else
            return 1;
    }
    
    uint16_t adc_get_value(void)
    {
        return ADC1 -> DR;
    }

      进过多次调试,最终的解决方式如下:

      1.修改ADC时钟频率

    RCC_ADCCLKConfig(RCC_PCLK2_Div8);

      2.修改ADC启动转换函数

    void adc_start_convert(uint8_t ch)
    {
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_13Cycles5);
    //     ADC1->SMPR2 = (ADC1->SMPR2 & 0XFFFFFFF8) | 7;
    //     ADC1->SQR3 = (ADC1->SQR3 & 0XFFFFFFE0) | ch;
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    }

      对于解决步骤(2),利用STM32官方库的方式与直接操作寄存器的方式理论上效果应该是一致的,但实测发现,利用直接操作寄存器的方式仍存在干扰。这个问题未能发现原因。

  • 相关阅读:
    mapreduce 函数入门 二
    mapreduce 函数入门 一
    Flume+Kafka+Storm+Redis 大数据在线实时分析
    mapReduce 大数据离线分析
    docker 简介
    flume安装使用+根据数据源分类
    hiho 171周
    如何新建一个空的optix工程
    读 Real-Time Rendering 收获
    hiho 1590
  • 原文地址:https://www.cnblogs.com/Si-Mao/p/4355333.html
Copyright © 2011-2022 走看看