TI中文支持网
TI专业的中文技术问题搜集分享网站

28377D调试ADC遇到问题,个别SOC数值无变化

//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
    uint16_t i;
    EALLOW;
    //写入配置
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcdRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCD, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //将脉冲位置设置为后期
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    //打开 ADC 的电源
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    //延迟 ± 1ms,允许 ADC 时间通电
    for(i = 0; i < 1000; i++)
    {
        asm("   RPT#255 || NOP");
    }
    //选择要转换的通道和转换标志结束 ADCA**********************************
    //Iu过采样
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 A2
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VR过采样
    AdcaRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 A4
    AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 A4
    AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 A4
    AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC1过采样
    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 5;//SOC6 将转换引脚 A5
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC7CTL.bit.CHSEL = 5;//SOC7 将转换引脚 A5
    AdcaRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC8CTL.bit.CHSEL = 5;//SOC8 将转换引脚 A5
    AdcaRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH1采样
    AdcaRegs.ADCSOC9CTL.bit.CHSEL = 3;//SOC9 将转换引脚 A3
    AdcaRegs.ADCSOC9CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC9CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //TEMP SENSOR采样
    AdcaRegs.ADCSOC10CTL.bit.CHSEL = 13;//SOC10 将转换引脚 A13
    AdcaRegs.ADCSOC10CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC10CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x00;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//清除 INT1 标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0xA;//SOC10 的结束将设置 INT1 标志
    AdcaRegs.ADCINTSOCSEL1.all = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1 标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保清除 INT1 标志
    //选择要转换的通道和转换标志结束 ADCB************************************
    //VG1采样
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //IGX采样
    AdcbRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1 将转换引脚 B3
    AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcbRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCC************************************
    //Iv过采样
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 C2
    AdccRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VS过采样
    AdccRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 C4
    AdccRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 C4
    AdccRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 C4
    AdccRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH2采样
    AdccRegs.ADCSOC6CTL.bit.CHSEL = 3;//SOC6 将转换引脚 C3
    AdccRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCD************************************
    //Iw过采样
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0 将转换引脚 D0
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;//SOC1 将转换引脚 D0
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC2CTL.bit.CHSEL = 0;//SOC2 将转换引脚 D0
    AdcdRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VT过采样
    AdcdRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 D4
    AdcdRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 D4
    AdcdRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 D4
    AdcdRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC2过采样
    AdcdRegs.ADCSOC6CTL.bit.CHSEL = 1;//SOC6 将转换引脚 D1
    AdcdRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC7CTL.bit.CHSEL = 1;//SOC7 将转换引脚 D1
    AdcdRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC8CTL.bit.CHSEL = 1;//SOC8 将转换引脚 D1
    AdcdRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    EDIS;
}
上边是我对ADC的配置程序,CPU1 Timer0设置成1s触发一次,通过Registers观测结果寄存器,发现一部分寄存器结果一直没变化。
例如AdcaResultRegs.ADCRESULT0由ADCa的SOC0转化,如上程序ADCa的SOC0,SOC1,SOC2转化的同一端口数据,ADCRESULT1和ADCRESULT2数值均有变化但ADCRESULT0无变化,同样情况不唯一,不知问题出在哪里?请求解答,万分感谢

Annie Liu:

为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上https://e2e.ti.com/support/microcontrollers/c2000/f/171,将由资深的工程师为您提供帮助。我们的E2E英文社区有TI专家进行回复,并得到全球各地工程师的支持,分享他们的知识和经验。

//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
    uint16_t i;
    EALLOW;
    //写入配置
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcdRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCD, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //将脉冲位置设置为后期
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    //打开 ADC 的电源
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    //延迟 ± 1ms,允许 ADC 时间通电
    for(i = 0; i < 1000; i++)
    {
        asm("   RPT#255 || NOP");
    }
    //选择要转换的通道和转换标志结束 ADCA**********************************
    //Iu过采样
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 A2
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VR过采样
    AdcaRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 A4
    AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 A4
    AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 A4
    AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC1过采样
    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 5;//SOC6 将转换引脚 A5
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC7CTL.bit.CHSEL = 5;//SOC7 将转换引脚 A5
    AdcaRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC8CTL.bit.CHSEL = 5;//SOC8 将转换引脚 A5
    AdcaRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH1采样
    AdcaRegs.ADCSOC9CTL.bit.CHSEL = 3;//SOC9 将转换引脚 A3
    AdcaRegs.ADCSOC9CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC9CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //TEMP SENSOR采样
    AdcaRegs.ADCSOC10CTL.bit.CHSEL = 13;//SOC10 将转换引脚 A13
    AdcaRegs.ADCSOC10CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC10CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x00;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//清除 INT1 标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0xA;//SOC10 的结束将设置 INT1 标志
    AdcaRegs.ADCINTSOCSEL1.all = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1 标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保清除 INT1 标志
    //选择要转换的通道和转换标志结束 ADCB************************************
    //VG1采样
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //IGX采样
    AdcbRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1 将转换引脚 B3
    AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcbRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCC************************************
    //Iv过采样
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 C2
    AdccRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VS过采样
    AdccRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 C4
    AdccRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 C4
    AdccRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 C4
    AdccRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH2采样
    AdccRegs.ADCSOC6CTL.bit.CHSEL = 3;//SOC6 将转换引脚 C3
    AdccRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCD************************************
    //Iw过采样
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0 将转换引脚 D0
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;//SOC1 将转换引脚 D0
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC2CTL.bit.CHSEL = 0;//SOC2 将转换引脚 D0
    AdcdRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VT过采样
    AdcdRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 D4
    AdcdRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 D4
    AdcdRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 D4
    AdcdRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC2过采样
    AdcdRegs.ADCSOC6CTL.bit.CHSEL = 1;//SOC6 将转换引脚 D1
    AdcdRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC7CTL.bit.CHSEL = 1;//SOC7 将转换引脚 D1
    AdcdRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC8CTL.bit.CHSEL = 1;//SOC8 将转换引脚 D1
    AdcdRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    EDIS;
}
上边是我对ADC的配置程序,CPU1 Timer0设置成1s触发一次,通过Registers观测结果寄存器,发现一部分寄存器结果一直没变化。
例如AdcaResultRegs.ADCRESULT0由ADCa的SOC0转化,如上程序ADCa的SOC0,SOC1,SOC2转化的同一端口数据,ADCRESULT1和ADCRESULT2数值均有变化但ADCRESULT0无变化,同样情况不唯一,不知问题出在哪里?请求解答,万分感谢

user5739360:您好,请问要使用epwm触发adcb的话要怎么配置呢?我使用例程lab27_adc_soc_epwm,修改配置后进不了中断了,能麻烦您帮我看看吗?

//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
    uint16_t i;
    EALLOW;
    //写入配置
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcdRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCD, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //将脉冲位置设置为后期
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    //打开 ADC 的电源
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    //延迟 ± 1ms,允许 ADC 时间通电
    for(i = 0; i < 1000; i++)
    {
        asm("   RPT#255 || NOP");
    }
    //选择要转换的通道和转换标志结束 ADCA**********************************
    //Iu过采样
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 A2
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VR过采样
    AdcaRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 A4
    AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 A4
    AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 A4
    AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC1过采样
    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 5;//SOC6 将转换引脚 A5
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC7CTL.bit.CHSEL = 5;//SOC7 将转换引脚 A5
    AdcaRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC8CTL.bit.CHSEL = 5;//SOC8 将转换引脚 A5
    AdcaRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH1采样
    AdcaRegs.ADCSOC9CTL.bit.CHSEL = 3;//SOC9 将转换引脚 A3
    AdcaRegs.ADCSOC9CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC9CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //TEMP SENSOR采样
    AdcaRegs.ADCSOC10CTL.bit.CHSEL = 13;//SOC10 将转换引脚 A13
    AdcaRegs.ADCSOC10CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC10CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x00;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//清除 INT1 标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0xA;//SOC10 的结束将设置 INT1 标志
    AdcaRegs.ADCINTSOCSEL1.all = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1 标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保清除 INT1 标志
    //选择要转换的通道和转换标志结束 ADCB************************************
    //VG1采样
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //IGX采样
    AdcbRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1 将转换引脚 B3
    AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcbRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCC************************************
    //Iv过采样
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 C2
    AdccRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VS过采样
    AdccRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 C4
    AdccRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 C4
    AdccRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 C4
    AdccRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH2采样
    AdccRegs.ADCSOC6CTL.bit.CHSEL = 3;//SOC6 将转换引脚 C3
    AdccRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCD************************************
    //Iw过采样
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0 将转换引脚 D0
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;//SOC1 将转换引脚 D0
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC2CTL.bit.CHSEL = 0;//SOC2 将转换引脚 D0
    AdcdRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VT过采样
    AdcdRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 D4
    AdcdRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 D4
    AdcdRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 D4
    AdcdRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC2过采样
    AdcdRegs.ADCSOC6CTL.bit.CHSEL = 1;//SOC6 将转换引脚 D1
    AdcdRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC7CTL.bit.CHSEL = 1;//SOC7 将转换引脚 D1
    AdcdRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC8CTL.bit.CHSEL = 1;//SOC8 将转换引脚 D1
    AdcdRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    EDIS;
}
上边是我对ADC的配置程序,CPU1 Timer0设置成1s触发一次,通过Registers观测结果寄存器,发现一部分寄存器结果一直没变化。
例如AdcaResultRegs.ADCRESULT0由ADCa的SOC0转化,如上程序ADCa的SOC0,SOC1,SOC2转化的同一端口数据,ADCRESULT1和ADCRESULT2数值均有变化但ADCRESULT0无变化,同样情况不唯一,不知问题出在哪里?请求解答,万分感谢

user5233622:

回复 user5739360:

通过AdcbRegs.ADCSOCxCTL.bit.TRIGSEL选择触发源,技术参考手册10.4章节可以查阅

//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
    uint16_t i;
    EALLOW;
    //写入配置
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcdRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCD, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //将脉冲位置设置为后期
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    //打开 ADC 的电源
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    //延迟 ± 1ms,允许 ADC 时间通电
    for(i = 0; i < 1000; i++)
    {
        asm("   RPT#255 || NOP");
    }
    //选择要转换的通道和转换标志结束 ADCA**********************************
    //Iu过采样
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 A2
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VR过采样
    AdcaRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 A4
    AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 A4
    AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 A4
    AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC1过采样
    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 5;//SOC6 将转换引脚 A5
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC7CTL.bit.CHSEL = 5;//SOC7 将转换引脚 A5
    AdcaRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC8CTL.bit.CHSEL = 5;//SOC8 将转换引脚 A5
    AdcaRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH1采样
    AdcaRegs.ADCSOC9CTL.bit.CHSEL = 3;//SOC9 将转换引脚 A3
    AdcaRegs.ADCSOC9CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC9CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //TEMP SENSOR采样
    AdcaRegs.ADCSOC10CTL.bit.CHSEL = 13;//SOC10 将转换引脚 A13
    AdcaRegs.ADCSOC10CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC10CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x00;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//清除 INT1 标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0xA;//SOC10 的结束将设置 INT1 标志
    AdcaRegs.ADCINTSOCSEL1.all = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1 标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保清除 INT1 标志
    //选择要转换的通道和转换标志结束 ADCB************************************
    //VG1采样
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //IGX采样
    AdcbRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1 将转换引脚 B3
    AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcbRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCC************************************
    //Iv过采样
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 C2
    AdccRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VS过采样
    AdccRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 C4
    AdccRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 C4
    AdccRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 C4
    AdccRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH2采样
    AdccRegs.ADCSOC6CTL.bit.CHSEL = 3;//SOC6 将转换引脚 C3
    AdccRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCD************************************
    //Iw过采样
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0 将转换引脚 D0
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;//SOC1 将转换引脚 D0
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC2CTL.bit.CHSEL = 0;//SOC2 将转换引脚 D0
    AdcdRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VT过采样
    AdcdRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 D4
    AdcdRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 D4
    AdcdRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 D4
    AdcdRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC2过采样
    AdcdRegs.ADCSOC6CTL.bit.CHSEL = 1;//SOC6 将转换引脚 D1
    AdcdRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC7CTL.bit.CHSEL = 1;//SOC7 将转换引脚 D1
    AdcdRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC8CTL.bit.CHSEL = 1;//SOC8 将转换引脚 D1
    AdcdRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    EDIS;
}
上边是我对ADC的配置程序,CPU1 Timer0设置成1s触发一次,通过Registers观测结果寄存器,发现一部分寄存器结果一直没变化。
例如AdcaResultRegs.ADCRESULT0由ADCa的SOC0转化,如上程序ADCa的SOC0,SOC1,SOC2转化的同一端口数据,ADCRESULT1和ADCRESULT2数值均有变化但ADCRESULT0无变化,同样情况不唯一,不知问题出在哪里?请求解答,万分感谢

user5739360:

回复 user5233622:

这个我确定我配置好了,您看看我的配置代码,麻烦您了

//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
    uint16_t i;
    EALLOW;
    //写入配置
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcbRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdccRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    AdcdRegs.ADCCTL2.bit.PRESCALE = 6;//将 ADCCLK 分频器设置为 /4
    AdcSetMode(ADC_ADCD, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
    //将脉冲位置设置为后期
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
    //打开 ADC 的电源
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
    //延迟 ± 1ms,允许 ADC 时间通电
    for(i = 0; i < 1000; i++)
    {
        asm("   RPT#255 || NOP");
    }
    //选择要转换的通道和转换标志结束 ADCA**********************************
    //Iu过采样
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 A2
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VR过采样
    AdcaRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 A4
    AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 A4
    AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 A4
    AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC1过采样
    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 5;//SOC6 将转换引脚 A5
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC7CTL.bit.CHSEL = 5;//SOC7 将转换引脚 A5
    AdcaRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOC8CTL.bit.CHSEL = 5;//SOC8 将转换引脚 A5
    AdcaRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH1采样
    AdcaRegs.ADCSOC9CTL.bit.CHSEL = 3;//SOC9 将转换引脚 A3
    AdcaRegs.ADCSOC9CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC9CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //TEMP SENSOR采样
    AdcaRegs.ADCSOC10CTL.bit.CHSEL = 13;//SOC10 将转换引脚 A13
    AdcaRegs.ADCSOC10CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcaRegs.ADCSOC10CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x00;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//清除 INT1 标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0xA;//SOC10 的结束将设置 INT1 标志
    AdcaRegs.ADCINTSOCSEL1.all = 0;
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1 标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保清除 INT1 标志
    //选择要转换的通道和转换标志结束 ADCB************************************
    //VG1采样
    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //IGX采样
    AdcbRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1 将转换引脚 B3
    AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcbRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCC************************************
    //Iv过采样
    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0 将转换引脚 C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC1CTL.bit.CHSEL = 2;//SOC1 将转换引脚 C2
    AdccRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2 将转换引脚 C2
    AdccRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VS过采样
    AdccRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 C4
    AdccRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 C4
    AdccRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 C4
    AdccRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //OH2采样
    AdccRegs.ADCSOC6CTL.bit.CHSEL = 3;//SOC6 将转换引脚 C3
    AdccRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdccRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdccRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    //选择要转换的通道和转换标志结束 ADCD************************************
    //Iw过采样
    AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0 将转换引脚 D0
    AdcdRegs.ADCSOC0CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;//SOC1 将转换引脚 D0
    AdcdRegs.ADCSOC1CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC2CTL.bit.CHSEL = 0;//SOC2 将转换引脚 D0
    AdcdRegs.ADCSOC2CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VT过采样
    AdcdRegs.ADCSOC3CTL.bit.CHSEL = 4;//SOC3 将转换引脚 D4
    AdcdRegs.ADCSOC3CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4 将转换引脚 D4
    AdcdRegs.ADCSOC4CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC5CTL.bit.CHSEL = 4;//SOC5 将转换引脚 D4
    AdcdRegs.ADCSOC5CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    //VDC2过采样
    AdcdRegs.ADCSOC6CTL.bit.CHSEL = 1;//SOC6 将转换引脚 D1
    AdcdRegs.ADCSOC6CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC6CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC7CTL.bit.CHSEL = 1;//SOC7 将转换引脚 D1
    AdcdRegs.ADCSOC7CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC7CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOC8CTL.bit.CHSEL = 1;//SOC8 将转换引脚 D1
    AdcdRegs.ADCSOC8CTL.bit.ACQPS = 29;//示例窗口为 30 SYSCLK 周期
    AdcdRegs.ADCSOC8CTL.bit.TRIGSEL = 1;//CPU1 Timer0 SOCA/C 上的触发器
    AdcdRegs.ADCSOCPRICTL.bit.RRPOINTER = 15;
    EDIS;
}
上边是我对ADC的配置程序,CPU1 Timer0设置成1s触发一次,通过Registers观测结果寄存器,发现一部分寄存器结果一直没变化。
例如AdcaResultRegs.ADCRESULT0由ADCa的SOC0转化,如上程序ADCa的SOC0,SOC1,SOC2转化的同一端口数据,ADCRESULT1和ADCRESULT2数值均有变化但ADCRESULT0无变化,同样情况不唯一,不知问题出在哪里?请求解答,万分感谢

user5739360:

回复 user5233622:

还想问问您,使用adcb的话一定要用adcsocbctl是吗?可是我也试过socb,同样进不了中断。

赞(0)
未经允许不得转载:TI中文支持网 » 28377D调试ADC遇到问题,个别SOC数值无变化
分享到: 更多 (0)