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.

[参考译文] TM4C1294NCPDT:PWM 发生器在加载/周期匹配值不同的加载/减计数模式下的时基同步。

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/690176/tm4c1294ncpdt-pwm-generator-s-time-base-synchronisation-in-up-down-count-mode-with-different-load-or-period-match-values

器件型号:TM4C1294NCPDT

我正在使用 PWM 发生器0和发生器1 (总共4PWM)为单相 H 桥电路生成中心对齐的 PWM @ 20kHz。

我想以10kHz 的一半 PWM 频率运行控制环路 ISR、并使用 PWM 发生器2触发 ADC 以在10kHz 进行电流感应、如下图所示。 是否可以在增减模式下将 PWM-Generator-2时基与 PWM 发生器0和1的两倍负载值同步?

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

    您的图像看起来没有正确上传到 E2E、您可以再次尝试添加吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    请检查上图。

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

    您好、米兰、

    感谢您提供的图片、非常有助于我理解、这一点现在已经非常清楚了。

    不幸的是,答案是:"视情况而定"

    您需要同步的紧密程度如何?

    您愿意重新同步信号的频率是多少?

    这两个问题对于确定可能的情况非常关键。

    通常、在两个不同周期的同步中、最好是尽可能地将它们的计数器清零。 使用同步 API 可以很好地实现这一点、但同步不会永远持续、并且实际上初始降级会非常快、因为在3-4ms 内、同步中已经存在300-400ns 的误差。 不重新同步的时间越长、同步越多、其速率似乎约为25ns/ms (仅通过一些粗略的测量和计算)。

    如果您对微小的变化甚至不能容忍、或者无法经常重新同步、那么根据我的调查结果、您将无法实现您所期望的目标。

    这是我用来尝试此操作的代码。 我现在知道、你也需要调整中心、但这并不反映、但我认为原则是相同的。

    uint32_t ui32SysClock;
    
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
    
    SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
    
    GPIOPinConfigure (GPIO_PK4_M0PWM6);
    GPIOPinConfigure (GPIO_PG1_M0PWM5);
    
    GPIOPinTypePWM (GPIO_PORTK_base、GPIO_PIN_4);
    GPIOPinTypePWM (GPIO_PORTG_base、GPIO_PIN_1);
    
    PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_GEN_SYNC_LOCAL);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_GEN_SYNC_LOCAL);
    
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、(ui32SysClock / 10000)- 1);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_6、(ui32SysClock / 50000)- 1);
    
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、(ui32SysClock / 20000)- 1);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_5、(ui32SysClock / 50000)- 1);
    
    PWMOutputState (PWM0_BASE、PWM_OUT_6_BIT | PWM_OUT_5_BIT、TRUE);
    
    PWMGenEnable (PWM0_BASE、PWM_GEN_3);
    PWMGenEnable (PWM0_BASE、PWM_GEN_2);
    
    PWMSyncTimeBase (PWM0_BASE、PWM_GEN_2_BIT | PWM_GEN_3_BIT);
    PWMSyncUpdate (PWM0_BASE、PWM_GEN_2_BIT | PWM_GEN_3_BIT);
    
    while (1)
    {
    //不执行任何操作
    SysCtlDelay (50000);
    PWMSyncTimeBase (PWM0_BASE、PWM_GEN_2_BIT | PWM_GEN_3_BIT);
    PWMSyncUpdate (PWM0_BASE、PWM_GEN_2_BIT | PWM_GEN_3_BIT);
    } 

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

    此外、根据您的具体应用需求、我想知道如果您能够使计时器与 PWM 保持类似同步、是否能更好地为计时器提供服务。 同样、同步需要的紧密程度将决定可行性、但我认为使用的计时器可能有一些好的优势、因为您可以从计时器触发 ADC。 零计数 ISR 还会用于什么? 这不清楚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、

    感谢您的详细解释、尽管我似乎无法准确使用我的应用所需的 Tiva。

    我需要 PWM 计时器始终保持同步、因为 H 桥中的电流感应与周期匹配至关重要、否则会由于20kHz 开关纹波而导致感应出错。 零电流 ISR 将用于电压/电流 PI 控制器和占空比计算等的闭合控制环路软件执行

    我想用很少的软件开销解决它的另一种方法。 我将以20kHz 的频率触发 ADC 和 ISR、但对 ADC 值使用替代周期并执行控制 ISR。

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

    您知道 TM4C1294 PWM0不能实现真正的 ZVSFB、零电压相移 H 桥换向吗? 它可以在零电压下从两个重叠的发生器 A/B 信号中切换两个电感桥臂、同时发生零标志同步更新。 相移似乎是由设计从该期间的 A/B 不均匀占空比继承而来的。 换句话说、如果不在混合中使用 GPTM、您就无法轻松设置任意两个同步发生器之间所需的相移量。

    也就是说、如果您不需要通过产生的重叠相移来调整功率级别、那么它可能工作正常。 否则、Piccolo F280x 是 ZVSFB 的更好选择、它具有相位控制寄存器、可轻松进行调节。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101、

    感谢您的输入、尽管我不需要相移调制、而是需要两个交错降压转换器、一对交错降压的第0代两个 PWM 和另一对降压转换器的第1代 PWM。 我能够使用 Tiva 非常成功地生成交错式 PWM。我唯一需要的就是以一半的开关频率执行控制环路 ISR 和 ADC 触发、因此我希望将 Gen-2同步为 Gen-0/1频率的1/2。

    我同意您的观点、即 Piccolo 是此类电源应用的正确选择。

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

    [引用 user="Milan rajne"]我唯一需要的是以一半的开关频率执行控制环路 ISR 和 ADC 触发,因此我想将 Gen-2同步为 Gen-0/1频率的1/2 [/引用]

    PWM0模块 应能够 在每个零标志( GEN0)期间更新波形、并 在 Ralf 提到漂移时通过波形更新来保持半交错频率(Gen1)、否则会发生漂移。