详解 eflexPWM 在 Fault 触发时的中断及硬体保护行为

不论在数位电源或是马达控制,只要是利用 MCU 控制功率电路时,都会需要实现一些保护功能。为了能够即时的关闭功率开关源件的能量传输,保护电路不受损坏,数位电源与马达控制的 MCU 上通常会有专用的 PWM 功能模块,可以透过硬体讯号直接关闭或是改变 PWM 输出。
 
在 NXP 的 DSC 系列上作为控制使用的 eflexPWM 就有专用的 Fault 功能模块来实现保护功能。eflexPWM 的 Fault 模块功能多且设计复杂,若是不熟悉 Fault 模块的运作情形,很容易在设计时使用错误的功能,导致 PWM 无法使用或保护没办法被正确触发,又或是保护或者保护解除时出现非预期的 PWM 波形。
 
在本文会详细介绍 eflexPWM 的 Fault 模块的运作方式,好更加了解如何透过这些功能达成保护功能的要求。
 
依据使用者使用 eflexPWM 的 Fault 功能时所需的知识,会依序讲解以下内容 :
  1. Fault 输入讯号模块的运作方式
  2. Fault 的触发与解除保护
  3. Fault 中断的使用
  4. Fault 功能总结
Fault 输入讯号模块的运作方式
 
eflexPWM 的保护功能是由 Fault 通道的输入讯号触发,输入讯号通常是内部的 CMP ( 比较器 )、QTimer ( 内部 Timer )、EVTG/AOI (内部逻辑模块) ,外部讯号则是经由 Pin 输入的外部比较器讯号或其他的控制讯号。
 
每个 Fault 模块有两组 Fault 讯号输入模块,每个模块有四个输入,使用者可以透过暂存器 DISMAPx 控制是否忽略该通道的 Fault 输入讯号。每个子模块的三个 PWM 输出 PWMA、PWMB、PWMX 都可以透过 DISMAP 暂存器独立进行设定。
 
下图是 DISMAP0 的暂存器内容,DISMAP0 是第一组 Fault 讯号输入模块,其中的 DIS0A 对应子模块的 PWMA,DIS0B 对应 PWMB、DIS0X 对应 PWMX,每个 bit 对应一个通道是否被使用于关闭该 PWM 输出。
 


 
Fault 输入讯号模块除了整合四个输入讯号外,还带有 Filter 滤波以及 Fault 状态 Latch 功能,一个 Fault 讯号输入模块的逻辑电路如下图 :


Fault 输入讯号可以透过 Fault Control Register FCTRL 来设定为 High Active 或是 Low Active,Fault 输入讯号是以边缘触发的 Rising edge ( Low Active 时为 Falling edge ) 来触发 Fault 中断旗标 FFLAG,该旗标用来触发 Fault 中断。Fault 输入讯号的 Falling edge ( Low Active 时为 Rising edge ) 以及 FFLAG 的清除则被用于恢复 PWM 输出。FFPIN bit 是用来表示该通道的输入是否为 Active,会受 Filter 延迟影响。





Fault 输入讯号带有 Filter 功能,Filter 只对 FFLAG 的触发有效,不论 Filter 滤波后是否判定为触发,只要 Fault input 存在的期间,PWM 皆会被关闭 ( 见下图标示 1 & 2 )。Fault Status Register 当中的 FFPIN 用于指示目前的 Fault input 讯号在 Filter 后的状态。Fault 解除的情况 Filter 不会动作 ( 见下图标示 4 & 5 )。
 

Fault 的触发与解除保护
 
Fault 模组的恢复分为自动模式与手动恢复模式,使用者可以根据需求,设定为在 Fault input 解除 Active 状态后自动解除 Fault 状态,或是以程式手动解除 Fault 状态。Fault 状态解除后,Fault 模组会根据设置在固定的位置检查是否可以恢复 PWM 输出。
 
在 PWM 的一个周期中,有两个固定位置可以设置 Fault 模组是否检查 Fault 状态并依据检查结果恢复 PWM 输出。这两个位置对应到 PWM Counter 的数位比较暂存器 VAL0 与 VAL1,其中,VAL1  同时作为 PWM Counter Reload 的位置,也就是一个周期结束的时间点,VAL0 则可以设置于周期中的任意位置。这两个位置的恢复分别透过暂存器 FSTS 中的 FHALF 与 FFULL 来启用。
 
 
设置于 VAL0 的恢复点被称为 Half Cycle,当 PWM Counter 计数至 VAL0 中的数值时,Fault 模组会检查 Fault 解除条件,判断是否能够恢复,VAL0 可以被设置在 PWM 周期的任意位置,也就是使用者可以根据需求指定 PWM 在周期中的哪个位置恢复。
 
 
设置于 VAL1 的恢复点被称为 Full Cycle,位于一个 PWM 周期的结束位置,也就是设置为 Full Cycle 的时候,每个周期结束的时候会检查下个周期 PWM 是否可以恢复。
 

 
当使用者只需要 Fault 条件成立时 PWM 关闭,恢复后随即恢复工作的简单保护功能时,就可以将 Fault 模组设置为自动恢复。设置为自动恢复时,Fault 模组不需要以程式介入做任何处置即可自行恢复被关闭的 PWM 输出,可以节省中断的使用与程式资源,并且做到快速的保护及恢复工作。定点 PWM 恢复的功能可以提供安全的 PWM 工作波形,避免恢复位置不固定造成非预期的 PWM 波形产生的损坏。
 
下图是一个设置为自动于 Full Cycle 位置恢复 PWM 输出的范例,标示 1 为中断触发的位置,标示 2 为 PWM 恢复的位置。图中的讯号说明如下 :
PWM Counter : PWM 的计数器。
Full Cycle : PWM Counter 跑至 VAL1 暂存器内数值的时间点 ( 周期结束点 )。
Falf Cycle : PWM Counter 跑至 VAL0 暂存器内数值的时间点 ( VAL0 可设置在周期内任意位置 )。
Fault input : 由 Fault 通道进来的输入讯号。
PWM output : PWM 是否为可输出状态。
FFPIN : 用来指示 Fault input 经由 high/low active 选择以及 Filter 处理后,讯号是否对 fault 模组有效的检查用暂存器。
FFLAG : Fault 模组用于中断触发的内部讯号。

 
当使用者在保护发生时需要额外处理,比如需要记录错误信息、延迟一段时间后才重启、或是需要额外检查其他讯号时,使用者可以选择手动恢复功能,透过清除 Fault 中断旗标 FFLAG 来使 PWM 恢复输出。手动恢复的 PWM 依据是否开启 Safe mode,PWM 恢复的时间点有所不同。
 
未开启 Safe mode 的情形下,在中断旗标清除后,会依旗标的清除位置与 Fault input 讯号的恢复位置有不同的 PWM 恢复方式。如果 Fault input 恢复的位置在手动清除 FFLAG 之前,则 PWM 会于设定好的 Half/Full cycle 恢复点恢复。如果是在手动清除 FFLAG 后 Fault input 才恢复,则 PWM 会在 Fault input 恢复后立即开启。
可以透过检查 Fault input 指示用的 FFPIN 位元来确定清除中断旗标当下 Fault input 的状态。

 
开启 Safe mode 的情况下,恢复 PWM 输出的时间点是清除中断旗标及 Fault input 恢复,两个条件都达成后的下一个固定恢复位置 ( 视设选择 Half cycle 与 Full cycle 恢复 )。


 
Fault 中断使用
 
Fault 中断只与 Fault input 输入讯号有关,与 PWM 周期无关,因为中断与 FFLAG 讯号连动,因此会受 Filter 延迟影响。不论是否开启 Safe mode 功能,中断会在 FFLAG 的上升缘被触发一次,若要再次被触发需要清除 FFLAG。
 
不论 eflexPMW 是否被启用,Fault 保护电路一直都是工作状态,有可能在配置 eflexPWM 设定以前 FFLAG 就已经被触发。因此在设置完 eflexPWM 后,不应直接开启 CPU 中断,应该先清除 FFLAG 后再开启。
 
在使用 Fault 中断时要考虑中断被输入讯号触发的频率对于的程式资源的占用,避免在保护期间对其他执行中的程式造成影响。
 
Fault 功能总结
 
这边针对上面的描述归纳几个重点及需要关注的地方
  • PWM 的输出只要在 Fault input 为 active 的状态下都会被关闭。
  • PWM 的恢复有两种情况,一种是在设定好的 Half/Full Cycle 位置恢复,另一种是在 Fault input 输入的故障讯号解除后立即恢复。
  • 有两个情况会导致 PWM 在故障讯号解除后立即恢复。一个是使用手动清除模式,未开启 Safe mode,并且 Fault active 状态维持的时候就把中断旗标清除的情况;另一个是使用手动模式并启用 Filter,Fault input 讯号没有持续至 Filter 触发的长度时会发生。这两个情况下,PWM 会在 Fault input 条件消失后立即开启。
  • 除了刚才提到的情况外,PWM 都会在设置好的 Half/Full cycle 位置恢复。
  • Fault input 可以设置 Filter,即使在 Filter 延迟期间,只要有 Fault input 讯号进来 PWM 输出还是会关闭,但是否完整关闭到下一个恢复时间取决于 Fault 讯号是否超过 Filter 延迟时间。
  • 若 Fault 讯号的长度比 Filter 延迟短,则中断不会被触发。
  • 使用 Fault 中断的情况下,一定要在配置完 eflexPWM 后清除中断旗标 FFLAG,然后才能开启中断功能。
  • Fault 中断只和 Fault input 有关,可以被 Filter 功能影响,会在 Filter 延迟后才被触发。
参考资料
 
MC56F83xxx Reference Manual
eFlexPWM Fault Handling on MC56F84xxx and MC56F82xxx DSCs

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能