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.

28035 开通了9个ADC,ADC13和ADC15不能正常转换,电压值一直显示电压值0.9V



求大神帮忙看看我的程序,软件触发,同步采样

void ADC_Config(void)
{

InitAdc(); // 先调用官方AD默认的配置函数初始化(必须)

EALLOW;
PieVectTable.ADCINT3 = &adc_isr;
EDIS;

PieCtrlRegs.PIEIER10.bit.INTx3 = 1;
IER |= M_INT10; // Enable CPU Interrupt 10

// Configure ADC
EALLOW;
// AdcRegs.ADCCTL2.bit.CLKDIV2EN = 0; //ADCclock = CPUclock
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; //REF Int
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latch //--> P39 HIKE,EOCx产生来自源选择
AdcRegs.INTSEL3N4.bit.INT3E = 1; //Enabled ADCINT3
AdcRegs.INTSEL3N4.bit.INT3CONT = 0; //Disable ADCINT3 Continuous mode,single conversion mode

//HIKE,ADCINTx EOC Source Select, 即哪个 EOCx 触发中断
AdcRegs.INTSEL3N4.bit.INT3SEL = 3; //setup EOC3 to trigger ADCINT1 to fire , EOC3 is trigger for ADCINTx
//+++


// //Simultaneous sampling enable for SOC2/SOC3
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0=1; 
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; 
AdcRegs.ADCSOC1CTL.bit.CHSEL = 0; 

AdcRegs.ADCSAMPLEMODE.bit.SIMULEN2=1; 
AdcRegs.ADCSOC2CTL.bit.CHSEL = 1; 
AdcRegs.ADCSOC3CTL.bit.CHSEL = 1; 
///////////////////
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN4=1;
AdcRegs.ADCSOC4CTL.bit.CHSEL = 2;
AdcRegs.ADCSOC5CTL.bit.CHSEL = 2; 


AdcRegs.ADCSAMPLEMODE.bit.SIMULEN12=1; 
AdcRegs.ADCSOC12CTL.bit.CHSEL = 3; 
AdcRegs.ADCSOC13CTL.bit.CHSEL = 3; 

AdcRegs.ADCSAMPLEMODE.bit.SIMULEN14=1; //SOC2/3 Simultaneous Sampling Enable ,SOC2蚐OC3组合工作
AdcRegs.ADCSOC14CTL.bit.CHSEL = 4;
AdcRegs.ADCSOC15CTL.bit.CHSEL = 4;

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x00;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x00;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x00;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x00; //SOC2 (ADCINA1/ADCINB1 pair),配置模拟通道连接
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x00;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x00; 
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 0x00;
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 0x00; //SOC2 (ADCINA1/ADCINB1 pair),配置模拟通道连接
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 0x00;

AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; //set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6; 
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 6; 
AdcRegs.ADCSOC13CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC14CTL.bit.ACQPS = 6; 
AdcRegs.ADCSOC15CTL.bit.ACQPS = 6;


EDIS;
}

interrupt void adc_isr(void)
{
EALLOW;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10; // Acknowledge interrupt to PIE
EDIS;

AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 1; 

printf("\r\nTI最新版无BUG的AD芯片试验例程-->AD Result is SOC0-A1:%0.2fV SOC1-B1:%0.2fV SOC2-A1:%0.2fV SOC3-B1:%0.2fV",(float)((AdcResult.ADCRESULT0)*3.3/4096),(float)((AdcResult.ADCRESULT15)*3.3/4096),(float)((AdcResult.ADCRESULT4)*3.3/4096),(float)((AdcResult.ADCRESULT13)*3.3/4096));

Running.showNum = (float)((AdcResult.ADCRESULT15)*3.3/4096);//初始化数码管显示内容
}

while(1)
{
if(timer0Base.Mark_Para.Status_Bits.OnemsdFlag == 1)
{
timer0Base.Mark_Para.Status_Bits.OnemsdFlag = 0;

if(timer0Base.msCounter >= 1000)//ms
{
timer0Base.msCounter = 0;
D400TOGGLE();
D401TOGGLE();
D402TOGGLE();

AdcRegs.ADCSOCFRC1.all = 0XF03F; //软件触发AD 的采样
}
}

SegScanTask(&Running); //数码管、三色LED、按键操作函数
}
}