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.

[参考译文] 编译器:PWM DEADTİME CONFİGURATİON!!!

Guru**** 2460990 points
Other Parts Discussed in Thread: LMG5200

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/651932/compiler-pwm-deadt-me-conf-gurat-on

主题中讨论的其他器件:LMG5200

工具/软件:TI C/C++编译器

我如何产生将占 PWM 周期20%的死区时间?

我在哪里犯错?

#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/debug.h"
#include "driverlib/pwm.h"
#include "driverlib/pin_map.h"
#include "inc/hw_gpio.h"
#include "driverlib/rom.h"


int main (空)

uint32_t cycle;
uint32_t pwmfrequency;
uint32_t 死区;
uint32_t pwmperiod;
pwmperiod=50;
pwmfrequency = SysCtlPWMClockGet ()/pwmPeriod;
死区=pwmperiod*20/100;
cycle=pwmperiod*50/100;

SysCtlClockSet (SYSCTL_SYSDIV_1_SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);
SysCtlPWMClockSet (SYSCTL_SYSDIV_8);
SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);

GPIOPinTypePWM (GPIO_Porte _BASE、GPIO_PIN_4);
GPIOPinTypePWM (GPIO_Porte _BASE、GPIO_PIN_5);

GPIOPinTypePWM (GPIO_PORTD_BASE、GPIO_PIN_0);
GPIOPinTypePWM (GPIO_PORTD_base、GPIO_PIN_1);


GPIOPinConfigure (GPIO_PE4_M0PWM4);
GPIOPinConfigure (GPIO_PE5_M0PWM5);

GPIOPinConfigure (GPIO_PD0_M1PWM0);
GPIOPinConfigure (GPIO_PD1_M1PWM1);

PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_UP_DOWN|PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure (PWM1_base、PWM_GEN_0、PWM_GEN_MODE_UP_DOWN|PWM_GEN_MODE_NO_SYNC);

PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、pwmPeriod);
PWMGenPeriodSet (PWM1_base、PWM_GEN_0、pwmperiod);


PWMDeadBandEnable (PWM0_BASE、PWM_GEN_2、死区、0);// pd1


//PWMDeadBandEnable (PWM1_base、PWM_GEN_0、死区、0);// PE4


PWMOutputState (PWM0_BASE、PWM_OUT_4_BIT、TRUE);
PWMOutputState (PWM0_BASE、PWM_OUT_5_BIT、false);


PWMOutputState (PWM1_base、PWM_OUT_0_bit、false);
PWMOutputState (PWM1_base、PWM_OUT_1_BIT、true);

PWMGenEnable (PWM0_BASE、PWM_GEN_2);
PWMGenEnable (PWM1_base、PWM_GEN_0);


while (1)



PWMOutputInvert (PWM0_BASE、PWM_OUT_4_BIT、TRUE);
PWMPulseWidthSet (PWM0_BASE、PWM_OUT_4、cycle);
// PWMPulseWidthSet (PWM0_BASE、PWM_OUT_5、cycle);

//PWMPulseWidthSet (PWM1_base、PWM_OUT_0、cycle);
PWMPulseWidthSet (PWM1_base、PWM_OUT_1、cycle);


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在 TivaWare 中看到了示例代码:
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\peripherals\PWM\Dead_band.c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另请注意、可能施加的"死区时间"量"存在限制。    (API 的 PDL 公开了这些限制-由"死区时间"函数强制执行。)

    如果您选择这种方法、您可能会(可能)证明"发挥自己的功能"-"失败"(至少延长这些限制)-您会承担所有风险。     (请参阅我的"内容提供商"样板文件-位于每个论坛页面的底部...)

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

    除了其他极好 的输入、根据  逆变器同步的类型和方法、启用死区发生器并非总是必要或必需的。

    249-250kHz PWM 频率 将与 TI GaN 驱动器完美配合、并可获得巨大的效率。 有几个简短的在线培训研讨会、搜索 GaN 驱动器。

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

    什么是"其他人"的好输入?     只有一个帖子 识别出"gotcha"、该" gotcha"在 "madband .c"中显示为"未显示"!

    无效

    PWMDeadBandEnable (uint32_t ui32Base、uint32_t ui32Gen、

             uint16_t ui16Rise、uint16_t ui16Fall)

      //

      //检查参数。

      //

      assert (((ui32Base == PWM0_BASE)||(ui32Base == PWM1_base));

      assert (_PWMGenValid (ui32Gen));

      断言(ui16Rise < 4096); // 因此4096/65535 = 6.25% ...  建议 "最大死区占脉宽的百分比" (不考虑"死区"的"折返"性质)

      assert (ui16Fall < 4096);

    根据海报的 PWM 频率(其(所需)死区的异常幅度)、可能无法启用此设置!   (没有技巧和重复的,“大刀使用”...  以"破解示例代码..."

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

    更大的问题可能存在于 PWMCLK  中、它是2MHz 、甚至能够生成 任何所需 的示例项目的 machete hack。

     除了海报要求所述 PWM 周期的20%= DB、 这样的边沿时间甚至是可能的(2000000/2500000000 = 8个节拍) 或 (500ns/4us = 125ms) 节拍周期。 16MHz CPU 时钟/ 8 = 2MHz PWMCLK、 对于产生如此高的 PWM 频率以及在每个 PWM 周期中增加200-300ns (典型值) DB 时间而言、似乎有点慢。  下面的代码 假定(死区)=125*20=2500 并且(周期)=125ms*50=6250。 然而、我 的示例中缺少小数点(0.125)、考虑 到海报 实际的节拍周期 、我们得到的是相对2.5 和6.25。  也许移动 PWMCLK 小数点、 增加 节拍周期 一个相对因子10、 将其向左移动6位 会得到60MHz PWMCLK、  如果海报需要249-250kHz (固定)的 PWM 频率、这在我的直觉中似乎有点慢。   什么是海报所需 的最小/最大 Ton/Toff 周期、我们必须假设混合中有死区的逆变器、PWM 占空比是否相对于实际逆变器负载发生变化。  

    谁知道海报所需的 PWM 频率甚至是什么、  除了海报提供的信号捕获准确的 PWM 频率之外、没有澄清过这一点!

    pwmperiod=50;
    pwmfrequisits=SysCtlPWMClockGet ()/pwmperiod;
    dadband =pwmPeriod*20/100;
    cycle*50/100;
    
    SysClockSet (SYSCTL_SYSDIV_1_SYSCTL_USE_PLL|sctl_OSC_main);SysCtl_SysClockSet_SysClock_main_16MHz;
    SysCtlPWMClockSet (SYSCTL_SYSDIV_8); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请注意、"全部抓住"示例虽然快速/简单、但并不显示"对细节的公开关注"、有时(或许经常)是必需的!
    这仍然是"无机枪声、外人"助手 crüe……的"价值"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意、您已找到(2.5%/6.25%)并同意实际的 PWM 数学公式。 您是否有任何建议海报说明在将死区时间添加到 PWM 周期之前、可能需要达到的最小 PWMCLK (假设 PWM 频率为250kHz)。

    TM4C129x 数据表中是否没有建议将 PWMCLK 相对于所需最小 PWM 周期的值确定为多少的因数或乘法器。 也许其他 TI 论坛的数据表会在这个领域提供非常详细的信息。 TI 研讨会视频培训在长期以非常高的 PWM 频率运行时可能更加相对。 以前的 Tivaware DB 示例不是为 TM4C129x 处理器编写的、只需进行许多微调即可使其运行。

    OBTW;在实际应用中、该示例几乎没有帮助、甚至没有帮助在特定类型的逆变器中启用 DB 发生器。

    https://training.ti.com/how-get-started-gan-power-design-under-3-minutes

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

    我们已经(很长一段时间)转向 M0 (对于成本敏感型设计)和 M7 (对于性能较高的设计)、我的建议(保留)如上所述。
    始终且仅限-供应商代理在质疑"如此奇怪/异常"的招贴画请求时仍然"不重要"-如果不是直接、则"默示"会鼓励这样做。

    为什么需要20%的死区时间-它的魔力是什么?    为什么要让  外人"总是/只"要求这样做... 为此、我们的"奖励"将被取消!   (出于最可疑和最受酷刑的原因!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、我不完全理解这一含义、我是第一次使用微控制器。
    您会更具描述性吗? 如何解决问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您对20%死区的渴望是不寻常的-死区的价值非常高。
    您的 PWM 信号的频率-尤其是在(相对)较低时-可能会产生"过长的死区时间周期!"

    为什么您认为您需要20%的死区?    这一想法源于何处?

    死区的目的是尽量减少侧和低侧功率器件(通常为 FET )(称为"击穿"的条件 )的任何(接近)同时导通(如果不是快速和强制限制)、这通常会导致 功率级损坏!    (也是 PCB、如果您特别不幸运的话)

    您自己花时间/努力"更具描述性"、似乎有必要进一步解决您的问题。   20%的死区证明是"适当"(甚至是现实)的要求(非常)令人怀疑!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。
    但需要注意的问题是:例如、我能否从端口 B 的 PB6和 PB7获得两个 PWM 输出信号?
    M0PWM0将反相.m0PWM0,M0PWM1将是延迟上升沿。
    这是可行的吗?
    感谢您的 CB1_MOBILE。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们 尝试让 Emre  概述 频率 目标 、以便 帮助者 能够引导正确的方向。  

     Emre 是否  不能更好地描述 (所有)预期目标? 除了  指出  需要 回顾的要点、 思考之外、此论坛不会解决您的死区计时问题。

    TI 研讨会视频 链接(上述帖子) 将让您更好地了解频率 和死区百分比如何影响逆变器效率。

    Emre 是否愿意观看视频? 或者简单地回答、任何帮助者都不理解他实现无法实现的目标的愿望。

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

    是的-当然你可以-我会(高兴地)引导你。    作为一个(有点)成功的“技术企业所有者”,我更喜欢“ 教授攻击方法”,这样您的能力和信心就会倍增,因此我的兴趣(几乎)永远不会... 提供(盲目接受)"剪切和粘贴!"

    请注意、对于20%(仅20%)的死区处方、您"保持沉默"。   我们(现在)是否摆脱了这种担忧?   (我认为这是无效的、不是您的偏好!)

    通过查找和阅读/回顾以下内容、您的学习将获得极大帮助:

    • "MCU 手册"-从第一章开始(一般说明)-然后移至"PWM 外设部分"
    • "外设驱动程序库用户指南"-绝对精彩的文档-让您的工作变得更快、更简单、更协调!
    • "TivaWare\examples\Peripheral\PWM - NEAT 代码示例-但在您阅读/审阅上述2个(详细得多)项后只读。   快捷方式不起作用!  会造成巨大的"痛苦/痛苦"-(不要问-"我怎么知道?")

    如果您表示同意、"启动学习路径"只是详细说明-我将提供(基本)代码-(但绝不是"所有代码")、因为您通过"技术/方法"获得最佳服务-绝不通过(盲)剪切/粘贴...

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

    刚才提供的建议/指导似乎证明了"不再必要/不希望"。  (问题已标记为“已解决”。)

    很明显----"尚未有这样的解决办法"。

    (恐惧不……  CB1 -再次-启动搜索"手枪"... 和 "论坛指导/关怀"-(现已结束) "头部射门"-大床...)

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

    在这个论坛上发布的一些最佳指导也值得绿色的认可!!

    令我惊讶的是、GaN 研讨会(上面的链接)示波器捕获显示 DB 延迟接近1.7ns、WOW。 似乎表明使用 GaN 可以实现高效的 PWM 系统。 TI GaN 模块套件可快速启动初学者、以了解 DB 延迟如何影响逆变器整体效率。 此外、论坛用户可以将套件连接到大多数 LaunchPad 上、并捕获1/2桥 DB 延迟结果。 似乎很难在没有1/2电桥和示波器探针连接的情况下捕获(一个)发生器产生的高频 DB 延迟。

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

    [引用 user="BP101"]本论坛中发布的一些最佳指导也值得绿色的批准印章!

    您是否谈到"引导至示例\外设发布?"

    [引用 user="BP101"]似乎很难捕获(一个)发生器产生的高频 DB 延迟,而没有半桥和示波器探针连接。

    抱歉-我没有"完全做到"(捕获"HF"(此处未定义)强加给一个 PWM 发生器双路输出的死区-并且(完全)没有任何"半桥"?   我已经在这里发布过这样的信息-一年或一年多一次...

    很明显-连接了2个通道示波器探针。  (这一点(某种程度上)让我感到很失望。)

    阅读您的 PM -裂缝员工已经写过...

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

    您认为吗?   在这种"低湿度"条件下、"火药"是否危险?  (现在位于 Chi、为2°F。)  

    "Kat/Dawg"在 彼此  接触时绘制非常整齐的圆弧 -或(甚至) Moi。

    ESD 规则 -尤其是当"加热器 打开和打开(高占空比)"以及 死区极小(远低于20%)时!"    (另一个有趣的事实!)

    您能说、"JTAG 的多次丢失"... 即将推出-适用于美国中西部和/或东北部地区的 TM4C 用户?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GaN 视频使用函数发生器来产生2.0ns 的上升和1.7ns 的下降 DB 延迟、错误的12ns。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈?   (原谅,但“那么怎么样?”)   没有张贴“  20%和只有20%”死区的问题 ... (仍然)  Sit & fester -未解决?  

    不是 GaN 简介、 "云/模糊" 入门海报的"追求?"    您确实意识到 "更高频率"会使他的追求  (20%死区)(甚至更难) -您不会这样做吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    LMG5200 (12ns/1.7ns) DB 延迟似乎出现在 GaN 驱动器内部、也许海报上发现的 DB 内置于 LMG5200 GaN 开关中。 老实说、我完全错过了最初几次观看视频的机会。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    真的-我们不是"飞"全速-进入  如此高的"杂草"。

    海报是否(有)提到了 LMG5200 -完全是吗?    (如果是-我可能必须减少(两者)... 获得武器和酒精。)    或者更有可能-仅(其中一个)(必需)两个...

    Crack Staff 早餐(在大湖(密歇根)呼叫中)-消防处(临时) "暂停"。