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.

TMS320F28034的AD配置问题

专家您好:

我用的是28034,需要AD以下功能:

1.同时采样模式,且同时采样4个AD通道  2.触发源都是PWM2_SOCA  3.等4个AD转换完成后触发ADCINT1中断,只此一个中断即可

以下是我的配置代码,请帮忙审核,谢谢

EALOW;

AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0 = 1; //SOC0/SOC1同时采样
//SOC0
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;//SOC0采样窗口
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; //soc通道选择A0 ---ADCRESULT0
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA
//SOC1
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;//SOC1采样窗口
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8; //soc通道选择B0 ---ADCRESULT1
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA


AdcRegs.ADCSAMPLEMODE.bit.SIMULEN2 = 1; //SOC2/SOC3同时采样
//SOC2
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;//SOC2采样窗口
AdcRegs.ADCSOC0CTL.bit.CHSEL = 1; //soc通道选择A1 ---ADCRESULT2
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA
//SOC3
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;//SOC3采样窗口
AdcRegs.ADCSOC1CTL.bit.CHSEL = 9; //soc通道选择B1 ---ADCRESULT3
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

AdcRegs.ADCCTL1.bit.INTPULSEPOS  = 1;  //结果存入寄存器才产生中断  

PieVectTable.ADCINT1 = &ADC_convered;  

!!!AdcRegs.INTSEL1N2.bit.INT1SEL = 1;    //中断线1选择soc1  

!!!AdcRegs.INTSEL1N2.bit.INT1CONT  = 0;  

AdcRegs.INTSEL1N2.bit.INT1E  = 1;    //中断使能  

PieCtrlRegs.PIEIER1.bit.INTx1 = 1;   //使能int1.1  

EDIS;  

加!!!标注的句子是网上的例程,有点看不明白。唉

  • Seven,

    你的配置有问题。

    EALOW;

    AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0 = 1; // 这个配置表示SOC0,SOC1同时采样

    AdcRegs.ADCSAMPLEMODE.bit.SIMULEN1 = 1; //这个配置表示SOC2,SOC3同时采样。

    //SOC0  这里要SOC0 SOC1同时 采样 A0,B0

    AdcRegs.ADCSOC0CTL.bit.ACQPS=6;//SOC0采样窗口

    AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; //soc通道选择A0 ---ADCRESULT0

    AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

     

    //SOC2 这里要SOC2同时采样  A1,B1

    AdcRegs.ADCSOC2CTL.bit.ACQPS=6;//SOC1采样窗口

    AdcRegs.ADCSOC2CTL.bit.CHSEL = 1; //soc通道选择B0 ---ADCRESULT1

    AdcRegs.ADCSOC2CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

     

    Eric

     

     

     

  • 那底下的这些呢?能否完成转换完成后触发ADCINT1中断的功能?谢谢:

    AdcRegs.ADCCTL1.bit.INTPULSEPOS  = 1;  //结果存入寄存器才产生中断  

    PieVectTable.ADCINT1 = &ADC_convered;  

    !!!AdcRegs.INTSEL1N2.bit.INT1SEL = 1;    //中断线1选择soc1  

    !!!AdcRegs.INTSEL1N2.bit.INT1CONT  = 0;  

    AdcRegs.INTSEL1N2.bit.INT1E  = 1;    //中断使能  

    PieCtrlRegs.PIEIER1.bit.INTx1 = 1;   //使能int1.1  

    EDIS;  

    加!!!标注的句子是网上的例程,有点看不明白。唉

  • AdcRegs.INTSEL1N2.bit.INT1SEL = 1; 

    AdcRegs.INTSEL1N2.bit.INT1CONT  = 0;  

    这两句的功能是设置 ADCINT1 这一中断的中断源为 EOC1,即在 SOC1 所触发的 ADC 操作结束之后触发 ADCINT1 的中断响应函数;并将中断标志位设置为单次触发等待清除。

    具体请参考技术文档中关于 INTSELxNy 寄存器的说明:http://www.ti.com.cn/cn/lit/ug/spruge5f/spruge5f.pdf

  • Seven,

    你应该配置EOC3产生中断

    AdcRegs.INTSEL1N2.bit.INT1SEL =3;

    Eric