打印
[G32R]

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

[复制链接]
36|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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 40K
GPIO29
EPWM7B
GPIO28
EPWM7A
PFC TZ
GPIO30
TZ0
X-BAR硬件保护
电机1 10K
GPIO08
EPWM5A
U
GPIO14
EPWM8A
V
GPIO10
EPWM6A
W
GPIO09
EPWM5B
GPIO15
EPWM8B
GPIO11
EPWM6B
电机1 TZ
GPIO34
TZ1
X-BAR硬件保护
电机2 5K
GPIO 2
EPWM2A
GPIO 0
EPWM1A
GPIO 4
EPWM3A
GPIO 3
EPWM2B
GPIO 1
EPWM1B
GPIO 5
EPWM3B
电机2 TZ
GPIO23
TZ1
X-BAR硬件保护
ADC采样
A3
VDC
母线电压
A2
Ibus
PFC电流
C0
IU1
电机1U相
C4
IV1
电机1V相
B3
IU2
电机2U相
B2
IV2
电机2V相
LED
GPIO33
LD1
LED1
GPIO12
LD2
LED2
充电继电器
GPIO27
RUSH
充电继电器
Key
GPIO13
Key
按钮开关
SCI
GPIO16
UART_TX
串口发送
GPIO17
UART_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--->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和电机,部分代码仅供参考,见附件。



adc_ex1_soc_pwm.zip

349.2 KB

测试例程参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

粉丝