LPC845 硬件关闭 PWM(FAULT 信号) 的实现

关键字 :LPC845PWMSCT

1.概述

2.状态设计

3.FAULT 信号连接

4.软件配置

5.测试结果

6.参考资料


  1. 概述

      在 FOC 或者 BLDC 电机驱动信号中,需要六路 PWM 信号,一般由 MCU 专用的 TIMER 生成,同时这个 TIMER 具有一个紧急关闭 PWM 信号输出的错误输入引脚,即 FAULT 信号,在 STM32 中称为 BREAK 信号,当产生过流时,外部电路将此信号拉低,MCU 立即关闭 PWM,以免持续过流烧毁 MOS 或者电机,一般响应在 3us 以下,相比于软件过流保护快些,软件在一个控制周期(20K PWM 时是 50us)才检测一次过流,50us 有可能 MOS 已烧毁,LPC845 没有专用的 TIMER 直接生成六路 PWM 和 FAULT 信号,下文介绍如何使用 LPC845 SCT 来实现,达到同样的效果。

  1. 状态设计

      在正常产生 PWM 的情况下,用于控制 PWM 占空比的事件 1 和事件 2 只能在状态 0 下发生,当 FAULT 信号出现下降沿时产生事件 6,事件 6 将状态切换到状态 7, 在状态 7 时,事件 1 和事件 2 是无法产生的,此时各 PWM 输出引脚输出默认的低电平,达到关闭 PWM 的目的,事件 6 能作用于所有的状态下;当 FAULT 信号出现上升沿时,产生事件 5 ,事件 5 将状态由状态 7 切换到状态 0,从而达到故障恢复时自动恢复 PWM 的功能, 如下图简要说明:

  1. FAULT 信号连接

       LPC 845 内部有桥接电路,可将任意的 GPIO 口连接到 SCT 的任意输入信号(INPUT),如下图所示,54 GPIO 口通过 SWM 外设连接到 SCT 任意的 SCT_PIN,任意的 SCT_PIN 又可以通过 SCT 任意一个 SCT0_INMUX 连接到对应的 SCT_INPUT 信号上,用于触发产生对应的事件,触发电平可以是下降沿、上升沿、高电平、低电平。

  1. 软件配置

       具体配置如下代码和说明

//产生 PWM 的事件 1 和事件 2 只能在状态 0 发生
SCT0->EV[1].STATE = 0x1;
SCT0->EV[2].STATE = 0x1;

//事件 5 和事件 6 在所有状态下都可以发生
SCT0->EV[5].STATE = 0xFF;
SCT0->EV[6].STATE = 0xFF;

/***********************************************************************
* Event 5,FAULT INPUT,IO;

* OUTSEL = 0 Input;

* IOSEL = 0, IN0;

* IOCOND = 0x3, 0x3,HIGH; 0x1,Rise

* COMBMODE = 0x02 Uses the specified I/O condition only;

* STATELD = 1, loaded STATEV into STATE;

* STATEV = 0x0 state 0;

************************************************************************/
SCT0->EV[5].CTRL = (0 << 0) /* MATCHSEL select MATCH register */
| (0 << 4) /* HEVENT Select L/H counter. Do not set this bit if UNIFY = 1 */
| (0 << 5) /* OUTSEL Input/output select */
| (0 << 6) /* IOSEL Selects the input or output signal number */
| (0x3 << 10) /* IOCOND Selects the I/O condition for event n */

| (0x2 << 12) /* COMBMODE Selects how the specified match and I/O condition are used and combined. */
| (0x1 << 14) /* STATELD STATEV value is added or loaded into STATE */
| (0x0 << 15) /* STATEV This value is loaded into or added to the state */
| (0x0 << 20) /* MATCHMEM If this bit is zero, a match is only be active during the cycle */
| (0x0 << 21); /* DIRECTION BIDIR mode,0 Direction independent.1 Counting up.2 Counting down. */






/****************************************************************************
* Event 6,FAULT INPUT,IO;

* OUTSEL = 0 Input;

* IOSEL = 0, IN0;

* IOCOND = 0x0, 0x0,LOW;0x2,Fall

* COMBMODE = 0x02 Uses the specified I/O condition only;

* STATELD = 1, loaded STATEV into STATE;

* STATEV = 0x7 state 7;

******************************************************************************/

SCT0->EV[6].CTRL = (0 << 0) /* MATCHSEL select MATCH register */
| (0 << 4) /* HEVENT Select L/H counter. Do not set this bit if UNIFY = 1 */
| (0 << 5) /* OUTSEL Input/output select */
| (0 << 6) /* IOSEL Selects the input or output signal number */
| (0x0 << 10) /* IOCOND Selects the I/O condition for event n */
| (0x2 << 12) /* COMBMODE Selects how the specified match and I/O condition are used and combined. */
| (0x1 << 14) /* STATELD STATEV value is added or loaded into STATE */
| (0x7 << 15) /* STATEV This value is loaded into or added to the state */
| (0x1 << 20) /* MATCHMEM If this bit is zero, a match is only be active during the cycle */
| (0x0 << 21); /* DIRECTION BIDIR mode,0 Direction independent.1 Counting up.2 Counting down. */



  1. 测试结果

       在正常产生 PWM 时,将 FAULT 信号对应的引脚直接拉低至 GNDPWM 信号立即关闭,如下图所示:

蓝色为 PWM 信号,紫色为 FAULT 信号。


6. 参考资料

  参考手册:UM11029.pdf
   
  https://www.nxp.com/search?keyword=UM11029

      登录后下载

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

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论