ADC采集多路电压问题
现在我使用STC8A8K64D4,同时采集15路的电压,但是采集信号是方波信号。在只使用一个通道采集时,可以确保每次都能采集到最低点和最高点,采集正常,如下图
但是多通道采集的时候,总是没法采集到
使用的例程是移植STC8H的03案例
下面是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
}
请问有什么方法解决吗
多通道轮询采样时建议降低采样频率,将通道选择时间、保持时间、采样时间控制等调大试试。
另外,切换通道后可先读一次并丢弃结果, 让内部的采样电容的电压等于输入值。 采样时间要够,你将采样时间先设置到最大
===另外你原理图的PDF发上来 乘风飞扬 发表于 2023-4-18 18:22
多通道轮询采样时建议降低采样频率,将通道选择时间、保持时间、采样时间控制等调大试试。
另外,切换通道 ...
感谢,切换通道后丢弃一次结果,采集正常 神农鼎 发表于 2023-4-18 19:38
采样时间要够,你将采样时间先设置到最大
===另外你原理图的PDF发上来
已解决,感谢答复,在采样时间加到最大后,每次轮询通道都丢第一次结果,采集正常 采样时间要够,你将采样时间如已设置到最大,你还要丢1次数据?????????????????????
===那你电路严重不合理
===另外你实际焊接的原理图的PDF不发上来,谁能发现你错在哪
我是不认可 多采样/转换N次,丢N次,当延长采样时间的 采样实际 就是 【外面1个等效电容】 通过1个【等效电阻】 和【内部的采样电容】互相充放电
借用下面这个夸张的示意图,手头没合适的图:
C24是MCU内部的ADC采样保持电容/17pF;
R110是MCU的内部通道等效电阻,可能是 700欧 + 200欧的MCU内部走线电阻
C25是外部输入信号源;
C24和C25如采样时间不够/就是互相充放电时间不够,
那内外2个电容的电位还没相等,你就关闭采样进行转换,那转换出来的值就不是外部C25的电位,
而只是和C25不等的C24当时的电位 !!! 当然就不是外部的电位了
减小外部 C25和R108, 缩短充放电时间
https://www.stcaimcu.com/data/attachment/forum/202303/08/145425xkmtkkzp6tzgkx0x.png
楼主能否说明你这15路方波的频率?
假设方波频率最高为fmax,而采样速度至少要2倍,连续采15路,则采样速度至少为 fmax * 2*15=fmax *30,即至少使用方波频率的30倍以上(实际4倍频60倍以上更好)。 我碰到的问题是,设置采集ADC_CH2和ADC_CH3,电源加到ADC_CH2,数值没有变化,加到ADC_CH3,CH2和CH3的值都有变化,一个是2.5V,一个是3.3V,目前还没有解决....有经验的大神麻烦知道下?
独风轻扬 发表于 2024-5-7 22:16
我碰到的问题是,设置采集ADC_CH2和ADC_CH3,电源加到ADC_CH2,数值没有变化,加到ADC_CH3,CH2和CH3的值都有变 ...
先用官方的ADC测试下,串口返回结果。
页:
[1]