主题中讨论的其他器件:TMS320F28379D、 C2000WARE
工具/软件:
您好团队:
我在 Launchxlf28379D ADC 通道中面临一个问题。 TMS320F28379D 微控制器中有24个 ADC 引脚、但开发板 LaunchPad 上只有20个引脚。 我将使用剩余的4个 ADC 引脚创建一个设计、并为其创建了一个单独的 JIG。 我可以进行16个 ADC 引脚的初始化、但当我尝试一次性初始化所有24个引脚时、我无法进行初始化。 似乎可以一次初始化每个通道4个引脚。
我已经查看了与 ADC 初始化(F28379D_ADC.h)相关的头文件。 我使用 INTERRUPT、因为我将使用大型 CAN 总线以及此 ADC 功能。 以下是我的 ADC 初始化、有人能一次性为我建议初始化和使用所有24个引脚的步骤吗?
void ConfigureADC (void)
{
EALLOW;
//配置 ADCA
AdcaRegs.ADCCTL2.bit.prescale = 6;
AdcSetMode (ADC_ADCA、ADC_Resolution_16BIT、ADC_SIGNALMODE_SINGLE);
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
//配置 ADCB
AdcbRegs.ADCCTL2.bit.prescale = 6;
AdcSetMode (ADC_ADCB、ADC_Resolution_16BIT、ADC_SIGNALMODE_SINGLE);
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
//配置 ADCC
AdccRegs.ADCCTL2.bit.prescale = 6;
AdcSetMode (ADC_ADCC、ADC_Resolution_16BIT、ADC_SIGNALMODE_SINGLE);
AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
//ADCD
AdcdRegs.ADCCTL2.bit.prescale = 6;
AdcSetMode (ADC_ADCD、ADC_Resolution_16BIT、ADC_SIGNALMODE_SINGLE);
AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
DELAY_US (1000);
//为 ADCA 配置 SOC
AdcaRegs.ADCSOC0CTL.BIT.CHSEL = 3;// ADCINA2
AdcaRegs.ADCSOC0CTL.BIT.ACQPS = 25;
AdcaRegs.ADCSOC1CTL.BIT.CHSEL = 5;// ADCINA3
AdcaRegs.ADCSOC1CTL.BIT.ACQPS = 25;
AdcaRegs.ADCSOC2CTL.BIT.CHSEL = 14;// ADCINA4
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 25;
AdcaRegs.ADCSOC3CTL.BIT.CHSEL = 15;// ADCINA14
AdcaRegs.ADCSOC3CTL.BIT.ACQPS = 25;
//为 ADCB 配置 SOC
AdcbRegs.ADCSOC0CTL.BIT.CHSEL = 2;// ADCB2
AdcbRegs.ADCSOC0CTL.BIT.ACQPS = 25;
AdcbRegs.ADCSOC1CTL.BIT.CHSEL = 3;// ADCB3
AdcbRegs.ADCSOC1CTL.BIT.ACQPS = 25;
AdcbRegs.ADCSOC2CTL.BIT.CHSEL = 4;// ADCB4
AdcbRegs.ADCSOC2CTL.bit.ACQPS = 25;
AdcbRegs.ADCSOC3CTL.BIT.CHSEL = 5;// ADCB5
AdcbRegs.ADCSOC3CTL.BIT.ACQPS = 25;
//为 ADCC 配置 SOC
AdccRegs.ADCSOC0CTL.BIT.CHSEL = 2;// ADCC2
AdccRegs.ADCSOC0CTL.BIT.ACQPS = 25;
AdccRegs.ADCSOC1CTL.BIT.CHSEL = 3;// ADCC3
AdccRegs.ADCSOC1CTL.BIT.ACQPS = 25;
AdccRegs.ADCSOC2CTL.BIT.CHSEL = 4;// ADCC4
AdccRegs.ADCSOC2CTL.bit.ACQPS = 25;
AdccRegs.ADCSOC3CTL.BIT.CHSEL = 5;// ADCC5
AdccRegs.ADCSOC3CTL.BIT.ACQPS = 25;
//为 ADCD 配置 SOC
AdcdRegs.ADCSOC0CTL.BIT.CHSEL = 0;// ADCC2
AdcdRegs.ADCSOC0CTL.BIT.ACQPS = 25;
AdcdRegs.ADCSOC1CTL.BIT.CHSEL = 1;// ADCC3
AdcdRegs.ADCSOC1CTL.BIT.ACQPS = 25;
AdcdRegs.ADCSOC2CTL.BIT.CHSEL = 2;// ADCC4
AdcdRegs.ADCSOC2CTL.BIT.ACQPS = 25;
AdcdRegs.ADCSOC3CTL.BIT.CHSEL = 3;// ADCC5
AdcdRegs.ADCSOC3CTL.BIT.ACQPS = 25;
//为 ADCA 配置 ADC 中断
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTSEL1N2.bit.INT2SEL = 1;
AdcaRegs.ADCINTSEL1N2.bit.INT2E = 1;
AdcaRegs.ADCINTSEL3N4.bit.INT3SEL = 2;
AdcaRegs.ADCINTSEL3N4.bit.INT3E = 1;
AdcaRegs.ADCINTSEL3N4.bit.INT4SEL = 3;
AdcaRegs.ADCINTSEL3N4.bit.INT4E = 1;
//为 ADCB 配置 ADC 中断
AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcbRegs.ADCINTSEL1N2.bit.INT2SEL = 1;
AdcbRegs.ADCINTSEL1N2.bit.INT2E = 1;
AdcbRegs.ADCINTSEL3N4.bit.INT3SEL = 2;
AdcbRegs.ADCINTSEL3N4.bit.INT3E = 1;
AdcbRegs.ADCINTSEL3N4.bit.INT4SEL = 3;
AdcbRegs.ADCINTSEL3N4.bit.INT4E = 1;
//为 ADCC 配置 ADC 中断
AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdccRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdccRegs.ADCINTSEL1N2.bit.INT2SEL = 1;
AdccRegs.ADCINTSEL1N2.bit.INT2E = 1;
AdccRegs.ADCINTSEL3N4.bit.INT3SEL = 2;
AdccRegs.ADCINTSEL3N4.bit.INT3E = 1;
AdccRegs.ADCINTSEL3N4.bit.INT4SEL = 3;
AdccRegs.ADCINTSEL3N4.bit.INT4E = 1;
//ADCD
AdcdRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdcdRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcdRegs.ADCINTSEL1N2.bit.INT2SEL = 1;
AdcdRegs.ADCINTSEL1N2.bit.INT2E = 1;
AdcdRegs.ADCINTSEL3N4.bit.INT3SEL = 2;
AdcdRegs.ADCINTSEL3N4.bit.INT3E = 1;
AdcdRegs.ADCINTSEL3N4.bit.INT4SEL = 3;
AdcdRegs.ADCINTSEL3N4.bit.INT4E = 1;
//清除所有中断标志
AdcaRegs.ADCINTFLGCLR.ALL = 0x3F;
AdcbRegs.ADCINTFLGCLR.ALL = 0xF;
AdccRegs.ADCINTFLGCLR.ALL = 0xF;
AdcdRegs.ADCINTFLGCLR.ALL = 0xF;
//启用 PIE 中断组1、INT1.1 = ADCA1
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
IER |= M_INT1;
EDIS;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__ interrupt void adcISR (void)
{
adcResult_0 = AdcaResultRegs.ADCRESULT0;//A3
adcResults_1 = AdcaResultRegs.ADCRESULT1;//A5
adcResult_2 = AdcaResultRegs.ADCRESULT2;//A14
adcResult_3 = AdcaResultRegs.ADCRESULT3;//A15
adcResult_4 = AdcbResultRegs.ADCRESULT0;//B2
adcResult_5 = AdcbResultRegs.ADCRESULT1;//B3
adcResult_6 = AdcbResultRegs.ADCRESULT2;//B4
adcResult_7 = AdcbResultRegs.ADCRESULT3;//B5
adcResult_8 = AdccResultRegs.ADCRESULT0;//C2
adcResult_9 = AdccResultRegs.ADCRESULT1;//C3
adcResult_10 = AdccResultRegs.ADCRESULT2;//C4
adcResult_11 = AdccResultRegs.ADCRESULT3;//C5
adcResult_12 = AdcdResultRegs.ADCRESULT0;//D0
adcResult_13 = AdcdResultRegs.ADCRESULT1;//D1
adcResult_14 = AdcdResultRegs.ADCRESULT2;//D2
adcResult_15 = AdcdResultRegs.ADCRESULT3;//D3
//清除 ADCINT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
AdcdRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
//确认中断
PieCtrlRegs.PIEACK.ALL = PIEACK_GROUP1;