ZHDA102 March   2026 MSPM0G3519

 

  1.   1
  2.   摘要
  3.   商标
  4. 1 简介
  5. 2 空闲低电平状态:PWM 输出通道低电平状态配置
  6. 3 非对称 PWM:具有相移控制功能的双路同步 PWM 生成
    1. 3.1 使用相位加载功能
      1. 3.1.1 主要计时器(主计时器)的配置
      2. 3.1.2 辅助计时器的配置
      3. 3.1.3 交叉触发功能的实现
    2. 3.2 使用辅助捕获/比较通道
  7. 4 位操作 (Bit-Banging) 仿真:基于软件的通信协议实现
    1. 4.1 使用 TIMA 仿真 UART Rx
    2. 4.2 使用 TIMA 仿真 UART Tx
  8. 5 基于反馈的 PWM 生成
    1. 5.1 基于反馈的 PWM 信号复制
    2. 5.2 使用输入基准生成延迟的 PWM 信号
  9. 6 延迟计时器启动:具有可配置延迟的同步计时器实例启动
  10. 7 基于硬件事件停止正在运行的计时器
  11. 8 动态 PWM 更新:占空比和时间周期调整
    1. 8.1 影子加载和影子比较功能
    2. 8.2 使用 DMA 生成任意信号
  12. 9 总结
  13. 10参考资料

基于反馈的 PWM 信号复制

生成输入 PWM 信号精确副本的功能在现代电子系统中发挥着重要作用,尤其是在需要安全冗余验证的应用中。该方法在双通道电机控制系统中广泛实现;在此类系统中,信号验证和故障检测对于运行安全至关重要。

在工业和安全关键型应用中,PWM 信号复制可实现强大的冗余控制路径和持续的系统监控。该技术涉及捕获输入 PWM 信号的特性并生成完全相同的输出信号,从而保持精确的时序关系。

此功能在电力电子应用中尤为重要,因为在这些应用中,同步开关控制和多个相位对齐输出至关重要。该实现允许信号缓冲、再生和扇出到多个子系统,同时保持信号完整性和抗噪性。

在电机控制应用中,这种方法可实现冗余的栅极驱动信号和双通道安全系统,对于容错运行至关重要。该系统会持续监控和验证信号,从而提供实时验证和性能监控功能。这在安全性和可靠性至关重要的工业设备中尤其重要。

该实现简单但功能强大,利用计时器捕获功能读取输入 PWM 参数并生成完全相同的输出信号。这可确保精确复制周期值和占空比值,从而在整个系统中保持信号完整性。由此产生的解决方案具有全面的优势,包括信号验证、安全冗余、分布式控制功能和稳健的系统监控功能。

执行以下步骤,可将计时器实例配置为生成基于反馈的 PWM:

  • 在递增计数模式下配置计时器。
  • 配置 CC0 通道以进行上升沿和下降沿的边沿捕获。
  • 在 CC0 通道上输入基准 PWM 信号。
  • 在输出模式下配置 CC1,以生成基于反馈的 PWM。
  • 将 CC1 通道的 CCCTL.CC2SELU 配置为 CC0,并将 CCACT.CC2UACT 字段配置为 CCP 输出切换。这将根据 CC0 捕获事件切换 CC1 输出。
  • CC0 通道上的捕获事件将由输入基准信号生成。
/* Configuration Sequence to Generate Feedback-based PWM */
static const DL_TimerA_ClockConfig gCAPTURE_0ClockConfig = {
    .clockSel    = DL_TIMER_CLOCK_BUSCLK,
    .divideRatio = DL_TIMER_CLOCK_DIVIDE_1,
    .prescale = 0U
};

static const DL_TimerA_CaptureConfig gCAPTURE_0CaptureConfig = {
    .captureMode    = DL_TIMER_CAPTURE_MODE_EDGE_TIME_UP,
    .period         = CAPTURE_0_INST_LOAD_VALUE,
    .startTimer     = DL_TIMER_STOP,
    .edgeCaptMode   = DL_TIMER_CAPTURE_EDGE_DETECTION_MODE_EDGE,//Enable Edge Capture on both rising and falling edges for CC0
    .inputChan      = DL_TIMER_INPUT_CHAN_0,
    .inputInvMode   = DL_TIMER_CC_INPUT_INV_NOINVERT,
};

SYSCONFIG_WEAK void SYSCFG_DL_CAPTURE_0_init(void) {

    DL_TimerA_setClockConfig(CAPTURE_0_INST,
        (DL_TimerA_ClockConfig *) &gCAPTURE_0ClockConfig);

    DL_TimerA_initCaptureMode(CAPTURE_0_INST,
        (DL_TimerA_CaptureConfig *) &gCAPTURE_0CaptureConfig);
    DL_TimerA_setCounterControl(CAPTURE_0_INST,DL_TIMER_CZC_CCCTL0_ZCOND,DL_TIMER_CAC_CCCTL0_ACOND,DL_TIMER_CLC_CCCTL0_LCOND);

    DL_TimerA_enableInterrupt(CAPTURE_0_INST , DL_TIMERA_INTERRUPT_CC0_UP_EVENT);

    CAPTURE_0_INST->COUNTERREGS.CCACT_01[1]=0x00018000;//Enable CC output Toggle for Secondary CC event. Secondary Event for CC1 will be generated when CC0 captures an edge
    DL_TimerA_setCaptureCompareValue(CAPTURE_0_INST, 0, DL_TIMER_CC_1_INDEX);
    DL_TimerA_enableClock(CAPTURE_0_INST);
    DL_TimerA_setCCPDirection(CAPTURE_0_INST , DL_TIMER_CC1_OUTPUT);
}

上述配置适用于基准 PWM 的周期和占空比不断发生变化的情况。

 仅基准 PWM 的占空比发生变化图 5-1 仅基准 PWM 的占空比发生变化
 基准 PWM 的占空比和时间周期均发生变化图 5-2 基准 PWM 的占空比和时间周期均发生变化