本帖最后由 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高低电平可设。 详细管脚配置情况说明:
比较器的内部框图如下所示: 第一次使用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--->CMP1LP ASRegs.CMPLPMXSEL.bit.CMP3LPMXSEL = 3; //选择B3引脚作为低侧比较器1的同向输入端 // >IV2--->B2--->CMP3HP ASRegs.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=4 CMPSS3.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=0 CMPSS2.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=5 CMPSS3.CTRIPOUTL PwmXbarRegs.TRIP7MUXENABLE.bit.MUX5 = 1; //复用开关使能 //ADC引脚配置 // IU2--->B3--->CMP1LP ASRegs.CMPLPMXSEL.bit.CMP3LPMXSEL = 3; //选择B3引脚作为低侧比较器1的同向输入端
4. PWM X-BAR COMP(比较器) -- PWM X-BAR;通过设置PwmXbarRegs寄存器,把COMP3.CTRIPH和COMP3.CTRIPL引入PWM X-BAR,参照用户手册“表格 75 PWM X-BAR 复用配置”,并使能复用开关功能,
配置如下: //EPWM-XBAR配置 // IV2--->B2--->CMPSS3.CTRIPH--->TRIP7--->PWM2/1/3 PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX4 = 0; // MUX0=4 CMPSS3.CTRIPOUTH PwmXbarRegs.TRIP7MUXENABLE.bit.MUX4 = 1; //复用开关使能 // IU2--->B3--->CMPSS3.CTRIPL--->TRIP7--->PWM2/1/3 PwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX5 = 0; // MUX0=5 CMPSS3.CTRIPOUTL PwmXbarRegs.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-->DCBH Pwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL=DC_TRIPIN7; //Digital Compare A High Input Select TRIPIN4 Pwm2Regs.TZDCSEL.bit.DCAEVT1=TZ_DCAH_HI; //010: DCAH = high, DCAL = don't care Pwm2Regs.DCACTL.bit.EVT1SRCSEL=DC_EVT1; //0: Source Is DCAEVT1 Signal; 1: Source Is DCEVTFILT Signal Pwm2Regs.DCACTL.bit.EVT1FRCSYNCSEL=DC_EVT_SYNC;//0: Source is synchronized with EPWMCLK; 1: Source is passed through asynchronously
PWM(TZ)配置: 在使用时有一点需要注意,这是定死的不可以软件调整。 DCAEVT1.force和DCBEVT1.force对应OSHT DCAEVT2.force和DCBEVT2.force对应CBC 例程: Pwm2Regs.TZCTL.bit.DCAEVT1 = TZ_FORCE_LO; // Force EPWMxA to a low state Pwm2Regs.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和电机,部分代码仅供参考,见附件。
|