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: CBC

Part Number: TMS320F280025
Other Parts Discussed in Thread: C2000WARE

28034移植到280025,重新配置CBC功能寄存器,测试时CBC没有工作,想请教一下,280025,CBC寄存器如何配置?

谢谢!

  • 首先推荐一个文档,F28035向F280025迁移的文档,虽然跟CBC本身没什么关系,但可能跟你的程序运行会有关系:https://www.ti.com.cn/cn/lit/an/zhca980/zhca980.pdf?ts=1657515641926&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FTMS320F28035

    然后,可以参考1:F280025的技术手册:https://www.ti.com.cn/cn/lit/ug/spruin7a/spruin7a.pdf?ts=1657515971325&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FTMS320F280025%253F_ticdt%253DMTY1NzUxNTU0OHwwMTgxNWJlNmRhZDQwMDFjNjMxMjcxNzhiYTE1MDUwNzIwMDFiMDZhMDA4NmV8R0ExLjIuNDMyNzY0MDUyLjE2NTUxMDUzNjA

    参考2:芯片的例程:C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f28002x\examples\epwm\epwm_ex1_trip_zone.c

  • 您好,非常感谢,您能帮忙看一下寄存器配置有没有问题吗?想先排除这方面的原因。代码如下:

    EALLOW;
    AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL = 4;//A1:HighPositive_CMP1 (HPMXSEL=4)
    AnalogSubsysRegs.CMPLPMXSEL.bit.CMP1LPMXSEL = 1;//A11:LowPositive_CMP1 (LPMXSEL=1)
    AnalogSubsysRegs.CMPHPMXSEL.bit.CMP3HPMXSEL = 4;//A14:HighPositive_CMP3 (HPMXSEL=4)

    //使用比较器1的高比较器
    Cmpss1Regs.COMPCTL.bit.COMPDACE = 1;//使能比较器
    Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;//CMP1H的负端使用内部DAC
    Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 0;//比较器异步输出到ePWM_XBAR
    Cmpss1Regs.COMPCTL.bit.COMPHINV = 1;//输出反向,大于DACVAL发送1;小于DACVAL发送0
    Cmpss1Regs.DACHVALS.bit.DACVAL = 512;//CBC_VOL_COMP;//512

    //使用比较器1的低比较器
    Cmpss1Regs.COMPCTL.bit.COMPLSOURCE = 0;//CMP1L的负端使用内部DAC
    Cmpss1Regs.COMPCTL.bit.CTRIPLSEL = 0;//比较器异步输出到ePWM_XBAR
    Cmpss1Regs.COMPCTL.bit.COMPLINV = 1;//输出反向,大于DACVAL发送1;小于DACVAL发送0
    Cmpss1Regs.DACLVALS.bit.DACVAL = 512;//CBC_VOL_COMP;//512

    //使用比较器3的高比较器
    Cmpss3Regs.COMPCTL.bit.COMPDACE = 1;//使能比较器
    Cmpss3Regs.COMPCTL.bit.COMPHSOURCE = 0;//CMP1H的负端使用内部DAC
    Cmpss3Regs.COMPCTL.bit.CTRIPHSEL = 0;//比较器异步输出到ePWM_XBAR
    Cmpss3Regs.COMPCTL.bit.COMPHINV = 1;//输出反向,大于DACVAL发送1;小于DACVAL发送0
    Cmpss3Regs.DACHVALS.bit.DACVAL = 512;//CBC_VOL_COMP;//512

    //配置ePWM_XBAR
    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX0 = 0;
    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX4 = 0;
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX0 = 1;
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX4 = 1;

    //配置DAC
    //U相CBC设置
    //上桥
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm1Regs.TZDCSEL.bit.DCAEVT2 = 1;//Low Active
    //下桥
    EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm1Regs.TZDCSEL.bit.DCBEVT2 = 1;//Low Active
    //将比较器输出作为CBC的触发源
    EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;
    EPwm1Regs.TZSEL.bit.DCBEVT2 = 1;
    //CBC最终输出动作
    EPwm1Regs.TZCTL.bit.DCAEVT2 = 1;//强制epwm1为高
    EPwm1Regs.TZCTL.bit.DCBEVT2 = 1;//强制epwm1为高

    //V相CBC设置
    //上桥
    EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm2Regs.TZDCSEL.bit.DCAEVT2 = 1;//Low Active
    //下桥
    EPwm2Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm2Regs.TZDCSEL.bit.DCBEVT2 = 1;//Low Active
    //将比较器输出作为CBC的触发源
    EPwm2Regs.TZSEL.bit.DCAEVT2 = 1;
    EPwm2Regs.TZSEL.bit.DCBEVT2 = 1;
    //CBC最终输出动作
    EPwm2Regs.TZCTL.bit.DCAEVT2 = 1;//强制epwm1为高
    EPwm2Regs.TZCTL.bit.DCBEVT2 = 1;//强制epwmB为高

    //W相CBC设置
    //上桥
    EPwm3Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm3Regs.TZDCSEL.bit.DCAEVT2 = 1;//Low Active
    //下桥
    EPwm3Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 3;//DCA's input select the ePWM_xbar_Trip4
    EPwm3Regs.TZDCSEL.bit.DCBEVT2 = 1;//Low Active
    //将比较器输出作为CBC的触发源
    EPwm3Regs.TZSEL.bit.DCAEVT2 = 1;
    EPwm3Regs.TZSEL.bit.DCBEVT2 = 1;
    //CBC最终输出动作
    EPwm3Regs.TZCTL.bit.DCAEVT2 = 1;//强制epwmA为高
    EPwm3Regs.TZCTL.bit.DCBEVT2 = 1;//强制epwmB为高

    EDIS;

  • 额,现在最新的几款芯片软件都是用库的形式编写的,看寄存器对照起来有点累啊。

    我建议你对照例程看一下自己的寄存器是否设置正确,自己编写的代码比较熟悉。