芯教程|平头哥助力昊芯HX2000系列芯片电机过流跳闸保护专题(三)比较器超阈值检测

描述

自昊芯推出专题讲解芯片电机过流跳闸保护以来,第一期主要讲解EPWM_TZ错误联防,第二期主要讲解EPWM_DC数字比较,本期主要讲解比较器超阈值检测。

 

HX2000系列COMP模块工作原理如下,通过DACCTL[DACSOURCE]拉低,选择DAC数字保护阈值比较。通过COMPCTL[COMPSOURCE]置低,选择模拟量阈值比较输出,用于电机电流过流检测与保护:输入模拟信号Vo,不断与经10位DAC转换所得,模拟量比较阈值DACVAL/1024*3.3相比较,输出高低电平信号。通过COMPCTL[SYNCSEL]选择,采用系统时钟异步采样输出,或经(COMPCTL[QUALSEL]+1)*SYSCLK同步滤波采样输出。根据EPWM_DC所配故障触发类型与条件,通过COMPCTL[CMPINV]选择,是否对输出信号取反,产生EPWM_TZ错误联防的DC数字比较、周期CBC限流,或单次OST过流跳闸信号。通过EPWM_DC所配触发引脚,输入错误联防模块,触发EPWM动作,关断过流输出MOSFET桥臂,实现限流与跳闸保护。

 

芯片

 

 

 

由此设计COMP_DC输出实例:模拟信号ADCINA2输入比较器使用阈值比较GPIO42输出:输入(GPIO17),触发CBC周期与DC数字比较错误联防,按优先级触发EPWMxA置高、EPWMxB置低;输入(GPIO16),触发OST单次错误联防,触发EPWMxA置高、EPWMxB置低,硬件连接如图左与图右所示:

 

芯片芯片

 

基于CDK V2.12.1开发,代码包括:EPWM、COMP GPIO与ADC模拟量采集AIO引脚配置、EPWM SOCA、DC错误联防三重保护功能配置、ADC单触发源顺序采集配置、ADC模拟量采集转换数字量结果存储的中断服务程序,COMP模拟量阈值比较配置,TZ触发EPWM动作的中断服务程序,主程序调用执行。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

int main(void){       /*初始化系统控制:PLL,WatchDog,使能外设时钟*/    InitSysCtrl();    /*初始化GPIO,复用为EPwm功能*/    InitEPwm1Gpio();    InitEPwm2Gpio();    InitEPwm3Gpio();    /*初始化TZ错误联防Gpio引脚配置*/    InitTzGpio();    /*初始化ADC,使用ADC单触发源顺序采样*/    InitAdc();    /*初始化GPIO,复用为comp功能*/    InitComp1Gpio();    /*初始化LED配置,用于指示DC错误联防触发*/    InitLED();    /*关中断*/    InitPieCtrl();    /*清中断*/    IER=0x0000;    IFR=0x0000;    /*初始化PIE中断向量表*/    InitPieVectTable();    EALLOW;    /*将epwm1_tz_isr入口地址赋给EPWM1_TZINT,执行OST单次触发*/    PieVectTable.EPWM1_TZINT = &epwm1_tz_isr;    /*将epwm2_tz_isr入口地址赋给EPWM2_TZINT,执行CBC周期触发*/    PieVectTable.EPWM2_TZINT = &epwm2_tz_isr;    /*将epwm3_tz_isr入口地址赋给EPWM3_TZINT,执行DC数字比较超越阈值触发*/    PieVectTable.EPWM3_TZINT = &epwm3_tz_isr;    /*将adc_isr入口地址赋给ADCINT3*/    PieVectTable.ADCINT3 = &adc_isr;    EDIS;    EALLOW;    /*禁用TBCLK同步,允许EPWM初始化配置*/    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;    EDIS;    /*初始化EPWM1,错误联防配置为单次OST触发*/    InitEpwm1_Example();    /*初始化EPWM2,错误联防配置为周期CBC触发*/    InitEpwm2_Example();    /*初始化EPWM3,错误联防配置为DC数字比较超越阈值触发*/    InitEpwm3_Example();    EALLOW;    /*使能TBCLK同步,EPWM配置功能起作用*/    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;    EDIS;    /*初始化ADC*/    ADC_Init();    /*初始化comp1*/    InitComp1();    /*使能打开CPU IER对应中断*/    IER|=M_INT2|M_INT10;    /*使能打开对应中断*/    PieCtrlRegs.PIEIER2.bit.INTx1 = 1;    PieCtrlRegs.PIEIER2.bit.INTx2 = 1;    PieCtrlRegs.PIEIER2.bit.INTx3 = 1;    PieCtrlRegs.PIEIER10.bit.INTx3 = 1;    /*使能全局中断*/    EINT;    while (1)    {           if(EPwm_CBC_flag>EPwm_DC_flag)        {            GpioDataRegs.GPBSET.bit.GPIO44=1;        }        else        {            GpioDataRegs.GPBCLEAR.bit.GPIO44=1;        }    }    return 0;}

 

CDK上开发COMP_DC输出程序,编译结果为:

 

芯片

 

编译通过后,就可以开始调试了,其中CBC周期错误联防的调试结果如下:

 

芯片

 

CBC触发前与故障消除后的EPWM波形如图左,触发后的EPWM波形如图右:

 

芯片芯片

DC数字比较错误联防的调试结果如下:

 

芯片

DC触发前与故障消除后的EPWM波形如图左,触发后的EPWM波形如图右:

 

芯片芯片

单次OST错误联防跳闸的调试结果如下:

 

芯片

 

OST触发前后的EPWM波形如下:

 

芯片芯片

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分