21ic问答首页 - ADC采样相互影响
ADC采样相互影响
TROAE2021-04-09
当通道0采样时,通道1的值是通道0的一半左右,通道1采样时,通道0的值是通道一的一半左右,已经测量了外部电压正确,AD采样值不正确,排除了电路问题。同时也检查了ADC转换时间也符合最低要求。请问是为什么?下面是AD采样程序。
void AdConvert(void)
{
if(FALSE == M0P_ADC->CR0_f.START)
{
switch(channle){
case 0:
adbuf[0]= M0P_ADC->RESULT0_f.RESULT0;
channle =1;
M0P_ADC->CR2 = 1<<channle; //0x00001000
break;
case 1:
adbuf[1]= M0P_ADC->RESULT1_f.RESULT1;
channle =0;
M0P_ADC->CR2 = 1<<channle; //0x00000010
break;
default: channle =3; break;
}
Adc_ClrAccResult();
Adc_Start();
waitCnt = 0;
}
else {
if(++waitCnt >= 500) {
waitCnt = 0;
AdcConfig();
}
}
}
void AdConvert(void)
{
if(FALSE == M0P_ADC->CR0_f.START)
{
switch(channle){
case 0:
adbuf[0]= M0P_ADC->RESULT0_f.RESULT0;
channle =1;
M0P_ADC->CR2 = 1<<channle; //0x00001000
break;
case 1:
adbuf[1]= M0P_ADC->RESULT1_f.RESULT1;
channle =0;
M0P_ADC->CR2 = 1<<channle; //0x00000010
break;
default: channle =3; break;
}
Adc_ClrAccResult();
Adc_Start();
waitCnt = 0;
}
else {
if(++waitCnt >= 500) {
waitCnt = 0;
AdcConfig();
}
}
}
赞0
这个确实比较**
评论
2021-04-12
赞0
评论
2021-04-10
赞0
问题在在于我不知道选项字节在代码中如何实现????
评论
2021-04-10
赞0
评论
2021-04-09
赞0
【】里面是选项字节,哥哥,玩这个的都知道怎么回事
评论
2021-04-09
赞0
评论
2021-04-09
赞0
评论
2021-04-09
赞0
延时解决不了的。
评论
2021-04-09
赞1
从采样保持的原理来理解,应该这样做:采样->ADC,切换通道,延时,采样->ADC,切换通道,依此循环,就是要给采样足够的时间,采样是对电容充放电,需要时间。ADC完成后先切换通道,再延时。
评论
2021-04-09
您需要登录后才可以回复 登录 | 注册