This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280025: CMPSSX寄存器对应CMPSSXRegs不一致的问题

Part Number: TMS320F280025


最近在做硬件过流保护,以CMPSS3(CTRIPH)->EpwmXbar->DC(DCAEVT1)->TZ的触发路径。但是通过Cmpss3regs去进行配置时无法触发相关中断。

于是我通过 Cmpss3Regs.COMPCTL.bit.COMPDACE = 1 去给比较器使能,结果TI仿真器观测到CMPSS4_CTRIPH被触发。

Cmpss3Regs.COMPDACCTL.bit.DACSOURCE = 0; //DAC更新数据来自于其影子寄存器
Cmpss3Regs.COMPDACCTL.bit.SELREF = 1; //VDDA作为DAC的参考电压:2.5?
Cmpss3Regs.COMPDACCTL.bit.SWLOADSEL = 0; //使用系统时钟同步DAC
Cmpss3Regs.COMPCTL.bit.COMPHSOURCE = 0; //高侧比较器方向输入端为DAC
Cmpss3Regs.COMPCTL.bit.COMPDACE = 1; //比较器DAC使能
//CMP3HP输入信号
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 1; //选择C2引脚作为高侧比较器3的同向输入端
//比较器之后的配置=======================================================================================
Cmpss3Regs.COMPCTL.bit.COMPHINV = 0; //比较器输出不反相
Cmpss3Regs.COMPCTL.bit.ASYNCHEN = 0; // 异步比较器输出不馈入OR门与锁存数字滤波器输出

Cmpss3Regs.DACHVALS.bit.DACVAL = 434; //配置DAC的影子寄存器值

// 输出端
Cmpss3Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
Cmpss3Regs.COMPCTL.bit.CTRIPHSEL = 0; //比较器输出非同步非滤波信号

EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX4 = 1; // MUX4=0 CMPSS3.CTRIPH
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX4 = 1; //复用开关使能

于是我将所有Cmpss3regs全部改为Cmpss2regs,并对比较器使能,结果TI仿真器观测到CMPSS3_CTRIPH被触发。同时相关的跳闸响应也被触发。

Cmpss2Regs.COMPDACCTL.bit.DACSOURCE = 0; //DAC更新数据来自于其影子寄存器
Cmpss2Regs.COMPDACCTL.bit.SELREF = 1; //VDDA作为DAC的参考电压:2.5?
Cmpss2Regs.COMPDACCTL.bit.SWLOADSEL = 0; //使用系统时钟同步DAC
Cmpss2Regs.COMPCTL.bit.COMPHSOURCE = 0; //高侧比较器方向输入端为DAC
Cmpss2Regs.COMPCTL.bit.COMPDACE = 1; //比较器DAC使能
//CMP3HP输入信号
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 1; //选择C2引脚作为高侧比较器3的同向输入端
//比较器之后的配置=======================================================================================
Cmpss2Regs.COMPCTL.bit.COMPHINV = 0; //比较器输出不反相
Cmpss2Regs.COMPCTL.bit.ASYNCHEN = 0; // 异步比较器输出不馈入OR门与锁存数字滤波器输出

Cmpss2Regs.DACHVALS.bit.DACVAL = 434; //配置DAC的影子寄存器值

// 输出端
Cmpss2Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
Cmpss2Regs.COMPCTL.bit.CTRIPHSEL = 0; //比较器输出非同步非滤波信号

EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX4 = 1; // MUX4=0 CMPSS3.CTRIPH
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX4 = 1; //复用开关使能

想请教各位工程师,这种现象是否正常?是否说明芯片内部电路存在问题?代码中并未在其他地方调用CMPSS 2/3的相关配置,仅在过流保护功能中有调用。