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.

[参考译文] CCS/TMS320F28069:TMS320F28069-ePWM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/728429/ccs-tms320f28069-tms320f28069-epwm

器件型号:TMS320F28069

工具/软件:Code Composer Studio

尊敬的团队:

我想使用 ePWM 生成低于脉冲的电流。

每31ms 应重复此模式。

根据我的理解、总周期为31ms、应 以固定宽度540us 和910us 生成两个低电平脉冲。

根据我的理解、如果我们使用所需的值进行递增-递减计数器和 CMPA 负载、并且计数器始终与计数器进行比较、并且 如果匹配、它会检查 AQCTLA 是否使 EPWMA 变为高电平和低电平。  

请告诉我、是否可以使用 ePWM 生成此类脉冲? 如果是、请提供概念或代码片段。

谢谢你。

此致、

Upender Reddy M

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

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

    我认为边沿太多/对称性不够、无法将 ePWM 配置为设置并忽略该波形、但由于速度相当低、因此生成该波形应该足够简单。

    我想您希望在周期= 2.25ms 的1个 ePWM 周期和周期为28.75ms 的1个 ePWM 周期之间交替。

    设置 EPWM 以影子加载周期并在零匹配时比较 A、然后在零匹配时触发 ISR。 在 ISR 中、将下一个周期的 EPWM 参数(新周期和比较)加载到影子寄存器中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的帖子已分配给专家。 他们很快就会回来。 感谢您的耐心等待。

    编辑:哎呀、Devin 打败了我。


    惠特尼

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

    您好!

    感谢您的澄清。

    目前、我正在尝试 生成 PWM、如上所述。 下面是我的配置、并针对不同脉冲切换新的周期和比较值。

    EPwm1Regs.TBPRD = 1406;周期为2ms

    EPwm1Regs.CMPA.half.CMPA = 395;占空比为540us

    EPwm1Regs.TBCTR = 0;//清除 TB 计数器

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称

    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用

    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;

    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;

    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT

    EPwm1Regs.TBCTL.bit.CLKDIV = 6;//TB_DIV1;

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//CC_SHADOW;

    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零

    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零

    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;

    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    //中断,我们将在其中更改比较值

    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;//ET_CTR_ZERO;//选择零事件上的 INT

    EPwm1Regs.ETSEL.bit.INTEN = 1;//启用 INT

    EPwm1Regs.ETPS.bit.INTPRD = et_1st;//et_3rd;//在第三个事件发生时生成 INT

    每当中断低于 ISR 时、iam 切换周期和 compa 值。 切换的初始值为0。

    _interrupt void epwm1_ISR (void)

    //更新 CMPA 和 CMPB 值

    //update_compare (&epwm1_info);

    切换++;

    if (toggle ==1)

    EPwm1Regs.TBPRD = 1406;

    EPwm1Regs.CMPA.half.CMPA = 395;

    否则、如果(TOGGLE == 2)

    EPwm1Regs.TBPRD = 20374;

    EPwm1Regs.CMPA.half.CMPA = 510;

    TOGGLE = 0;

    其他

    //清除此计时器的 INT 标志

    EPwm1Regs.ETCLR.bit.INT = 1;

    //确认此中断以接收来自组3的更多中断

    PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;

    但能够在示波器周期上看到变化(2ms 和29ms)、但宽度不变、保持初始值(EPwm1Regs.CMPA.half.CMPA = 395;)

    根据我在影子模式下当 TBCTR 达到零时的理解、影子寄存器值将加载到活动寄存器中。

    请告诉我如何解决这个问题? 请参阅附加脉冲文件(Hope 之前也随附)

    谢谢你。

    此致、

    Upender Reddy M

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Upender、
    我正在尝试了解您当前面临的问题。
    那么、您的周期调整现在可以了吗?

    唯一的问题是您无法更新 CMPA?

    您正在使用向上/向下计数模式、您能否在输出波形旁边绘制计数器值?

    此致、
    Cody
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否成功解决了此问题?

    惠特尼