基于 C2000系列 TMS320F28377D CMPSS EPWM保护配置 及 异常问题分析

项目场景:

使用 CMPSS、EPWM模块 故障联防 配置 ADC采样保护功能,超过预设的ADC采样值范围将封EPWM波

问题描述

硬件连接如下:
在这里插入图片描述

PIN44、PIN45引脚,CMPSS4 的正负输入

配置好CMPSS\XBAR\EPWM后,故障未按设定值触发,出现一直触发现象

配置代码如下

void InitCMPSS(void)
{
    EALLOW;
    Cmpss4Regs.COMPCTL.all = 0;
    Cmpss4Regs.COMPCTL.bit.COMPDACE = 1;	//comparator/DAC enable

    Cmpss4Regs.COMPDACCTL.all = 0;

    Cmpss4Regs.DACHVALS.bit.DACVAL = 2048+800;   //设置高位比较器值
	Cmpss4Regs.DACLVALS.all =  2048-800;        //设置低位比较器值

   Cmpss4Regs.COMPCTL.bit.COMPHSOURCE = NEGIN_DAC;   //比较器的负端选择内部DAC生产模拟信号
   Cmpss4Regs.COMPCTL.bit.COMPHINV = 0;
   Cmpss4Regs.COMPCTL.bit.ASYNCHEN = 0;
   Cmpss4Regs.COMPCTL.bit.COMPLSOURCE = NEGIN_DAC;
   Cmpss4Regs.COMPCTL.bit.COMPLINV = 1;    //低位比较器取反输出
   Cmpss4Regs.COMPCTL.bit.ASYNCLEN = 0;

   Cmpss4Regs.CTRIPHFILCTL.bit.SAMPWIN = 9;
   Cmpss4Regs.CTRIPHFILCTL.bit.THRESH = 7;
   Cmpss4Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 2;
   Cmpss4Regs.CTRIPLFILCTL.bit.SAMPWIN = 9;
   Cmpss4Regs.CTRIPLFILCTL.bit.THRESH = 7;
   Cmpss4Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 2;

	//Reset filter logic & start filtering
   Cmpss4Regs.CTRIPHFILCTL.bit.FILINIT = 1;
   Cmpss4Regs.CTRIPLFILCTL.bit.FILINIT = 1;


   // Configure CTRIPOUT path
    Cmpss4Regs.COMPCTL.bit.CTRIPHSEL = 2;       //XBAR输出设置
    Cmpss4Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
    Cmpss4Regs.COMPCTL.bit.CTRIPLSEL = 2;
    Cmpss4Regs.COMPCTL.bit.CTRIPOUTLSEL = 0;

    Cmpss4Regs.COMPHYSCTL.bit.COMPHYS = 2;


	// Clear the latched comparator events
    Cmpss4Regs.COMPSTSCLR.bit.LLATCHCLR = 1;
    Cmpss4Regs.COMPSTSCLR.bit.HLATCHCLR = 1;

    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX6 = 1;       //XBAR设置,关联到TRIP4 
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX6 = 1;
//-----------------------------
    EDIS;
}

	    EPwm4Regs.DCTRIPSEL.bit.DCAHCOMPSEL = EPWM_DC_TRIP_TRIPIN4;    //EPWM4 TZ模块关联 TRIP4事件
	    EPwm4Regs.TZDCSEL.bit.DCAEVT2 = EPWM_TZ_EVENT_DCXH_HIGH;      // EPWM DC模块 数字比较器AEVT2
	    EPwm4Regs.DCACTL.bit.EVT2SRCSEL = EPWM_DC_EVENT_SOURCE_ORIG_SIGNAL;
	    EPwm4Regs.DCACTL.bit.EVT2FRCSYNCSEL = EPWM_DC_EVENT_INPUT_NOT_SYNCED;
	    EPwm4Regs.TZSEL.bit.DCAEVT2 = TZ_ENABLE;
	    EPwm4Regs.TZCTL.bit.TZA = TZ_FORCE_LO;   // 事件触发,EPWMA拉低
	    EPwm4Regs.TZCTL.bit.TZB = TZ_FORCE_LO;   // 事件触发,EPWMB拉低

在这里插入图片描述


分析过程:

1.查看EPWM ,TZ模块状态,TZFLG寄存器
PWM_PTR[num]->TZFLG.bit.CBC 置1
PWM_PTR[num]->TZFLG.bit.DCAEVT2 置1
意味 TRIP4 事件发生, EPWM波被封
2.关闭XBAR使能,TZFLG寄存器 置0,故障不再触发
3.查看CMPSS状态,COMPSTS寄存器表示了CMOSS触发状态,可以发现事件触发,且触发值和设定值对不上
4.怀疑DAC生成参考电压异常,进而查看输入DAC的基准电压是否异常,经查基准电平VDDA稳定3.2V
5.怀疑配置上的问题,更换官方例程,现象一样,同样代码更换其他不j同项目板子正常,基本可以确定硬件问题
6.PIN45 脚CMOSS负极输入,功率板传过来4.2V,异常,但是我没选这个作为负极输入比较,暂时
不管他(最后发现和这个有关系)
7.基准电压外部通过外部注入,CMPSS触发正常,基本可以肯定基准电压异常
8.逐针脚插拔,{控制板插入功率板的)问题锁定PIN45脚
9. 分析 PIN45脚电压异常,超过3.2V ,打开钳位二极管,输入PIN45脚电压拉到基准电压3.2V, 但是基准电压3.2V 另外作为芯片VDDA基准电压,钳位二极管打开应该是会干扰到芯片的
(分析过程一步步缩小范围,定位问题)


解决方案:

  1. 此项目,硬件将PIN45引脚异常电压改正
  2. 延展,原理图设计、PCB布线时应将芯片基准电压供电单独分开,避免受到干扰
  3. 延展, 芯片端口输入不要大于芯片手册设计的3.3V
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值