主题中讨论的其他器件: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); }