//ADC_initAdcA – 初始化ADCA配置并启动
void ADC_initAdcABCD(void)
{
uint16_t i;
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.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;
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;
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");
}
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 上的触发器
//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 标志
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 上的触发器
//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 上的触发器
//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 上的触发器
//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;
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.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;
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;
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");
}
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 上的触发器
//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 标志
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 上的触发器
//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 上的触发器
//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 上的触发器
//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;
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.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;
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;
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");
}
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 上的触发器
//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 标志
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 上的触发器
//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 上的触发器
//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 上的触发器
//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;
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.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;
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;
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");
}
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 上的触发器
//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 标志
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 上的触发器
//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 上的触发器
//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 上的触发器
//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;
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.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;
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;
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");
}
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 上的触发器
//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 标志
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 上的触发器
//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 上的触发器
//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 上的触发器
//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,同样进不了中断。