打印
[STM8]

[经验] 关于STM8sADC2采集通道间相互干扰问题

[复制链接]
708|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本项目使用ADC2+多通道进行ADC温度传感器采集,由于ADC2没有缓存模式,只能一次一次去读取采集的数据,即读取“ADC数据低位寄存器(ADC_DRL)和ADC数据高位寄存器(ADC_DRH)”,在使用多通道连续采集的时候,只能按照先后顺序去采集+读取数据并做响应处理。
       初始化配置的代码如下:
  • void bsp_AdcInit()
    {
    ADC_CR2_ALIGN = 1;     //右对齐数据
    ADC_CR1_CONT = 1;      //连续转换模式
    ADC_CR1_SPSEL = 4;     //8分频时钟
    }
    void bsp_Channel9Init()//PE6->温度1
    {
    ADC_CR1_ADON = 1;     //启动转换
    ADC_CSR &= (uint8_t)(~0x0F);  // Clear the ADC2 channels
    ADC_CSR |= 0X09;      
    ADC_CR1_ADON = 1;      //启动转换
      
    }
    void bsp_Channel8Init()//PE7->温度2
    {
      ADC_CR1_ADON = 1;     //启动转换
    ADC_CSR &= (uint8_t)(~0x0F);  // Clear the ADC2 channels   
    ADC_CSR |= 0X08;
    ADC_CR1_ADON = 1;      //启动转换
    }
    需要采集哪个通道的数据就调用哪个通道的配置函数,
    //--------------------温度采集-------------------
         bsp_AdcVoltageToTemp8();   
         bsp_AdcVoltageToTemp9();


[color=rgb(51, 102, 153) !important]复制代码

2.      问题
采集过程中需要频繁切换选中的通道,这时候就会出现通道之间的干扰,产生一个明显的影响。例如,室温为27°时,采集到的温度只有23/24℃。
3.      原理
搜索网上相关问题,我找到一个比较合理的解释。

4.      解决方案
在调用切换通道的配置函数之后,加一个延时,等电容电压稳定过后,再去采集和处理数据。


使用特权

评论回复
沙发
stormwind123| | 2022-3-16 15:05 | 只看该作者
这排版有点乱啊

使用特权

评论回复
板凳
plsbackup| | 2022-11-19 14:57 | 只看该作者
这个问题貌似不好直接解决,只能不要多通道,单通道DAC, 在程序里面自己切换频道。

使用特权

评论回复
地板
robincotton| | 2022-11-20 15:23 | 只看该作者
把通道分别配置到ADC1和ADC2上面,彻底隔离。

使用特权

评论回复
5
zerorobert| | 2022-11-23 20:47 | 只看该作者
精度要求不高的话,把采样周期设置的大一些,越大越好。当然,干扰还是会有,只是会低一些。

使用特权

评论回复
6
qiufengsd| | 2022-11-23 22:24 | 只看该作者
如果采集通道数不多的话最好采用差分接入法.  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

1124

帖子

9

粉丝