找回密码
 立即注册
查看: 986|回复: 9

ADC采集多路电压问题

[复制链接]

该用户从未签到

6

主题

16

回帖

88

积分

注册会员

积分
88
发表于 2023-4-18 17:40:27 | 显示全部楼层 |阅读模式
现在我使用STC8A8K64D4,同时采集15路的电压,但是采集信号是方波信号。

ADC采集多路电压问题-1.png

在只使用一个通道采集时,可以确保每次都能采集到最低点和最高点,采集正常,如下图
ADC采集多路电压问题-2.png
但是多通道采集的时候,总是没法采集到
ADC采集多路电压问题-3.png

使用的例程是移植STC8H的03案例
ADC采集多路电压问题-4.png

下面是AD的配置参数代码

/******************* AD配置函数 *******************/
void        ADC_config(void)
{
        ADC_InitTypeDef                ADC_InitStructure;                //结构定义
        ADC_InitStructure.ADC_SMPduty   = 15;                //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
        ADC_InitStructure.ADC_CsSetup   = 0;                //ADC 通道选择时间控制 0(默认),1
        ADC_InitStructure.ADC_CsHold    = 1;                //ADC 通道选择保持时间控制 0,1(默认),2,3
        ADC_InitStructure.ADC_Speed     = ADC_SPEED_2X1T;                //设置 ADC 工作时钟频率        ADC_SPEED_2X1T~ADC_SPEED_2X16T
        ADC_InitStructure.ADC_Power     = ENABLE;                                //ADC功率允许/关闭        ENABLE,DISABLE
        ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;        //ADC结果调整,        ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
        ADC_InitStructure.ADC_Priority    = Priority_0;                        //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
        ADC_InitStructure.ADC_Interrupt = DISABLE;                        //中断允许        ENABLE,DISABLE
        ADC_Inilize(&ADC_InitStructure);                                        //初始化
        ADC_PowerControl(ENABLE);                                                        //单独的ADC电源操作函数, ENABLE或DISABLE
}


请问有什么方法解决吗
回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-4-18 18:22:06 | 显示全部楼层
    多通道轮询采样时建议降低采样频率,将通道选择时间、保持时间、采样时间控制等调大试试。
    另外,切换通道后可先读一次并丢弃结果, 让内部的采样电容的电压等于输入值。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-4-18 19:38:37 | 显示全部楼层
    采样时间要够,你将采样时间先设置到最大
    ===另外你原理图的PDF发上来
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    6

    主题

    16

    回帖

    88

    积分

    注册会员

    积分
    88
     楼主| 发表于 2023-4-19 15:04:39 | 显示全部楼层
    乘风飞扬 发表于 2023-4-18 18:22
    多通道轮询采样时建议降低采样频率,将通道选择时间、保持时间、采样时间控制等调大试试。
    另外,切换通道 ...

    感谢,切换通道后丢弃一次结果,采集正常
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    6

    主题

    16

    回帖

    88

    积分

    注册会员

    积分
    88
     楼主| 发表于 2023-4-19 15:05:40 | 显示全部楼层
    神农鼎 发表于 2023-4-18 19:38
    采样时间要够,你将采样时间先设置到最大
    ===另外你原理图的PDF发上来

    已解决,感谢答复,在采样时间加到最大后,每次轮询通道都丢第一次结果,采集正常
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-4-19 17:41:00 | 显示全部楼层
    采样时间要够,你将采样时间如已设置到最大,你还要丢1次数据  ?????????????????????
    ===那你电路严重不合理
    ===另外你实际焊接的原理图的PDF不发上来,谁能发现你错在哪

    我是不认可 多采样/转换N次,丢N次,当延长采样时间的
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-4-19 17:42:44 | 显示全部楼层
    采样实际 就是 【外面1个等效电容】 通过1个【等效电阻】 和【内部的采样电容】互相充放电

    借用下面这个夸张的示意图,手头没合适的图:
    C24是MCU内部的ADC采样保持电容/17pF;
    R110是MCU的内部通道等效电阻,可能是 700欧 + 200欧的MCU内部走线电阻
    C25是外部输入信号源;
    C24和C25如采样时间不够/就是互相充放电时间不够,
    那内外2个电容的电位还没相等,你就关闭采样进行转换,那转换出来的值就不是外部C25的电位,
    而只是和C25不等的C24当时的电位 !!! 当然就不是外部的电位了
    减小外部 C25和R108, 缩短充放电时间


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2023-4-27 15:24:16 | 显示全部楼层
    楼主能否说明你这15路方波的频率?
    假设方波频率最高为fmax,而采样速度至少要2倍,连续采15路,则采样速度至少为 fmax * 2*15=fmax *30,即至少使用方波频率的30倍以上(实际4倍频60倍以上更好)。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-10 15:03
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    1

    主题

    19

    回帖

    83

    积分

    注册会员

    积分
    83
    发表于 2024-5-7 22:16:58 | 显示全部楼层
    我碰到的问题是,设置采集ADC_CH2和ADC_CH3,电源加到ADC_CH2,数值没有变化,加到ADC_CH3,CH2和CH3的值都有变化,一个是2.5V,一个是3.3V,目前还没有解决....有经验的大神麻烦知道下?

    点评

    先用官方的ADC测试下,串口返回结果。  详情 回复 发表于 2024-5-9 10:09
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2024-5-9 10:09:17 | 显示全部楼层
    独风轻扬 发表于 2024-5-7 22:16
    我碰到的问题是,设置采集ADC_CH2和ADC_CH3,电源加到ADC_CH2,数值没有变化,加到ADC_CH3,CH2和CH3的值都有变 ...

    先用官方的ADC测试下,串口返回结果。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 05:32 , Processed in 0.077908 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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