打印
[DSP编程]

DSP ePWM频率计算

[复制链接]
6119|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huweili|  楼主 | 2014-10-26 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EPwm1Regs.TBPRD = 6000;                        // Set timer period
   EPwm1Regs.TBPHS.half.TBPHS = 0x0000;           // Phase is 0
   EPwm1Regs.TBCTR = 0x0000;                      // Clear counter

   // Setup TBCLK
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up,增计数模式
   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // 禁止相位寄存器加载
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4;       // 预分频系数为2*2=4
   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4;          // 预分频系数为2^2=4

   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // 双缓冲操作,所有的写操作通过CPU访问映射寄存器
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;  //当时间基准计数器等于0(TBCTR=0X0000)时加载
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

   // Setup compare
   EPwm1Regs.CMPA.half.CMPA = 3000;               //设置比较值

   // Set actions
   EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;             //TBCTR与CMPA在up计数时相等使输出置高
   EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;           //CTR=CAD事件时将EPWM1A置低


   EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR;          // Set PWM1A on Zero
   EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;

   // Active Low PWMs - Setup Deadband
   EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//允许死区对于ePWM1A输出的上升沿延迟
   EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;      //主低模式
   EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;        //EPWMxA IN是下降边沿和上升沿延迟的输入源
   EPwm1Regs.DBRED = 0x3ff;                      //上升边沿延迟计数,10位计数器
   EPwm1Regs.DBFED = 0;                          //下降边沿延迟计数,10位计数器
   EPwm1_DB_Direction = DB_UP;

   // Interrupt where we will change the Deadband
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // 使能事件,TBCTR=0X0000
   EPwm1Regs.ETSEL.bit.INTEN = 1;                // 使能INT中断
   EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;           // 第三个事件发生时中断

相关帖子

沙发
huweili|  楼主 | 2014-10-26 14:08 | 只看该作者
请问大侠们按这个程序计算出的EPWM的频率是多少呢?

使用特权

评论回复
板凳
visani| | 2014-10-26 14:41 | 只看该作者
没用过DSP呀

使用特权

评论回复
地板
edishen| | 2014-10-26 14:47 | 只看该作者
你有没有计算过呢

使用特权

评论回复
5
zhangmangui| | 2014-10-26 22:19 | 只看该作者
先计算出事件管理器的时钟   然后EPwm1Regs.TBPRD = 6000利用这个计算周期

使用特权

评论回复
6
huweili|  楼主 | 2014-10-31 20:02 | 只看该作者
问题已经解决了

使用特权

评论回复
7
zhangmangui| | 2014-11-10 23:53 | 只看该作者
huweili 发表于 2014-10-31 20:02
问题已经解决了

详解啊  

使用特权

评论回复
8
zhangdongze| | 2015-3-5 10:24 | 只看该作者
请问是不是 系统时钟/预分频/周期?????

使用特权

评论回复
9
海中水| | 2015-3-5 10:35 | 只看该作者
分享一下吧!

使用特权

评论回复
10
huweili|  楼主 | 2015-6-7 22:26 | 只看该作者
zhangdongze 发表于 2015-3-5 10:24
请问是不是 系统时钟/预分频/周期?????

是的

使用特权

评论回复
11
光头的强| | 2018-6-22 14:17 | 只看该作者
楼主,怎么解决的啊

使用特权

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

本版积分规则

4

主题

8

帖子

1

粉丝