TMS320F28P650DK: 为什么我的ADCB0的REsult能读取数据,我的ADCB4的REsult无法读取数据

Part Number: TMS320F28P650DK

同样的配置,我的ADCB0的REsult0(SOC0)能读取数据,我的ADCB4的REsult1(SOC1)无法读取数据
    initADC();
    SetupADC(&AdcaRegs, 4 , 0);//A4  SOC0
    SetupADC(&AdcbRegs, 0 , 0);//B0  SOC0
    SetupADC(&AdcbRegs, 4 , 1);//B4  SOC1
    SetupADC(&AdccRegs, 0 , 0);//C0  SOC0

    OLED_ShowStr(65,1,"B4:",16);
    OLED_ShowNum(90,1, AdcbResultRegs.ADCRESULT1 ,4,0,16);

    OLED_ShowStr(65,3,"B0:",16);
    OLED_ShowNum(90,3, AdcbResultRegs.ADCRESULT0 ,4,0,16);

初始化函数与启动函数如下

/*
 *            0          1           2
 *      A   A4(Vout)     *           *
 *
 *      B   B4(Iout)   B0(BUS-ADC)   *
 *
 *
 *      C   C0(ADC-ADJ)  *           *
 *
 *      D      *         *           *
 */
// 初始化ADC(模数转换器)模块的配置函数
void initADC(void)
{
    // 使能受保护寄存器访问(EALLOW = Enable Allow,TI C2000系列DSP专用指令)
    // 后续操作ADC控制寄存器需先解锁该权限,防止误写关键配置
    EALLOW;

    AnalogSubsysRegs.ANAREFCTL.bit.ANAREFASEL = 1;//用外部基准
    AnalogSubsysRegs.ANAREFCTL.bit.ANAREFBSEL = 1;//用外部基准
    AnalogSubsysRegs.ANAREFCTL.bit.ANAREFCSEL = 1;//用外部基准
    //
    // 设置ADCCLK(ADC核心工作时钟)的分频系数为/4,50MHz
    // 具体怎么分频配去看数据手册
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;

    //ADCA   12BIT模式  单通道
    //ADCB   12BIT模式  单通道
    //ADCC   12BIT模式  单通道
    AdcSetMode(ADC_ADCA, ADC_BITRESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcSetMode(ADC_ADCB, ADC_BITRESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcSetMode(ADC_ADCC, ADC_BITRESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //
    // 设置ADC中断脉冲的产生位置为"晚期"(Late)
    // INTPULSEPOS=1:中断脉冲在ADC转换完成后延迟产生(避免中断触发过早导致数据未就绪)
    // 对比INTPULSEPOS=0(早期):中断脉冲与转换完成信号同步产生
    //
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;

    //
    // 给ADC模块上电,并延迟1毫秒等待ADC稳定
    // ADCPWDNZ=1:置1时ADC模块上电(Z表示该位低电平有效,PWD=Power Down,NZ=Not Zero)
    // 注:ADC上电后需要一定稳定时间,否则转换数据可能异常
    //
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    // 禁用受保护寄存器访问(EDIS = Disable Allow),锁定关键配置
    EDIS;

    // 延时1000微秒(即1毫秒),等待ADC上电稳定
    // DELAY_US:TI C2000系列DSP专用延时函数,参数为微秒数
    DELAY_US(1000);
}

/*
 *            0          1           2
 *      A   A4(Vout)     *           *
 *
 *      B  B0(BUS-ADC)  B4(Iout)     *
 *
 *
 *      C   C0(ADC-ADJ)  *           *
 *
 *      D      *         *           *
 */
//
// initADCSOC - Function to configure ADCA's SOC0 to be triggered by ePWM1.
//  ADCA's SOC1 to be triggered by ePWM2
//
// SetupADCContinuous - 设置ADC在一个通道上连续转换
//
void SetupADC(volatile struct ADC_REGS * adcRegs, Uint16 channel , Uint16 SocNum)
{

 

    Uint16 acqps;
//    acqps = 14;
    //
    // 根据分辨率确定最小采集窗口(SYSCLKS)
    // 选择12位
    if(ADC_BITRESOLUTION_12BIT == AdcaRegs.ADCCTL2.bit.RESOLUTION)
    {
        acqps = 14; // 75ns
    }
    else // 分辨率为16位
    {
        acqps = 63; // 320ns
    }

    EALLOW;

    switch (SocNum) {
        case 0:
            adcRegs->ADCSOC0CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC0CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC0CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 1:
            adcRegs->ADCSOC1CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC1CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC1CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 2:
            adcRegs->ADCSOC2CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC2CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC2CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 3:
            adcRegs->ADCSOC3CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC3CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC3CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 4:
            adcRegs->ADCSOC4CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC4CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC4CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 5:
            adcRegs->ADCSOC5CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC5CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC5CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 6:
            adcRegs->ADCSOC6CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC6CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC6CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 7:
            adcRegs->ADCSOC7CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC7CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC7CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 8:
            adcRegs->ADCSOC8CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC8CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC8CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 9:
            adcRegs->ADCSOC9CTL.bit.CHSEL   = channel;
            adcRegs->ADCSOC9CTL.bit.ACQPS   = acqps;
            adcRegs->ADCSOC9CTL.bit.TRIGSEL = 7;    // trigger on ePWM2 SOCA
            break;

        case 10:
            adcRegs->ADCSOC10CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC10CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC10CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        case 11:
            adcRegs->ADCSOC11CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC11CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC11CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        case 12:
            adcRegs->ADCSOC12CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC12CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC12CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        case 13:
            adcRegs->ADCSOC13CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC13CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC13CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        case 14:
            adcRegs->ADCSOC14CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC14CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC14CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        case 15:
            adcRegs->ADCSOC15CTL.bit.CHSEL  = channel;
            adcRegs->ADCSOC15CTL.bit.ACQPS  = acqps;
            adcRegs->ADCSOC15CTL.bit.TRIGSEL = 7;   // trigger on ePWM2 SOCA
            break;

        default:

            ;
    }
    //每个ADC都有四个INT,用到ADCB输出INT1,选择EOC1也就是SOC1结束,ADCB  INT1
        AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;       //1:ADCINT1 is enabled   0:disable
        AdcbRegs.ADCINTSEL1N2.bit.INT1CONT = 0;    // no continue mode
        AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 1;     // EOC1 is trigger for ADCINT1
        AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;     //make sure INT1 flag is cleared

    EDIS;
}