DSP 之错误联防模块(TZ模块 之 28335)

错误联防模块

每个 ePWM 模块都与 GPIO 多路复用引脚中的 6 个 TZn(TZ1-TZ6)信号脚连接。 这些信号脚用来响应外部错误或外部触发条件,当错误发生时,PWM 模块可以通 过编程来响应这些问题。错误联防模块的位置如下图所示。

出TMS架构设计 档_寄存器


错误联防模块的主要作用如下:

①错误联防引脚 TZ1-TZ6 可以灵活的映射到对应的 PWM 模块。
②针对错误信息,ePWMxA 和 ePWMxB 可以被强制或如下几种状态: --高电平。 --低电平。 --高阻抗。 --无动作。
③在短路或者过流条件时,支持一次错误联防触发。
④针对限流操作时,支持周期错误联防触发。
⑤每个错误联防输入引脚都可以配置为一次或者周期错误联防触发。
⑥任何一个错误联防引脚都可以产生中断。
⑦支持软件强制错误联防。
⑧如果不需要此模块,可以选择禁止。

(1)错误联防模块的操作

TZ1-TZ6 的输入引脚为低有效。当这些引脚中的任意一个有效时,表明一个 错误事件发生,每个 PWM 模块都可以单独配置为禁止或者使能此错误联防触发引 脚。ePWM 模块选择哪一个错误引脚是通过 TZSEL 进行设置的,错误信号可以和 系统时钟同步,也可以不同步,同样具有数字滤波功能,跟 GPIO 引脚一样。一 个系统时钟的低脉冲输入即可以有效触发错误控制逻辑。异步触发确保在系统时 钟发生错误的情况下,错误引脚仍能触发错误控制逻辑。其余的配置可以参照 GPIO 的引脚配置。每个 TZn 输入引脚可以单独配置一次触发或者周期触发。

①周期触发:当周期错误联防事件发生时,TZCTL 寄存器中的动作立刻输出 到 ePWMxA 和 ePWMxB 引脚上,另外,周期错误联防事件标志位(TZFLG[CBC])被
置位,同时当 TZEINT 寄存器和 PIE 模块的中断使能时,ePWMx_TZINT 中断就会 产生。

②单次触发:当单次错误联防事件发生时,同样 TZCTL 寄存器中的动作立刻 输出到 ePWMxA 和 ePWMxB 引脚上,另外单次错误联防事件标志位(TZFLG[OST]) 被置位,同时当 TZEINT 寄存器和 PIE 模块的中断使能时,ePWMx_TZINT 中断就 会产生的。 两种模式触发的区别在于周期错误联防事件标志可以自动清零,但是单次错 误联防事件标志需要软件清零。

(2)错误联防模块寄存器

1,错误联防选择寄存器 TZSEL

错误联防选择寄存器 TZSEL 各位功能描述如下:

出TMS架构设计 档_引脚_02

出TMS架构设计 档_出TMS架构设计 档_03


出TMS架构设计 档_仿真器_04


2,错误联防控制寄存器 TZCTL

错误联防控制寄存器 TZCTL 各位功能描述如下:

出TMS架构设计 档_出TMS架构设计 档_05


3,错误联防中断使能寄存器 TZEINT

错误联防中断使能寄存器 TZEINT 各位功能描述如下:

出TMS架构设计 档_引脚_06


4,错误联防中断标志寄存器 TZFLG

错误联防中断标志寄存器 TZFLG 各位功能描述如下:

出TMS架构设计 档_寄存器_07


5,错误联防中断清除寄存器 TZCLR

错误联防中断清除寄存器 TZCLR 各位功能描述如下:

出TMS架构设计 档_出TMS架构设计 档_08


6,错误联防中断强制寄存器 TZFRC

错误联防中断强制寄存器 TZFRC 各位功能描述如下:

出TMS架构设计 档_引脚_09

补充 TMS28035芯片

GPIO 15 GPIO 16 GPIO 17 引脚触发TZ中断配置。

GPIO15复用功能 TZ1

GPIO16复用功能 TZ2

GPIO17复用功能 TZ3

插图:

出TMS架构设计 档_引脚_10

出TMS架构设计 档_仿真器_11


引脚配置:

查看TMS2035芯片手册 的 GPAMUX2寄存器位的功能

下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
	//GPIO15	TZ1 FO保护
	GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;   		// Enable pullup on GPIO15
	GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3;		// asynch input
	GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 1;   		// GPIO15 = TZ1

	//GPIO16      TZ2	OC_L保护
	GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0;   		// Enable pullup on GPIO17
	GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3;		// asynch input
	GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 3;   		// GPIO17 = TZ2

	//GPIO17      	TZ3 OC保护
	GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0;   		// Enable pullup on GPIO17
	GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3;		// asynch input
	GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 3;   		// GPIO17 = TZ3

TZ模块初始化配置,配置TZ2 、 TZ3
查看TMS28035 芯片手册 TZSEL 、TZCTL、 TZEINT寄存器功能。
下面展示一些 内联代码片

// A code block
var foo = 'bar';
// An highlighted block
/*******************************************************************
 *函数名称:InitTz()
 *功能描述:TZ模块设置(OC,FO,仿真器挂起保护)
 *输入参数:
 *输出参数:
 *调用函数:
 *详细描述:
 *******************************************************************/
void InitTz(void)
{
  	EALLOW;

	EPwm1Regs.TZSEL.all = 0x0600;	//TZ1:FO TZ3:OC	TZ6:仿真器挂起     /*bit10-TZ3,bit9-TZ2,bit8-TZ1单次触发联防*/
    EPwm1Regs.TZCTL.all = 0x0005;	//Force high				      /*强制EPWm1A高状态 ,强制EPWm1B高状态*/
	EPwm1Regs.TZEINT.all = 4;										  /*使能EPWm1单次触发中断*/

	EPwm2Regs.TZSEL.all = 0x0600;	//TZ1:FO TZ3:OC	TZ6:仿真器挂起
	EPwm2Regs.TZCTL.all = 0x0005;	//Force high
	EPwm2Regs.TZEINT.all = 0;		//disable INTERRUPT

	EPwm3Regs.TZSEL.all = 0x0600;	//TZ1:FO TZ3:OC	TZ6:仿真器挂起
	EPwm3Regs.TZCTL.all = 0x0005;	//Force high
	EPwm3Regs.TZEINT.all = 0;		//disable INTERRUPT

	EDIS;

	CutHardTrip = 1;
}