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.

[参考译文] TMDSCNCD280039C:生成2个带失效时间的互补 PWM 输出的示例

Guru**** 2511415 points
Other Parts Discussed in Thread: C2000WARE, TMDSHSECDOCK

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1082888/tmdscncd280039c-example-to-generate-2-complimentary-pwm-output-with-dead-time

部件号:TMDSCNCD280039C
“线程”中讨论的其它部件:C2000WARETMDSHSECDOCK

例如,我正在寻找使用280039C 设备生成2个 PWM 输出,该设备具有用户定义的死机时间,切换频率和死机时间。 我已经尝试了模块7的“控制外设实验室”示例,它允许我使用 CCS 中的 Graph 工具查看指定频率和占空比的 ePWM 单通道输出,并检查范围的输出。 现在,我想将其增强为2通道互补 PWM 输出,并在死机时进行。  

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

    你好,沙汉克,

    您可以查看位于 C2000Ware_XX/driverlib/f28003x/examples/C28x/ePWM 文件夹的 C2000Ware 驱动程序库部分中提供的 ePWM_EX8_d死 区示例。

    希望这能有所帮助。

    谢谢,

    阿迪特亚

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

    你好,阿迪蒂亚,

    在示例中,当我检查范围上的 GPIO10和 GPIO11时,

    问题1:
    我没有收到一份有死时间的免费输出。 以下是在示波器上捕获的波形。   连接到示波器的子卡 TMDSHSECDOCK 上的引脚为引脚61和引脚63。  

    顺便说一句,我将 ePWM_TIMEER_TBPRD 从 2000UL 更改为 2250UL (似乎是600us 时间段)。 由于子卡上的 GPIO11引脚与使用的其他 GPIO 引脚不同,这是问题吗?  

    问题1:而且,我相信3000用户许可证的有效期是800用户。  ePWM_TIMEER_TBPRD 与时间段的确切关系是什么?  

    问题2: 为了改变死机时间,我应该改变哪些参数? 下面的200和400代码在 usec 中转换为什么? 是否有更简单的方法将失效时间设置为可变输入?  
    //设置红色和馈入值
    //
    ePWM_setFallingEdgeDelayCount (基本,200);
    ePWM_setRisingEdgeDelayCount (基数,400);
    //

    问题3:我的理解是否正确:要更改工作周期,我需要修改以下两行代码? (当前设置为25%)。 是否有更简单的方法将占空比输入作为代码中的变量输入?
    ePWM_setCounterCompareValue (基本值,ePWM_counter_compare_a,ePWM_TIMER TBPRD/4);
    ePWM_setCounterCompareValue (基本值,ePWM_counter_compare_B,3*ePWM_TIMEER_TBPRD/4);  

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

    Shashank,

    在本例中,当我检查 GPIO10和 GPIO11的示例中,[引用 userid="5136770" URL"~ë/support/icros/C2000 -微控制器组/CC2000 /f/C2000 -微控制器-论坛/1082888/tmdscncd280039c-example-to -generate-2-explexcan-wm-output-with -id-dead -time /4009569#4009569 '"
    [/引用]

    GPIO10,11对应于禁用死区的 EPWM6,有关使用不同 ePWM 模块显示的不同功能的详细信息,请参阅示例说明。

    在您的情况下,您可以检查 EPWM4的输出,该输出演示了“主动高互补”操作模式。

    [引用 userid="513670" url="~/support/icins/c2000微控制器-组/CC2000 /f/c2000 -微控制器-论坛/1082888/tmdscncd280039c-example-to generate-2-excusbe-wm-output-with -dead time /4009569#4009569]800ques 1:我还相信,我们的 UL 期限也是在美国。800ques 1:  ePWM_TIMEER_TBPRD 与时间段的确切关系是什么?  [/引用]

    TBPRD 是一个期间寄存器,用作生成所需 PWM 频率的分频器。 设备参考手册中详细说明了如何计算 PWM 频率和周期。

    [引用 userid="513670" url="~/support/icins/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1082888/tmdscncd280039c-example-to-generate-2-exc项-pwm-output-with -dead-time /4009569#4009569 "]以下哪些代码可以翻译200和400?引用400代码[usec 以下哪个代码?]

    200,400将符合 PWM 时钟频率。 例如 时钟频率为10kHz,然后200将转换为20usec。

    您也可以将其与 TBPRD 注册表直接关联,以了解您的案例中200和400将转换为什么。

    [引用 userid="513670" url="~ë/support/icns/c2000-icro-group/c2f/c2000-m控制 器-forume/1082888/tmdscncd280039c-example-forde-2-explyus-pwm-output-with -dead time /4009569#4009569 "]我是否理解修改以下两行代码以修改代码,并修改两行代码?]

    没错。 计数器比较寄存器用于计算占空比。 您可以在此处定义变量来代替定义的占空比,并根据需要在代码的其他部分与变量一起使用。

    我在前面的答复中提到的同一个文件夹中的 updown_AQ 示例也展示了一个类似的可变负荷示例。


    谢谢,

    阿迪特亚

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

    阿迪特亚,

    感谢您的回复。 然而,我在这里有点困惑。  

    [引用 userid="462934" url="~ë/support/icins/c2000-icro-group/c2f/c2000-微控制器-forume/1082888/tmdscncd280039c-example-to-generate-2-probyer-output-with -dead-time /4010341#4010341"]

    GPIO10,11对应于禁用死区的 EPWM6,有关使用不同 ePWM 模块显示的不同功能的详细信息,请参阅示例说明。

    在您的情况下,您可以检查 EPWM4的输出,该输出演示了“主动高互补”操作模式。

    [/引用]

    我发现以下描述表明 EPWM6用于开关 A 和 B 输出:EPWM1禁用死区。 请澄清哪一项正确。 我从下面的描述中想到,我需要使用  GPIO10 EPWM6A 和  GPIO11 EPWM6B。  
    示例位置为:“ePWM_EX8_dul带”,位于位置 C:\ti\C2000Ware_4_00_00_00\driverlib\f28003x\examples\ePWM 下

    //! 此示例按如下所示配置 ePWM1到 ePWM6
    //! -禁用去带功能的 ePWM1 (参考)
    //! - ePWM2,脱带主动偏高
    //! - ePWM3,脱带主动低电平
    //! -免费提供带去死区活动高电平的 ePWM4
    //! - ePWM5,带脱带主动低电平
    //! -带去频输出交换的 ePWM6 (开关 A 和 B 输出)
    //!
    //!
    //! b 外部连接\n
    //! -GPIO0 EPWM1A
    //! -GPIO1 EPWM1B
    //! -GPIO2 EPWM2A
    //! -GPIO3 EPWM2B
    //! -GPIO4 EPWM3A
    //! -GPIO5 EPWM3B
    //! -GPIO6 EPWM4A
    //! -GPIO7 EPWM4B
    //! -GPIO8 EPWM5A
    //! -GPIO9 EPWM5B
    //! GPIO10 EPWM6A
    //! GPIO11 EPWM6B

    [引用 userid="462934" url="~ë/support/intrles/c2000-intraters-group/c2f/c2000-intraters-forum/1082888/tmdscncd280039c- example-to generate-2-exply-pwm-output-with -dead-time /4010341#4010341"]设备参考手册[引用/引述]

    您能告诉我 参考手册中可以读取 PWM 频率计算的内容吗?  

    [引用 userid="462934" url="~ë/support/intrles/c2000-intraters-group/c2f/c2000-intraters-forum/1082888/tmdscncd280039c- example-to-generate-2-excwm-output-with -dead-time /4010341#4010341]],例如。 时钟频率为10kHz,然后200将转换为20usec。

    这是否意味着死亡时间是20usec 和40usec? 您能否更详细地解释以下各行  

    ePWM_setFallingEdgeDelayCount (基本,200);
    ePWM_setRisingEdgeDelayCount (基数,400);

    如果我说20kHz PWM 频率,并且想要200ns 的死机时间,我应该使用什么值?

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

    Shashank,

    [引用 userid="513670" url="~/support/icles/c2000-icler-group/c2f/c2000微控制器-forum/1082888/tmdscncd280039c-example-to-generate-2-excusion-wm-output-with -dead-time /4010433#4010433]I 发现以下断带 WEPM1和 WEPB 的输出描述是禁用的,其中说明 WEPM1的。 请澄清哪一项正确。 我从下面的描述中想到,我需要使用  GPIO10 EPWM6A 和  GPIO11 EPWM6B。  [/引用]

    EPWM6演示了交换 A 和 B 输出的功能。即使在交换输出时也可以插入死时间,但在本例中,死区未启用。 您可以检查下面列出的禁用上升边缘和下降边缘延迟的部分代码。

    void setupEPWMOutputSwap(uint32_t base)
    {
    
        //
        // Disable RED
        //
        EPWM_setDeadBandDelayMode(base, EPWM_DB_RED, false);
    
        //
        // Disable FED
        //
        EPWM_setDeadBandDelayMode(base, EPWM_DB_FED, false);
    
        //
        // Switch Output A with Output B
        //
        EPWM_setDeadBandOutputSwapMode(base, EPWM_DB_OUTPUT_A, true);
        EPWM_setDeadBandOutputSwapMode(base, EPWM_DB_OUTPUT_B, true);
    
    }
    

    有关 ePWM 频率计算,请参阅 参考手册中的“20.4.3 Calculating PWM Period and Frequency”(20.4.3计算 PWM 周期和频率)。

    死区计算也在参考手册 ePWM 一章的死区模块中讨论。

    谢谢,

    阿迪特亚