主题中讨论的其他器件:C2000WARE
您好,
我准备在 ADC B、C、D 的连续模式下使用单端 ADC 但我想在连续模式下将 ADC A 用作差分、但我无法这样做。 我想将 A2和 A3用作差分信号、并将 A4和 A5用作其他差分信号。 它在 while 循环中以正常模式工作、但我无法在连续模式下工作。
请找到我的代码并建议我做什么。 它提供了错误的数据。
void Setup_AdcDifferentialContinuous()
{
uint16_t acqps;
acqps = 63; // 150ns
ADC_setPrescaler(ADCA_BASE, ADC_CLK_DIV_3_0);
//
// Set resolution and signal mode (see #defines above) and load
// corresponding trims.
//
ADC_setMode(ADCA_BASE,ADC_RESOLUTION_16BIT, ADC_MODE_DIFFERENTIAL);
// Set pulse positions to late
//
ADC_setInterruptPulseMode(ADCA_BASE, ADC_PULSE_END_OF_CONV);
//
// Power up the ADCs and then delay for 1 ms
//
ADC_enableConverter(ADCA_BASE);
TRACE_I(ADC_TRACE,"adc differential continuous mode config init \r\n");
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN2, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN3, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN4, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN5, acqps);
ADC_setInterruptSOCTrigger(ADCA_BASE, ADC_SOC_NUMBER0,
ADC_INT_SOC_TRIGGER_ADCINT1);
ADC_setInterruptSOCTrigger(ADCA_BASE, ADC_SOC_NUMBER1,
ADC_INT_SOC_TRIGGER_ADCINT1);
//
// Disable Interrupt flags
//
ADC_disableInterrupt(ADCA_BASE, ADC_INT_NUMBER1);
//
// Enable continuous mode
//
ADC_enableContinuousMode(ADCA_BASE, ADC_INT_NUMBER1);
//
// Configure interrupt triggers
//
ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER0);
//ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER1);
ADC_enableInterrupt(ADCA_BASE, ADC_INT_NUMBER1);
// Clear interrupts
HWREGH(ADCA_BASE + ADC_O_INTFLGCLR) = 0x000F;
ADC_forceMultipleSOC(ADCA_BASE, ADC_FORCE_SOC0 | ADC_FORCE_SOC1);
}


