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.

[参考译文] UCD3138:如何确定是否触发 FE 中的 EACD。

Guru**** 2390755 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1497631/ucd3138-how-to-determine-if-eacd-in-fe-is-triggered

器件型号:UCD3138

工具/软件:

void update_period(void)
{
		Dpwm1Regs.DPWMPRD.all = iv.switching_period; //new period for new frequency
		Dpwm1Regs.DPWMSAMPTRIG1.all = (Dpwm1Regs.DPWMFILTERDUTYREAD.all>>1)+Dpwm1Regs.DPWMEV1.all;
}

void init_dpwm1(void)
{
	Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 0;  //disable everything

	Dpwm1Regs.DPWMCTRL1.bit.GPIO_A_EN = 1; //turn off DPWM1A for now
	Dpwm1Regs.DPWMCTRL1.bit.GPIO_B_EN = 1; //turn off DPWM1B for now

    // Enable Current Limit and Set min duty cycle to verify.
    Dpwm1Regs.DPWMCTRL0.bit.CBC_PWM_AB_EN = 1;   // Enable cycle by cycle current limit.
    Dpwm1Regs.DPWMCTRL0.bit.CBC_ADV_CNT_EN=1; 	 //normal model 
    Dpwm1Regs.DPWMCTRL0.bit.BLANK_B_EN = 1;      // Enable blanking so we can see a min pulse for curr lim,
    Dpwm1Regs.DPWMCTRL0.bit.BLANK_A_EN = 1;		 // Enable blanking so we can see a min pulse for curr lim
    Dpwm1Regs.DPWMBLKBBEG.all =  ((SWITCH_FREQ_NUMERATOR/switching_frequency) << 4)-1280;
    Dpwm1Regs.DPWMBLKBEND.all = ((SWITCH_FREQ_NUMERATOR/switching_frequency) << 4);
    Dpwm1Regs.DPWMBLKABEG.all = 0;
    Dpwm1Regs.DPWMBLKAEND.all = 0x0500;

	Dpwm1Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = 2;
	Dpwm1Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = 2;
	Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 1; 

	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG_1_EN = 1; //enable sample trigger1

	Dpwm1Regs.DPWMEV1.all = 290;
	Dpwm1Regs.DPWMEV2.all = 0;
	Dpwm1Regs.DPWMEV3.all = 290;
	Dpwm1Regs.DPWMEV4.all = ((SWITCH_FREQ_NUMERATOR/switching_frequency) << 4)-290;
	Dpwm1Regs.DPWMCTRL0.bit.PWM_MODE = 1; //Normal Mode
	Dpwm1Regs.DPWMCTRL2.bit.SAMPLE_TRIG1_OVERSAMPLE = 3; //8X oversampling.
	Dpwm1Regs.DPWMCTRL1.bit.EVENT_UP_SEL = 1; //update at end of period

	Dpwm1Regs.DPWMCTRL0.bit.CLA_EN = 1;
	Dpwm1Regs.DPWMCTRL0.bit.PWM_EN = 1; //enable OK here, because nothing will happen until DPWM and front end are globally enabled 
}

大家好、我在上面的代码中配置了 DPWM1、并希望在过滤器占空比1/2处实现触发 eADC。 我应该检查存储器调试器中的哪个寄存器、以确认 DPWM1实际上触发 eADC 进行采样。 我真诚地希望你能帮助我。

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

    您好:

    您可以通过读取 EADCVALUE 寄存器来查看 eADC 的输出。 如果该值发生变化、那么您便知道正在触发 eADC 以进行新采样。

    此致、

    Jonathan Wong