This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28034:ADC:初始转换、第一个采样也许不是正确的转换结果、或者被丢弃?

Guru**** 2392095 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1273934/tms320f28034-adc-initial-conversion-the-first-sample-may-not-be-the-correct-conversion-result-or-discard

器件型号:TMS320F28034

您好、专家!

我要求在这里为我的客户提供帮助。

他们使用80引脚 F28034-PN 来开发 HVAC、还发现了有关 ADC 初始转换的以下限制。

下面是客户 ADC 代码、他们使用 EPWM1_SOCA 触发 顺序 SOC0~SOC11和 SOC15、 同时他们还使用 EPWM4_SOCB 触发 顺序 SOC12、SOC13 和 SOC14。 因此、根据勘误手册、ADCRESULT0和 ADCRESULT12会缺失或不正确、对吗? 如果是、 错误会消失多远?  

EALLOW;
AdcRegs.ADCCTL1.bit.RESET = 1;

asm(" NOP ");
asm(" NOP ");

AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;
AdcRegs.ADCCTL1.bit.ADCREFPWD = 1;
AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
AdcRegs.ADCCTL1.bit.ADCENABLE = 1;
(*Device_cal)();
asm(" RPT#100 || NOP");

DELAY_US(ADC_usDELAY);

AdcRegs.ADCCTL1.bit.INTPULSEPOS = 0;
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;

AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 25;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 25;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC13CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC14CTL.bit.ACQPS = 30;
AdcRegs.ADCSOC15CTL.bit.ACQPS = 6;

AdcRegs.ADCSOC0CTL.bit.CHSEL= 3;
AdcRegs.ADCSOC1CTL.bit.CHSEL= 3;
AdcRegs.ADCSOC2CTL.bit.CHSEL= 4;
AdcRegs.ADCSOC3CTL.bit.CHSEL= 6;
AdcRegs.ADCSOC4CTL.bit.CHSEL= 2;
AdcRegs.ADCSOC5CTL.bit.CHSEL= 1;
AdcRegs.ADCSOC6CTL.bit.CHSEL= 0x0e;
AdcRegs.ADCSOC7CTL.bit.CHSEL= 0x00;
AdcRegs.ADCSOC8CTL.bit.CHSEL= 0x0d;
AdcRegs.ADCSOC9CTL.bit.CHSEL= 0x0f;
AdcRegs.ADCSOC10CTL.bit.CHSEL= 9;
AdcRegs.ADCSOC11CTL.bit.CHSEL= 7;

AdcRegs.ADCSOC12CTL.bit.CHSEL= 0x0b;
AdcRegs.ADCSOC13CTL.bit.CHSEL= 0;
AdcRegs.ADCSOC14CTL.bit.CHSEL= 8;
AdcRegs.ADCSOC15CTL.bit.CHSEL= 5;

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 5;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 5;

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x0c;
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 0x0c;
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 0x0c;
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 5;

AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC1 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC2 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC3 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC4 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC5 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC6 = 0;
AdcRegs.ADCINTSOCSEL1.bit.SOC7 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC8 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC9 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC10 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC11 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC12 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC13 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC14 = 0;
AdcRegs.ADCINTSOCSEL2.bit.SOC15 = 0;

AdcRegs.ADCCTL1.bit.TEMPCONV = 1;

AdcRegs.INTSEL1N2.bit.INT1SEL = 3;
AdcRegs.INTSEL1N2.bit.INT1CONT = 0;
AdcRegs.INTSEL1N2.bit.INT1E = 1;

AdcRegs.INTSEL1N2.bit.INT2SEL = 13;
AdcRegs.INTSEL1N2.bit.INT2CONT = 0;
AdcRegs.INTSEL1N2.bit.INT2E = 1;

在一个字中、80引脚 F28034只有一个 ADC 模块有16个通道、而 ADC 只有16个 SOC 触发信号 、所以如果设定下面的顺序或同步采样模式、如果应用程序调用一个指定的转换系列、SOC0→SOC1→SOC2、来定期启动。 然后改为将系列设置为 SOC0→SOC1→SOC2→SOC3、并且仅使用最后三个转换、即 ADCRESULT1、ADCRESULT2、ADCRESULT3、从而丢弃 ADCRESULT0。 因此、客户会 浪费一些模拟渠道资源。   您能否更详细地解释一下"ADC:初始转换"? 或如何设计以满足客户对多达16通道 ADC 采样的需求。 非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、绍兴市

    在您所述的情况下、 ADCRESULT0和 ADCRESULT12将是不正确的。  我认为我们没有关于第一个采样错误会有多糟糕的文档、因为这会针对每种情形发生变化。  

    我认为没有一种使用所有16个 SOC 的明确方法、他们只需要找到一种方法来触发第一个 SOC 两次。 例如、它们可以使用位于 SOC0的 EOC 处的 ADC 中断来软件触发 SOC0。  

    此致、

    本·科利尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ben:

    明白了、非常感谢您的评论。