找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3679|回复: 0
收起左侧

stm8单片机的ADC2连续采集通道间干扰

[复制链接]
ID:421536 发表于 2019-8-1 15:37 | 显示全部楼层 |阅读模式
1.      
本项目使用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();
2.      问题
采集过程中需要频繁切换选中的通道,这时候就会出现通道之间的干扰,产生一个明显的影响。例如,室温为27°时,采集到的温度只有23/24℃。
3.      原理
搜索51hei上的相关问题,我找到一个本论坛大神比较合理的解释。
关于通道间干扰问题.png

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

以上Word格式文档51黑下载地址:
ADC2连续采集模式并轮流采集.doc (69.5 KB, 下载次数: 20)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表