This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL-F28379D:24个 ADC 引脚初始化

Guru**** 2460850 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1504897/launchxl-f28379d-24-adc-pins-initialization

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:TMS320F28379DC2000WARE

工具/软件:

您好团队:  

我在 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chirag:

    您是否尝试从 C2000ware 运行 ADC 示例? 如果没有、请先尝试。 我们的示例中已经介绍了您所做的工作。

    [安装路径]\C2000Ware_5_03_00_00\driverlib\f2837xd\examples\cpu1\adc\

    谢谢、
    Susmitha.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Susmitha:  

    我已经在使用电路板上的 ADC 引脚、并且熟悉 C2000ware 中提供的所有示例。

    我之前使用的是 LAUNCHXL F28379D、我使用的是 J3-J7的12 + 4个引脚和 J21的4个引脚。 这里、我使用每个通道的4个引脚、即 A2-A5、B2-B5、C2-C5、D2-D5。 现在我已经开发了一个夹具,我在其中使用了 TMS320F28379D ,我已经利用了未在 LaunchXL 板上的其余销。 现在、当我尝试一次初始化24个引脚(即 A0-A5、B0-B5、C2-C5、D0-D5)时、似乎没有创建头文件来完全初始化所有24个引脚。 A0、A1、14、15、D0 如果我尝试一次使用所有24个引脚、则 D1、B0、B1这些引脚保持未初始化状态。  

    我认为的主要问题是中断、  


    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;

    例如、通过这种方式为4个引脚配置中断、我需要 AdcaRegs.ADCINTSEL5N6.bit.INT4SEL = 4;对于头文件中没有的额外引脚。 我的方法不正确吗?

    如何编辑头文件((F28379D_ADC.h))或以不同的方式初始化引脚以一次使用所有24个引脚?

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿 、Susmitha、  

    我自己想出了。 我在没有设置中断的情况下尝试配置引脚、结果是成功的。   

    感谢您的支持。  

    此致