TMS320F28374S: ADC采样ADCRESULTx 寄存器的值和实际对不上

Part Number: TMS320F28374S
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

ePWM_SOC触发ADC采样,但是ADCRESULTx 寄存器的值和实际对不上,比如实际是0V 显示却是4096,实际是3.3V显示是0,还有给一个引脚高电平,另一个同道的值反而会变、或者同时两路结果都变化的情况。

我使用的Sysconfig配置,下面是我的配置代码:

void Board_init()
{
EALLOW;

PinMux_init();
SYSCTL_init();
SYNC_init();
ADC_init();
EPWM_init();
GPIO_init();

EDIS;
}

void ADC_A_init(){
//
// Configures the analog-to-digital converter module prescaler.
//
ADC_setPrescaler(ADC_A_BASE, ADC_CLK_DIV_4_0);
//
// Configures the analog-to-digital converter resolution and signal mode.
//
ADC_setMode(ADC_A_BASE, ADC_RESOLUTION_12BIT, ADC_MODE_SINGLE_ENDED);
//
// Sets the timing of the end-of-conversion pulse
//
ADC_setInterruptPulseMode(ADC_A_BASE, ADC_PULSE_END_OF_ACQ_WIN);
//
// Powers up the analog-to-digital converter core.
//
ADC_enableConverter(ADC_A_BASE);
//
// Delay for 1ms to allow ADC time to power up
//
DEVICE_DELAY_US(500);
//
// SOC Configuration: Setup ADC EPWM channel and trigger settings
//
// Disables SOC burst mode.
//
ADC_disableBurstMode(ADC_A_BASE);
//
// Sets the priority mode of the SOCs.
//
ADC_setSOCPriority(ADC_A_BASE, ADC_PRI_ALL_ROUND_ROBIN);
//
// Start of Conversion 0 Configuration
//
//
// Configures a start-of-conversion (SOC) in the ADC and its interrupt SOC trigger.
// SOC number : 0
// Trigger : ADC_TRIGGER_EPWM1_SOCA
// Channel : ADC_CH_ADCIN0
// Sample Window : 16 SYSCLK cycles
// Interrupt Trigger: ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC(ADC_A_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN0, 16U);
ADC_setInterruptSOCTrigger(ADC_A_BASE, ADC_SOC_NUMBER0, ADC_INT_SOC_TRIGGER_NONE);
//
// Start of Conversion 1 Configuration
//
//
// Configures a start-of-conversion (SOC) in the ADC and its interrupt SOC trigger.
// SOC number : 1
// Trigger : ADC_TRIGGER_EPWM1_SOCA
// Channel : ADC_CH_ADCIN1
// Sample Window : 16 SYSCLK cycles
// Interrupt Trigger: ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC(ADC_A_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN1, 16U);
ADC_setInterruptSOCTrigger(ADC_A_BASE, ADC_SOC_NUMBER1, ADC_INT_SOC_TRIGGER_NONE);
//
// Start of Conversion 2 Configuration
//
//
// Configures a start-of-conversion (SOC) in the ADC and its interrupt SOC trigger.
// SOC number : 2
// Trigger : ADC_TRIGGER_EPWM1_SOCA
// Channel : ADC_CH_ADCIN2
// Sample Window : 16 SYSCLK cycles
// Interrupt Trigger: ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC(ADC_A_BASE, ADC_SOC_NUMBER2, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN2, 16U);
ADC_setInterruptSOCTrigger(ADC_A_BASE, ADC_SOC_NUMBER2, ADC_INT_SOC_TRIGGER_NONE);
//
// Start of Conversion 3 Configuration
//
//
// Configures a start-of-conversion (SOC) in the ADC and its interrupt SOC trigger.
// SOC number : 3
// Trigger : ADC_TRIGGER_EPWM1_SOCA
// Channel : ADC_CH_ADCIN3
// Sample Window : 16 SYSCLK cycles
// Interrupt Trigger: ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC(ADC_A_BASE, ADC_SOC_NUMBER3, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN3, 16U);
ADC_setInterruptSOCTrigger(ADC_A_BASE, ADC_SOC_NUMBER3, ADC_INT_SOC_TRIGGER_NONE);
}