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/TMS320F2.8379万D:PWM

Guru**** 2540720 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/620140/ccs-tms320f28379d-pwm

部件号:TMS320F2.8379万D
主题中讨论的其他部件:C2000WARE

工具/软件:Code Composer Studio

我想为我的系统生成20kHz PWM

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

    您好,Kudithi,

    kudithi nageswararao 说:
    我想为我的系统生成20kHz PWM

    只需参考C2000ware中ePWM生成的示例代码,然后更改TBPRD值以获得20kHz频率。

    如果您需要更多信息,请告诉我。

    此致,

    Gautam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Gautam
    谢谢你。。。
    但我面临的问题是,为20kHz提供波特率(1万)是否正确。
    当我看到CRO的输出时,它的频率为25kHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着什么:-set timer period 801 TBCLK
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ePWM用户指南具有用于计算上/下计数和上/下计数的TBPRD (计时器周期)值的公式。 请参阅并计算20kHz的适当TBPRD值。

    kudithi nageswararao 说:
    这是什么意思:-set timer period 801 TBCLK

    这就是我所说的TBPRD价值。

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

    我得到了epwm1A和epwm1B

    但因为epwm2不工作,我遵循了这个代码..

    void InitEPwm1example()

    ////设置TBCLK //
    EPwm1Regs.TBPRD = PWM_PRD; //设置定时器周期801 TBCLK
    EPwm1Regs.TBPHS.bit.TBPHS = 0; //相位为0
    EPwm1Regs.TBCTR = 0; //清除计数器
    ////设置比较值0 //
    EPwm1Regs.CMPA.bit.CMPA = 1250;// set比较值
    EPwm1Regs.CMPB.bit.CMPB = 1250;
    ////设置计数器模式//
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;//向上和向下计数
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; //禁用相位加载
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //与SYSCLKOUT的时钟比率
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    ////设置阴影//
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZE;//零加载
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    ////设置操作//
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; //在事件A上设置PWM1A
    //计数
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; //在事件A上清除PWM1A,
    //向下计数

    EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; //在事件B上设置PWM1B,启动
    //计数
    EPwm1Regs.AQCTLB.bit.ZRO= AQ_set; //在事件B上清除PWM1B,
    //向下计数

    ////中断,我们将在此处更改比较值//
    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; //选择INT ON Zero Event
    EPwm1Regs.ETSEL.bit.inten = 1; //启用INT
    EPwm1Regs.ETPS.bit.INTPRD = ET_3; //在第三个事件上生成INT


    EPwm2Regs.TBPRD = PWM_PRD; //设置定时器周期801 TBCLK
    EPwm2Regs.TBPHS.bit.TBPHS = 500; //相位为0
    EPwm2Regs.TBCTR = 0; //清除计数器

    //
    //设置比较值
    //
    EPwm2Regs.CMPA.bit.CMPA = 1250;// set比较值
    EPwm2Regs.CMPB.bit.CMPB = 1250;//设置比较B值

    //
    //设置计数器模式
    //
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;//向上和向下计数
    EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; //禁用相位加载
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //与SYSCLKOUT的时钟比率
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    //
    //设置阴影
    //
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZE;//零加载
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    //
    //设置操作
    //
    EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; //在事件A上设置PWM1A
    //计数
    EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR; //在事件A上清除PWM1A,
    //向下计数

    EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR; //在事件B上设置PWM1B,启动
    //计数
    EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; //在事件B上清除PWM1B,
    //向下计数
    //
    //中断我们将更改比较值的位置
    //
    EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;//在零事件上选择INT
    EPwm2Regs.ETSEL.bit.inten = 1; //启用INT
    EPwm2Regs.ETPS.bit.INTPRD = ET_3; //在第三个事件上生成INT
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,先生
    如何使用DSP时钟套件设置计时器周期
    在我的情况下,我的套件为200MHz,但我需要通过设置计时器周期来生成20kHz PWM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; //禁用相位加载
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //与SYSCLKOUT的时钟比率
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    如何设置此项?