[PWM] 故障保护和强制输出功能

摘要

本文针对 PWM 的部分功能展开阐述,主要涵盖故障保护(fault)相关内容以及强制输出(force)相关内容。

强制输出

强制输出模块的作用是在对应的时间点,将初始波形强行置高或置低。这在斩波应用中具有重要作用,强制输出分为软件控制的强制输出和硬件控制的强制输出。

软件强制输出

软件控制的强制输出在使能软件控制后,根据预设的强制输出的时机完成置高置低动作,有以下几个时机可选:

  • 即时生效:一旦设置,立即改变输出状态。
  • 重载时生效:在计数器达到预设值并重新加载时改变输出状态。
  • 同步输入触发:当检测到外部同步输入信号时改变输出状态。
  • 不生效:不进行任何强制输出控制。
/* 使用软件强制输出 */
    pwm_enable_pwm_sw_force_output(PWM, PWM_OUTPUT_PIN);
/* 使能软件强制输出 */
    pwm_enable_sw_force(PWM);

硬件强制输出

硬件控制的强制输出由外部输入的FRCI信号控制,该信号通过triggermux与外部模块连接,当设置好FRCI信号的生效极性后,pwm波将会按照输入信号的频率对当前生成的信号进行强行置高置低,达成斩波的效果。

/* 使用硬件强制输出 */
    pwm_config_t config = {0};
    pwm_get_default_pwm_config(TEST_PWM, &config);
    config.force_source = pwm_force_source_force_input;
    pwm_config_pwm(PWM, channel, &config, false);
/* 硬件强制输出,FRCI信号低电平有效 */
    pwm_config_force_polarity(PWM, 0);

故障保护

在pwm中,故障保护为pwm波输出链的最后一个模块,用来在发生故障时阻止pwm波输出,将输出变为预设的电平,起到保护被控制设备的作用。

内部故障保护

内部故障保护是一种同步故障保护,在模块时钟驱动下对pwm输出进行故障应急动作。

外部故障保护

外部故障保护是一种异步故障保护,可以在pwm外设丢失时钟的情况下,对pwm输出进行故障应急动作,可以和内部故障保护同时设置。

debug模式

pwm模块支持在调试情况halt住内核的时候停止pwm输出,将输出电平置高或置低。可以同以上两种保护模式同时设置。

故障恢复时机

故障恢复有几下几个时机可选:

  • 立即恢复:一旦故障条件解除,立刻恢复正常操作。
  • 重载后恢复:在计数器重载之后恢复输出。
  • 匹配后恢复:当特定的硬件事件发生时(例如比较器匹配事件)恢复输出。
  • 手动恢复:通过手动操作来恢复PWM输出。
    pwm_config_t pwm_config = {0};
    pwm_fault_source_config_t fault_config = {0};

    pwm_get_default_pwm_config(PWM, &pwm_config);
/* 故障发生输出电平0,故障恢复立即回复 */
    pwm_config.fault_mode = pwm_fault_mode_force_output_0;
    pwm_config.fault_recovery_trigger = pwm_fault_recovery_immediately;

/* 使能内部0,外部0,debug故障保护 */
    fault_config.source_mask = pwm_fault_source_internal_0 | pwm_fault_source_external_0 | pwm_fault_source_debug;
/* 选中一个比较器作为故障恢复时刻,外部故障低电平有效 */
    fault_config.fault_output_recovery_trigger = compare_index;
    fault_config.fault_external_0_active_low = true;
    pwm_config_fault_source(PWM, &fault_config);
    pwm_config_pwm(PWM, channel, &pwm_config, false);
0
0
发表回复 0

Your email address will not be published. Required fields are marked *