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.

[参考译文] TMS320F28069:ePWM 打开电源并进行配置

Guru**** 2604225 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/680166/tms320f28069-epwm-on-power-on-and-configuration

器件型号:TMS320F28069
Thread 中讨论的其他器件:controlSUITE

请告诉我在上电时应如何将 PWM 保持为低电平状态。 即使通过下拉引脚并保持引脚清零状态、一些引脚在启动时仍保持高电平。

请帮助了解如何将 ePWM1A 配置为从零到 CAU 的高电平、以及将 PRD 配置为 CAD 的 ePWM1B 高电平。 我尝试过这种方法、设置如下所示、但我没有获得所需的输出。 请告诉我是否需要进行任何更改、或者我是否应该对 ePWM 使用向上计数模式。

请告诉我在上电时应如何将 PWM 保持为低电平状态。 即使通过下拉引脚并保持引脚清零状态、一些引脚在启动时仍保持高电平。

请帮助了解如何将 ePWM1A 配置为从零到 CAU 的高电平、以及将 PRD 配置为 CAD 的 ePWM1B 高电平。 我尝试过这种方法、设置如下所示、但我没有获得所需的输出。 请告诉我是否需要进行任何更改、或者我是否应该对 ePWM 使用向上计数模式。

// ePWM 模块1配置
EPwm1Regs.TBPRD = 2647;// 17kHz PWM @ 90MHz
// EPwm1Regs.CMPA.half.CMPA =2647/2;
EPwm1Regs.TBPHS.Half.TBPHS = 0;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//主机模块
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//同步下流模块
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 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.ZRO = AQ_SET;//设置 EPWM1A 的操作
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;

EPwm1Regs.AQCTLB.bit.PRD = AQ_SET;
EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR;

EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//启用死区模块
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//活动高电平互补
EPwm1Regs.DBFED = 10;//
EPwm1Regs.DBRED = 10;//


//中断,我们将在其中更改死区
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; //选择“零时 INT”事件
EPwm1Regs.ETSEL.bit.INTEN = 1; //启用 INT
EPwm1Regs.ETPS.bit.INTPRD = et_1st; //在发生第三个事件时生成 INT

//禁用 EALLOW 受保护寄存器访问

/SOC 生成设置 // ADC 转换开始时间周期
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD;
EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST;
EPwm1Regs.ETSEL.bit.SOCBEN = 1;
EPwm1Regs.ETSEL.bit.SOCBSEL = ET_CTR_ZERO;
EPwm1Regs.ETPS.bit.SOCBPRD = et_1st; 

//更新中断中的占空比

中断空 epwm1_ISR (空)

EPwm1Regs.CMPA.half.CMPA =占空比;
EPwm1Regs.CMPB =(DUTY 周期);

//清除此计时器的 INT 标志
EPwm1Regs.ETCLR.bit.INT = 1;

//确认此中断以接收来自组3的更多中断
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

需要为全桥转换器生成具有占空比变量的 PWM 1A 和具有180度相同占空比的 PWM 1B。

 请帮助。

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

    Ravi、

    为了保持输出低电平、您将需要一个下拉电阻器...您应该查看 我们硬件设计指南 文档的第3.4.3节"控制外设- PWM、CAP、QEP 和事件管理器"。 以下摘录摘自该文件。

    "

    复位时、这些 GPIO 引脚被定义为启用内部上拉的输入、除了
    提供 PWM 输出的引脚、而这些引脚被禁用。 这种情况会持续很短的时间
    直到端口初始化。 通常、无需任何外部 PU/PD 电阻器、除非是这样
    原理图设计所必需的。

    "

    对于 PWM 配置问题:您的代码看起来很合理、您从 PWM 看到了什么输出? 如何判断它不能正常工作?


    此致、
    Cody  

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

    [引用用户="Cody Watkins"]

    对于 PWM 配置问题:您的代码看起来很合理、您从 PWM 看到了什么输出? 如何判断它不能正常工作?

    [/报价]

    主席先生,

    当上升和下降死区都被启用时、就会出现此问题。 ePWM1A 和 ePWM1B 均从零开始、但我希望 从 PRD 获取 ePWM1B、即180度偏移。

    我确实得到了所需的值。

    请帮助

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

    Ravi、

         不用担心、这是可能的。 我猜您的 DB 子模块中有一些配置错误。

    我运行了一个快速测试、从 controlSUITE 中的死区示例开始。 我进行了一些修改:

    1. 我使用了向上/向下计数模式
    2. 我添加了 CMPB =(TBPRD-CMPA)
    3. 对于 CMPA:ZRO= SET 和 CAU = CLEAR
    4. 对于 CMPB:PRD= SET 和 CBD = CLEAR
    5. 将 POLSEL 更改为高电平有效
    6. 更改了 IN_MODE 以接受来自 AQ 子模块的2个 PWM 信号

    为了使脉冲在占空比上相等、我需要同时使用 CMPA 和 CMPB、如果我只使用 CMPA、那么一个信号将是另一个信号的补码。 如果 A 为25%占空比、则 B 为75%。

    查看示例、看看我的修改是否使您接近您想要的位置。


    此致、
    Cody