TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28377D: CMP装值

Part Number:TMS320F28377D

Dear everyone:

目前貌似遇到一个问题点:CMPB的比较值与周期值,未同时从影子寄存器变更到活动的寄存器成功;导致CMPB出现异常波形。

我们正在排查这个原因,下面是这个相关的一些内容:

我们需要有周期76K到130K之间切换的需求,目前发现这个异常波形,异常的持续时间为5.48u左右,

CH3 是CMPA   CH4 是CMPB(此图为MOS管的GS波形)

CMPA的可能也存在问题,但是因为默认值是1,所以未能反馈到对应的MOS管驱动上。

此异常波形只会触发一次,但是程序会20K执行一次装值,所以异常的周期貌似在下个周期成功使用影子寄存器的值到活动的寄存器,所以未连续出现异常波形。

补充信息:

1.常态时,CMPA=1,CMPB= PRD-1;(此波形会被驱动电路吸收)
2:赋值方式:利用DMA搬运装ePWM的周期值与比较值。
3:  配置:

影子寄存器都是默认配置 寄存器值 = 0;

CMPA的上CAU是AQ_CLEAR 、 CAD是AQ_SET;

CMPB的上CBU是AQ_SET、 CBD是AQ_CLEAR ;

CTRMODE = TB_COUNT_UPDOWN;

Yale Li:

首先ePWM输出的A路、B路与CMPA、CMPB之间没有一一对应的关系,这两个概念是相互独立的。

根据你描述的配置来看,常态时ePWM的输出是A路与B路交错相差1个周期左右、宽度为2的窄脉冲。

long haiyang said:但是程序会20K执行一次装值,

20kHz的装值操作就是通过DMA实现的吧?比较值与周期值都会改变吗?

你的推测就是CH4的B路输出周期值变为了新的TBPRD‘,而比较值还是旧的TBPRD-1,所以常态时的窄脉冲会变成5.48us左右的高电平,对吗?

在这一代C2000器件上的ePWM模块,影子寄存器是不会出现周期值被加载而比较值未被加载的情况;

那么,就是更源头的原因导致了这个问题:新的周期值被写入、而新的比较值未被写入;也就是说这两个赋值操作跨越了影子寄存器的装载点。(如果是CPU操作的,就是这两条赋值语句跨越了装载点;DMA操作的,就是这两个搬运操作跨越了装载点)

这个问题一定是在小周期(130kHz)变大周期(76kHz)的时候才有几率产生。

long haiyang said:我们需要有周期76K到130K之间切换的需求,目前发现这个异常波形,异常的持续时间为5.48u左右,

130kHz~7.69us,76kHz~13.16us,13.16-7.69=5.47us,

异常现象也佐证了我的观点。具体过程为:由于装载操作跨越了装载点,导致只有新的周期值(TBPRD’)被成功加载,计数器计数到旧的动作值(TBPRD-1)时,SET;继续计数到新的周期值(TBPRD’),新的动作值(TBPRD'-1)被加载,紧接着在新的动作值处,CLEAR,由此产生了5.48us左右的高电平。也可以查看zhcaax8_利用新型 ePWM 特性进行多相控制第5页2.2 在模块间同时写入寄存器来帮助理解。

在这一代器件上我们也解决了这一问题,请查看spruhm8i_TMS320F2837xD Dual-Core Delfino Microcontrollers Technical Reference Manual (Rev. I)第1877页15.4.5 Simultaneous Writes to TBPRD and CMPx Registers Between ePWM Modules

,

Yale Li:

long haiyang said:CMPA的可能也存在问题,但是因为默认值是1,

并且可以肯定的是,A路是不会出现问题的。原因就是你说的,默认值是1,动作范围在0附近,不受周期值的影响。

,

dylan long:

Yale Li said:20kHz的装值操作就是通过DMA实现的吧?比较值与周期值都会改变吗?

是的,DMA实现的,比较值与周期值都会发生改变。

,

dylan long:

Yale Li said:你的推测就是CH4的B路输出周期值变为了新的TBPRD‘,而比较值还是旧的TBPRD-1,所以常态时的窄脉冲会变成5.48us左右的高电平,对吗?

我明白你的意思了,我会根据你提供的链接寻找解决办法

感谢你提供的信息

,

Yale Li:

客气了。主要就是通过配置EPWMLINK来实现的。

,

lion lee:

楼主你是在怎么将ePWM/HRPWM 寄存器重新映射到 PF3的呢,我写了如下代码,可当我将其加入epwm模块后,就无法产生波形了

volatile Uint16 *MAPCNF=(Uint16 *)0x702E;
EALLOW;
*MAPCNF|=0x01;
EDIS;

,

Yale Li:

lion lee,

我看到你在自己的帖子中已经找到解决方案了:

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/779456/tms320f28335-epwm-hrpwm-pf3

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28377D: CMP装值
分享到: 更多 (0)