您好、专家!
我要求在这里为我的客户提供帮助。
他们使用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 采样的需求。 非常感谢!