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.

[参考译文] TMS320F28379D:降压电路采样

Guru**** 2563960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1210081/tms320f28379d-buck-circuit-sampling

器件型号:TMS320F28379D

大家好、

以下是客户可能需要您的帮助的问题:

项目:飞跨电容三级降压电路

客户使用28379D Launchpad 执行单个电压闭环(飞跨电容器电压平衡尚不受控制)、其中输出电压在输入达到20V 以上后开始下降。 假设如下:

1) 1)选择隔离放大器+常规运算放大器调节电路进行采样、并已使用稳定的直流电压测试、没有问题。  

2) 在定制电路板的情况下、在开环中以不同的占空比输出相同的电压(例如20V 输出8V、30V 输出8V)、使用万用表在高电压输入下、采样电路的输出电压更高、 在计算机端检查单片单元时获得相同的数据。  

3) 更换电源板到板接线后,问题依然存在,并试图减少干扰。  

4) 4) 以下是输入电压约为30V 时的输出电压波形:

基于要点3)和4)、客户假设由于高压下输出电压的关断尖峰、输出电压有效值更高、因此单片机的采样值更高、控制开关的占空比也更低。 因此进行了以下更改:

开关频率为50kHz。 采样频率=开关频率、尝试通过将采样点修改为开关周期的3/4来避免尖峰后、问题仍然存在。

请查看以下代码:

void ConfigureADC(void)
{
    EALLOW;
    AdcaRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider 
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal 
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete 
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits 
    DELAY_US(1000);

    AdcbRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider 
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal 
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete 
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits 
    DELAY_US(1000);

    AdccRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider 
    AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal 
    AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete 
    AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits 
    DELAY_US(1000);
    EDIS;
}

void ConfigureEPWM(void)
{
    EALLOW;
    // Assumes ePWM clock is already enabled
    EPwm1Regs.ETSEL.bit.SOCAEN    = 0;    // Disables the EWPWMxSOCA pulses 
    EPwm1Regs.ETSEL.bit.SOCASEL   = 4;   // Up counting
    EPwm1Regs.ETPS.bit.SOCAPRD = 1;       // Pulse is generated on Event 1 
    //The following needs to be set for single sampling and is configured again in this procedure in the PWM configuration function 
    EPwm1Regs.CMPA.bit.CMPA = 750;     // Set compare A value to 2048 counts
    EPwm1Regs.TBPRD = 999;             // Set period to 4096 counts
    EPwm1Regs.TBCTL.bit.CTRMODE = 3;      // freeze counter
    EDIS;
}

void SetupADCEpwm(void)
{
    Uint16 acqps = 25;

    EALLOW;
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;  //SOC0 convert to A0 
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time 
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;   //Enable interrupt flag bit 
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared

    AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;  //SOC0 convert to B2
    AdcbRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time 
    AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
    AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
    AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;   //Enable interrupt flag bit
    AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared

    AdccRegs.ADCSOC0CTL.bit.CHSEL = 2;  //SOC0 convert to C2
    AdccRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time 
    AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
    AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
    AdccRegs.ADCINTSEL1N2.bit.INT1E = 1;   //Enable interrupt flag bit
    AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared
    EDIS;
}

客户希望通过添加 RC 缓冲器来降低关断尖峰以查看问题是否可以改善、但 MOS 封装和电路板布局不允许。  

您能帮助检查这个问题吗? 谢谢。

此致、

樱桃

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

    您好、Cherry:

    关于 ADC 感应的时序吗?  如果是、我们通常在 EPWM 周期/零处检测电压、以避免开关噪声。  

    输出电压波形与尖峰之间的关系不好。 不确定尖峰幅度、但您可能希望让客户检查硬件设计。

    谢谢。

    青