duanchengjie325 发表于 2025-5-22 14:13

基于Geehy G32 R501 CMPSS电机控制保护使用方法

本帖最后由 duanchengjie325 于 2025-5-22 14:13 编辑

#技术资源# #申请原创#摘要:G32 R501是一款数模集成的DSP控制器,除了强大的数字处理能力外,还包含一部分的模拟电路,主要有比较器COMP、DAC、ADC。模拟系统– 3 个(ADC) 3.45 MSPS 12位模数转换器(ADC)• 多达 31 个外部通道• 每个 ADC 具有四个集成后处理块(PPB)– 7 个(COMP)带 12 位参考数模转换器(DAC)的窗口比较器(COMP)• 数字干扰滤波器– 2 个 (DAC)12 位缓冲 DAC 输出COMP 模块内部的比较器一般是结合DAC来使用,每个比较器模块包含两个比较器,高侧和低侧。每个子系统的由 2 个模拟比较器,1 个递减型斜坡发生器,2 个数字滤波器和 2 个 12位 DAC 构成。 比较器(COMP)模块集成了模拟比较器和相关电路,适用于电压跳变监控,开关模式电源,峰值电流模式控制和功率因数校正等应用场景。一、测试案例说明本测试案例采用双电机+交错PFC进行基础配置,通过ADC采样与内部设定值作比较,实现PWM信号的TZ触发,该方式优势可以省掉外部保护信号电路,通过内部比较器和数字滤波器灵活设定保护范围,且TZ高低电平可设。详细管脚配置情况说明:
PFC 40KGPIO29EPWM7B
GPIO28EPWM7A
PFC TZGPIO30TZ0X-BAR硬件保护
电机1 10KGPIO08EPWM5AU
GPIO14EPWM8AV
GPIO10EPWM6AW
GPIO09EPWM5B
GPIO15EPWM8B
GPIO11EPWM6B
电机1 TZGPIO34TZ1X-BAR硬件保护
电机2 5KGPIO 2EPWM2A
GPIO 0EPWM1A
GPIO 4EPWM3A
GPIO 3EPWM2B
GPIO 1EPWM1B
GPIO 5EPWM3B
电机2 TZGPIO23TZ1X-BAR硬件保护
ADC采样A3VDC母线电压
A2IbusPFC电流
C0IU1电机1U相
C4IV1电机1V相
B3IU2电机2U相
B2IV2电机2V相
LEDGPIO33LD1LED1
GPIO12LD2LED2
充电继电器GPIO27RUSH充电继电器
KeyGPIO13Key按钮开关
SCIGPIO16UART_TX串口发送
GPIO17UART_RX串口接收

比较器的内部框图如下所示: 第一次使用COMP比较器功能理解起来还是挺抽象,难点是与模数转换器(ADC)、模拟子系统(AS)、PWM X-BAR如何联合使用,下面基于电机控制应用,通过ADC电流/电压采样,实现TZ信号输出的配置。二、详细测试实现整体信号实现路径:ADC(模数转换器)-- AS(模拟子系统)-- COMP(比较器) -- PWM X-BAR -- PWM(DC-TZ) 封波1. ADC(模数转换器)ADC配置不需要特殊处理,正常电机初始化ADC采样配置;例程:见附件void initADC(void)
2. AS(模拟子系统)ADC(模数转换器)-- AS(模拟子系统);把ADC采样的值,引入到 AS(模拟子系统),需要参看AS(模拟子系统)模拟引脚与内部连接,见用户手册“表格 94 模拟引脚与内部连接 ”,如图所示
如电机采样IU/IV的AD端口分别为B2/B3,通过配置ASRegs寄存器,可以把ADC引入到COMPx_HP和COMPx_LP// IU2--->B3--->CMP1LPASRegs.CMPLPMXSEL.bit.CMP3LPMXSEL = 3;    //选择B3引脚作为低侧比较器1的同向输入端// >IV2--->B2--->CMP3HPASRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 0;    //选择B2引脚作为高侧比较器1的同向输入端
3. COMP(比较器)AS(模拟子系统)-- COMP(比较器) ;ADC采样引入到COMP模块时需要注意,由于芯片内部硬连接,应用做保护时,需要避免如下情况的出现:如电机采样IU/IV的AD端口分别为B2/B3,对应的比较器只能选择COMP3,这是芯片硬件侧定义好的,无法通过软件改变。 电机电流采样(中电压1.65V),在一个周期内,正负半轴都需要保护,那么通过COMP3做保护,高边对正半轴做保护,低边对负半轴做保护。但IU/IV的AD端口分别为B2/B3,都对应COMP3比较器,只能做一些取舍,一个COMP3无法使用两次,我们可以通过只保护正半轴做保护,如下所示,一个COMP3只对B2/B3正半周期做保护。所以在硬件设计的时候就要考虑ADC管脚分配的问题。例程如下://比较器3//高边--->IV2--->B2    Comp3Regs.COMPCTL.bit.COMPDACE = 1;      //比较器DAC使能    Comp3Regs.COMPCTL.bit.COMPHSOURCE = 0;      //高侧比较器方向输入端为DAC    Comp3Regs.COMPCTL.bit.COMPHINV = 0;      //比较器输出不反向    Comp3Regs.COMPCTL.bit.ASYNCHEN = 0;      // 0 异步比较器输出不会进入带锁存的数字滤波器输出的或门    Comp3Regs.COMPCTL.bit.HOUTHSEL = 2;      //高比较器CTRIPOUTH源选择。 0 异步比较器输出驱动CTRIPOUTH。    Comp3Regs.COMPCTL.bit.HPWMHSEL = 2;      //高比较器CTRIPL源选择。 0 异步比较器输出驱动CTRIPL    Comp3Regs.COMPDACCTL.bit.DACSOURCE = 0;   //DAC更新数据来自于其影子寄存器    Comp3Regs.COMPDACCTL.bit.SELREF = 0;       //VDDA作为DAC的参考电压    Comp3Regs.COMPDACCTL.bit.SWLOADSEL = 0;   //使用系统时钟同步DAC    Comp3Regs.DACHVALS.bit.DACVAL = 4050;      //配置DAC的影子寄存器值    Comp3Regs.DACHVALA.bit.DACVAL = 4050;      //主动写入寄存器值    //数字滤波    Comp3Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 175;    Comp3Regs.CTRIPHFILCTL.bit.SAMPWIN = 31;   //高通滤波器样本窗口大小。 要监视的样本数为SAMPWIN + 1。    Comp3Regs.CTRIPHFILCTL.bit.THRESH = 31;    //高通滤波多数选择阈值。 相反状态的至少THRESH个采样必须出现在 采样窗口内,以便输出改变状态。    Comp3Regs.CTRIPHFILCTL.bit.FILINIT = 1;    //高通滤波器初始化: 1将所有样本初始化为滤波器输入值    //EPWM-XBAR配置 IV2--->B2--->CMPSS3.CTRIPH--->TRIP7    PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX4 = 0;// MUX0=4CMPSS3.CTRIPOUTH    PwmXbarRegs.TRIP7MUXENABLE.bit.MUX4 = 1;//复用开关使能    //    PwmXbarRegs.TRIPOUTINV.bit.TRIP4 = 1;   //输出电平取反    // >IV2--->B2--->CMP3HP    ASRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 0;    //选择B2引脚作为高侧比较器1的同向输入端
//低边--->IU2--->B3    Comp3Regs.COMPCTL.bit.COMPLSOURCE = 0;   //低侧比较器方向输入端为DAC    Comp3Regs.COMPCTL.bit.COMPLINV = 0;      //低侧比较器输出不反向    Comp3Regs.COMPCTL.bit.ASYNCLEN = 0;      // 0 异步比较器输出不会进入带锁存的数字滤波器输出的或门    Comp3Regs.COMPCTL.bit.OUTLSEL = 2;    //低比较器CTRIPOUTH源选择。 0 异步比较器输出驱动CTRIPOUTH。    Comp3Regs.COMPCTL.bit.PWMLSEL = 2;       //低比较器CTRIPL源选择。 0 异步比较器输出驱动CTRIPL    Comp3Regs.DACLVALS.bit.DACVAL = 4050;      //配置DAC的影子寄存器值    Comp3Regs.DACLVALA.bit.DACVAL = 4050;      //主动写入寄存器值    //数字滤波    Comp3Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 175;    Comp3Regs.CTRIPLFILCTL.bit.SAMPWIN = 31;   //高通滤波器样本窗口大小。 要监视的样本数为SAMPWIN + 1。    Comp3Regs.CTRIPLFILCTL.bit.THRESH = 31;    //高通滤波多数选择阈值。 相反状态的至少THRESH个采样必须出现在 采样窗口内,以便输出改变状态。    Comp3Regs.CTRIPLFILCTL.bit.FILINIT = 1;    //高通滤波器初始化: 1将所有样本初始化为滤波器输入值    Comp3Regs.COMPHYSCTL.bit.COMPHYS = 0;      //比较器滞后。 设置比较器输入的迟滞量。 4 设置为典型迟滞的4倍    //    //根据GPIO配置   根据实际情况选用    //    OutputXbarRegs.OUTPUT4MUX0TO15CFG.bit.MUX5 = 0; // MUX0=0CMPSS2.CTRIPOUTH    //    OutputXbarRegs.OUTPUT4MUXENABLE.bit.MUX5 = 1;   //复用开关使能    //    OutputXbarRegs.OUTPUTINV.bit.OUTPUT4 = 1;   //输出电平取反    //EPWM-XBAR配置    // IU2--->B3--->CMPSS3.CTRIPL--->TRIP7--->EPWM2A/B    PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX5 = 0;         // MUX0=5CMPSS3.CTRIPOUTL    PwmXbarRegs.TRIP7MUXENABLE.bit.MUX5 = 1;         //复用开关使能    //ADC引脚配置    // IU2--->B3--->CMP1LP    ASRegs.CMPLPMXSEL.bit.CMP3LPMXSEL = 3;    //选择B3引脚作为低侧比较器1的同向输入端
4. PWM X-BARCOMP(比较器) -- PWM X-BAR;通过设置PwmXbarRegs寄存器,把COMP3.CTRIPH和COMP3.CTRIPL引入PWM X-BAR,参照用户手册“表格 75 PWM X-BAR 复用配置”,并使能复用开关功能,
配置如下://EPWM-XBAR配置 // IV2--->B2--->CMPSS3.CTRIPH--->TRIP7--->PWM2/1/3PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX4 = 0;    // MUX0=4CMPSS3.CTRIPOUTHPwmXbarRegs.TRIP7MUXENABLE.bit.MUX4 = 1;   //复用开关使能// IU2--->B3--->CMPSS3.CTRIPL--->TRIP7--->PWM2/1/3PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX5 = 0;    // MUX0=5CMPSS3.CTRIPOUTLPwmXbarRegs.TRIP7MUXENABLE.bit.MUX5 = 1;   //复用开关使能
5. PWM(DC-TZ)由于上一步信号TRIP引入到PWM的DC模块,需要对DC和TZ模块进一步配置,PWM(DC)配置:还是以上面配置为例,电机采样IU/IV的AD端口分别为B2/B3,发波端口为PWM2/1/3,当采样过流,PWM2/1/3进行封波,通过DCTRIPSEL.DCAHCOMPSEL选择跳闸输入7引入信号;通过TZDCSEL.DCAEVT1配置DCAH/DCAL高低电平触发模式,在通过DCACTL.EVT1SRCSEL把信号引入DCAEVT1,最后EVT1FRCSYNCSEL配置强制同步信号(默认0,输入1触发)输出至TZ例程:// TRIP7-->DCBHPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL=DC_TRIPIN7; //Digital Compare A High Input Select TRIPIN4Pwm2Regs.TZDCSEL.bit.DCAEVT1=TZ_DCAH_HI;       //010: DCAH = high, DCAL = don't carePwm2Regs.DCACTL.bit.EVT1SRCSEL=DC_EVT1;      //0: Source Is DCAEVT1 Signal; 1: Source Is DCEVTFILT SignalPwm2Regs.DCACTL.bit.EVT1FRCSYNCSEL=DC_EVT_SYNC;//0: Source is synchronized with EPWMCLK;    1: Source is passed through asynchronously
PWM(TZ)配置:在使用时有一点需要注意,这是定死的不可以软件调整。DCAEVT1.force和DCBEVT1.force对应OSHTDCAEVT2.force和DCBEVT2.force对应CBC 例程:Pwm2Regs.TZCTL.bit.DCAEVT1 = TZ_FORCE_LO;// Force EPWMxA to a low statePwm2Regs.TZSEL.bit.DCAEVT1 = TZ_ENABLE;   //1: Enable DCAEVT1 as one-shot-trip source for this ePWM module.Pwm2Regs.TZEINT.bit.DCAEVT1 = TZ_ENABLE;//Digital Compare A Event 1 Int Enable
三、总结
测试例程为双电机+PFC控制的配置,通过芯片内部比较器COMP进行测试,经实际测试可有效保护IGBT/MOS和电机,部分代码仅供参考,见附件。


页: [1]
查看完整版本: 基于Geehy G32 R501 CMPSS电机控制保护使用方法