打印
[DSP编程]

TI 28335的PWM配置,输出波形是什么样的呢?

[复制链接]
1594|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dzguang|  楼主 | 2019-8-31 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先不好意思,我没有TI的这个芯片,但是对于ePWM这一块移植到其他平台上时,因为仿真的结果有问题,需要了解下这个波形的样式。

void InitEPwm1(void)
{
        InitEPwm1Gpio();

        EPwm1Regs.TBPRD = 7500;                               //周期  3750*1/150000000=1/20000
        EPwm1Regs.CMPA.half.CMPA = 0;                         //A占空比
        //EPwm1Regs.CMPB = 4000;                              //B占空比
        /*时基模块寄存器*/
        EPwm1Regs.TBPHS.all = 0;
        EPwm1Regs.TBCTR = 0;
        EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;        //计数模式
        EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
        EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
        EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
        EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
        EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
        /*计数比较模块寄存器*/
        EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
        EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
        EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;         //影子寄存器A在CTR_ZERO时装载
        EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;         //影子寄存器B在CTR_ZERO时装载
        /*死区产生模块寄存器*/
        EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;        //死区模块使能
        EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;             //极性选择控制
        EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;                //A。B输出控制
        EPwm1Regs.DBRED = 100;                                //延时计数器 0~1023
        EPwm1Regs.DBFED = 100;                                //延时计数器 0~1023
        /*动作模块寄存器*/
        EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;                    //时基计数器值与CMPA寄存器值比较
        EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
        /*事件触发模块寄存器*/
        EPwm1Regs.ETSEL.bit.SOCAEN = 1;                       //使能ePWM1SOCB信号产生位
        EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO;            //ePWM1SOCB信号产生条件:当TBCTR=0时
        EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST;                  //在第一个事件时,产生SOC信号

        EPwm1Regs.ETSEL.bit.INTEN = 1;                        //使能ePWM中断产生位
        EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;             //中断选择条件
        EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;                   //中断产生条件
}


后续如果我输出
EPwm1Regs.CMPA.half.CMPA = 0;    (1)
EPwm1Regs.CMPA.half.CMPA = 750;   (2)

对于上述的(1)PWM输出的是上桥臂0%,下桥臂100%占空比
                (2)PWM输出的是上桥臂10%,下桥臂90%占空比  么?
烦请大神帮忙看下。
谢谢。

使用特权

评论回复

相关帖子

沙发
zhangmangui| | 2019-8-31 23:44 | 只看该作者
这个应该实现不了    PWM如果设置为互补输出 应该出不了100%

使用特权

评论回复
板凳
zhangmangui| | 2019-8-31 23:47 | 只看该作者
我觉得如果要只控制上下中的一个桥臂   最好在驱动器硬件上设置好   
或者直接用互补输出的   即上下桥通过PWM控制  并且有死区时间  不会导致上下桥同时导通

使用特权

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

本版积分规则

19

主题

292

帖子

5

粉丝