比较子系统围绕许多模块构建。每个子系统都包含两个比较器,两个参考12位DAC,两个数字过滤器和一个斜坡发生器。每个模块中的比较器表示“ H”或“ L”,其中“ H”和“ L”分别代表高和低。每个比较器都会生成一个数字输出,该数字输出表明正输入上的电压是否大于负输入的电压。比较器的正输入由外部引脚驱动。
负输入可以由外部引脚或可编程参考12位DAC驱动。每个比较器输出都通过可编程的数字滤波器,该过滤器可以删除虚拟Trip信号。如果不需要滤波,也可以使用未滤波的输出。可选的斜坡发电机电路可用于控制子系统中高比较器的参考12位DAC值。

• CTRIPX(X =“ H”或“ L”)信号连接到EPWM X-bar以进行EPWM Trip响应。
• CTRIPXOUTX(X =“ H”或“ L”)信号连接到输出X-bar以进行外部信号。
在硬件过流保护功能配置中,主要目的是要保证在比较器高电平信号触发时,要做出及时快速准确的响应动作,保护设备。总体配置路线如下

• DACHVALS
作为DACHVALA模块的影子寄存器发挥作用,这里用作我们自定义的比较值(封波阈值),注意输入范围为0-4095。
• Reference DAC

每个参考12位DAC都可以配置为将参考电压驱动到其各自比较器的负输入中。参考12位DAC输出仅是内部的,无法外部观察。每个参考DAC都存在两组DACXVAL寄存器,即DACXVALA和DACXVALS。DACXVALA是仅读取的寄存器,可积极控制参考12位DAC值。 DACXVALS是可写的阴影寄存器,可以立即加载到DACXVALA或与下一个EpwMsyncper事件同步。参考12位DAC的工作范围由DACREF和VSSA界定。默认情况下,高电压参考为VDDA,但可以将其配置为VDAC。
• CMPx_HP
AD采样数值的输入端,这里输入的数字信号将和我们的比较值进行判断,从而使比较器输出置1或者置0,以进行接下来的动作。这里需要注意,每个比较器的CMPx_HP都有固定输入引脚,并不能随意配置,具体对应引脚可以参考下图。

以TI F280025的CMPSS 2为例,正相端的输入信号只能由A4/A8/A9/A10/A12/C1/C8/C10/C11/C14提供。且需要配置CMPSS2 inp MUX中的HPMXSEL。如想使用C1或A12时。配置为:
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP2HPMXSEL = 1;
• COMPHINV
输出反相器,此时不需要对输出信号进行反向处理。

最后的输出端口可以采取4种不同的输出模式和两种输出端口。
• CTRIPX(X =“ H”或“ L”)信号连接到EPWM X-bar以进行EPWM Trip响应。高比较器CTRIPH源选择。
0异步比较器输出驱动CTRIPH;1同步比较器输出驱动CTRIPH;2数字滤波器驱动CTRIPH;3锁存的数字滤波器驱动CTRIPH。
• CTRIPXOUTX(X =“ H”或“ L”)信号连接到输出X-bar以进行外部信号。
想加时钟信号形成周期性控制就用同步比较器;想加滤波就用数字滤波器,但是一般过流保护功能也不太需要滤波,因为要做到快速响应。
输出端信号会引到EPWMXBAR模块中,链接通道也需要进行查表一一对应,不能随意分配。

最终的CMPSS模块的配置代码如下。
Cmpss2Regs.COMPDACCTL.bit.DACSOURCE = 0; //DAC更新数据来自于其影子寄存器
Cmpss2Regs.COMPDACCTL.bit.SELREF = 0; //VDDA作为DAC的参考电压:2.5
Cmpss2Regs.COMPDACCTL.bit.SWLOADSEL = 0; //使用系统时钟同步DAC
Cmpss2Regs.COMPCTL.bit.COMPHSOURCE = 0; //高侧比较器方向输入端为DAC
Cmpss2Regs.COMPCTL.bit.COMPDACE = 1; //比较器DAC使能
//CMP2HP输入信号
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP2HPMXSEL = 1; //选择C1引脚作为高侧比较器2的同向输入端
//比较器之后的滤波配置====================================================================================
Cmpss2Regs.COMPCTL.bit.COMPHINV = 0; //比较器输出不反相
Cmpss2Regs.COMPCTL.bit.ASYNCHEN = 0; //比较器输出不馈入滤波器输出
//H反向输入端
Cmpss2Regs.DACHVALS.bit.DACVAL = 4095; //配置DAC的影子寄存器值,防止上电比较器输出1
Cmpss2Regs.COMPHYSCTL.bit.COMPHYS = 3;
//输出端
Cmpss2Regs.COMPCTL.bit.CTRIPHSEL = 0; //比较器输出非同步非滤波信号
EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX2 = 0; //TRIP4触发C1的CTRIPH信号
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX2 = 1; //开关使能
补充很重要的一点,我们反相端影子寄存器具体数值的设定,需要去根据硬件中电流采样电路的分压情况和电流采样设备(如霍尔采样)具体参数进行设置。
举例:在不考虑分压的情况下,采样电压值为0-3.3V,如果我们需要让他在2.0V采样时触发封波动作,那么我们的影子寄存器比较值就应该设定为2.0/3.3*4096 = 2482。即
Cmpss2Regs.DACHVALS.bit.DACVAL = 2482;
2439

被折叠的 条评论
为什么被折叠?



