打印
[DSP]

ePWM模块使用的问题

[复制链接]
3454|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yinxiangh|  楼主 | 2020-10-11 20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    EPwm1Regs.TBSTS.all=0;
EPwm1Regs.TBPHS.half.TBPHS=0;
EPwm1Regs.TBCTR=0;
EPwm1Regs.CMPCTL.all=0x50;        // Immediate mode for CMPA and CMPB
EPwm1Regs.CMPA.half.CMPA =SP/2;   //计算结果为3750
EPwm1Regs.CMPB=0;
EPwm1Regs.AQCTLA.all=0x60;        // EPWMxA = 1 when CTR=CMPA and counter inc
                                   // EPWMxA = 0 when CTR=CMPA and counter dec
EPwm1Regs.AQCTLB.all=0;
EPwm1Regs.AQSFRC.all=0;
EPwm1Regs.AQCSFRC.all=0;
EPwm1Regs.DBCTL.all=0xb;          // EPWMxB is inverted
EPwm1Regs.DBRED=0;
EPwm1Regs.DBFED=0;
EPwm1Regs.TZSEL.all=0;
EPwm1Regs.TZCTL.all=0;
EPwm1Regs.TZEINT.all=0;
EPwm1Regs.TZ**.all=0;
EPwm1Regs.TZCLR.all=0;
EPwm1Regs.TZFRC.all=0;
EPwm1Regs.ETSEL.all=0;            // Interrupt when TBCTR = 0x0000
EPwm1Regs.ET**.all=0;
EPwm1Regs.ETCLR.all=0;
EPwm1Regs.ETFRC.all=0;
EPwm1Regs.PCCTL.all=0;
EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL;   // Enable Timer
EPwm1Regs.TBPRD=SP;

以上是关于EPWM1模块的配置,epwm2、3、4等如法**制。
1、关于寄存器位定义的问题
     EPwm1Regs.TBCTR.all=0;
---
EPwm1Regs.AQCTLA.all=0x60;        // EPWMxA = 1 when CTR=CMPA and counter inc
                                   // EPWMxA = 0 when CTR=CMPA and counter dec
(前面那条语句的意思是对该寄存器的所有位写0,那么按照TBCTR寄存器的配置在CTRMODE字段选择的基数模式为增计数。
但后面那条语句中的注释又说明计数方式是增减计数。这是为什么呢?)
EPwm1Regs.CMPCTL.all=0x50;        // Immediate mode for CMPA and CMPB
EPwm1Regs.AQCTLA.all=0x60;        // EPWMxA = 1 when CTR=CMPA and counter inc
                                   // EPWMxA = 0 when CTR=CMPA and counter dec
EPwm1Regs.DBCTL.all=0xb;          // EPWMxB is inverted
这三句配置语句如果按照注释所要实现的功能来看,以CMPCTL、AQCTLA、DBCTL的各位功能,0x50,0x60,0xb分别是
按照不同的起止顺序配置各位,比如有的从低位开始,有的从高位开始。这是为什么呢?

使用特权

评论回复

相关帖子

沙发
renyaq| | 2020-10-11 20:57 | 只看该作者
保留位是可以直接不看的吗?

使用特权

评论回复
板凳
yinxiangh|  楼主 | 2020-10-11 21:06 | 只看该作者
因为板子上没有标注J7引脚的各引脚分布,于是我测试了一下发现PWM的6个输出引脚在J7的右端,但是排列方式和原理图上的不对应。

使用特权

评论回复
地板
yinxiangh|  楼主 | 2020-10-11 21:12 | 只看该作者
另外,我通过改变CMPA的值来改变PWM的占空比,在调节epwm3的占空比时,我把CMPA设定为SP/10,通过示波器发现,波的占空比约为75%,而理论上应该是10%,并且波形出现一定抖动,请问这是什么原因呢?

使用特权

评论回复
5
lium| | 2020-10-11 21:13 | 只看该作者
寄存器配置从低位和从高位配置并没有区别。

使用特权

评论回复
6
wangpe| | 2020-10-11 21:16 | 只看该作者
保留位可以不看,

使用特权

评论回复
7
wangzsa| | 2020-10-11 21:20 | 只看该作者
请注意文件的版本是否对应,top层和bottom层是否对应,视图是否镜像。

使用特权

评论回复
8
huwr| | 2020-10-11 21:26 | 只看该作者
波形占空比要好好看配置,特别要注意的是死区控制的输入输出延时配置,

使用特权

评论回复
9
happy_10| | 2020-10-11 21:30 | 只看该作者
TBCTR和TBCTL是不一样的,你可能看错了。

使用特权

评论回复
10
zhaoxqi| | 2020-10-11 21:37 | 只看该作者
后面的EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL;中的0x0010定义了updown模式。

使用特权

评论回复
11
dingy| | 2020-10-11 21:40 | 只看该作者
顺序是一致的,看结构体的定义 bit0 是最右边一位。

使用特权

评论回复
12
pangb| | 2020-10-11 21:45 | 只看该作者
仿真里面好像是反的,代码里面的bit0在仿真里面好像是15,不过本身值不变。

使用特权

评论回复
13
xxmmi| | 2020-10-11 21:48 | 只看该作者
保留位不看

使用特权

评论回复
14
guoyt| | 2020-10-11 21:51 | 只看该作者
建议看看TI的例程,这个代码感觉写的不是很清楚。

使用特权

评论回复
15
langgq| | 2020-10-11 21:57 | 只看该作者
你好,例程中定义了TBCTLVAL=0x200E,这里赋值为什么不直接写=0x201E,而要用加法式子呢

使用特权

评论回复
16
yinxiangh|  楼主 | 2020-10-11 22:01 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
17
zhangmangui| | 2020-10-11 22:32 | 只看该作者
寄存器级的配置问题  

使用特权

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

本版积分规则

723

主题

7134

帖子

2

粉丝