世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

ti 28035 快速变频脉冲丢失现象

[复制链接]
查看: 1236 |回复: 11
1
songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-23 16:46:27
10问答币

使用ti的28035调试全桥LLC,测试变频功能时发现出现脉冲丢失现象。

1,工作模式:PWM计数器单相递增模式,PWM1A,PWM1B,PWM2A,PWM2B,PWM2模块移相6个始终周期,定时器500uS,187kHz,400kHz两种频率来回切换,每次进定时器更新寄存器变频。工作主频40MHz

2,每次进定时器,更新周期寄存器、比较器数值、死区时间这三项,发现脉冲会出现丢失或者不同步情况,偶尔会出现,不是每次都出现。

3,大家用28035或者ti的DSP是怎样做变频处理的,欢迎指教。

请大家帮忙看看是什么原因,谢谢。

ch1:PWM1A; ch2WM1B;ch3WM2A,ch4WM2B互补模式输出,PWM1是50%占空比,PWM2是45%占空比。




图1 从187K变频到400khz,PWM1模块完成变化,PWM2模块滞后2个周期才变频。

图2 虽然两个模块PWM1和PWM2同时变频,但时间跨越了2个周期,这个脉冲时间很长。


使用ti的28035调试全桥LLC,测试变频功能时发现出现脉冲丢失现象。

1,工作模式:PWM计数器单相递增模式,PWM1A,PWM1B,PWM2A,PWM2B,PWM2模块移相6个始终周期,定时器500uS,187kHz,400kHz两种频率来回切换,每次进定时器更新寄存器变频。工作主频40MHz

2,每次进定时器,更新周期寄存器、比较器数值、死区时间这三项,发现脉冲会出现丢失或者不同步情况,偶尔会出现,不是每次都出现。

3,大家用28035或者ti的DSP是怎样做变频处理的,欢迎指教。

请大家帮忙看看是什么原因,谢谢。

ch1:PWM1A; ch2WM1B;ch3WM2A,ch4WM2B互补模式输出,PWM1是50%占空比,PWM2是45%占空比。

使用PWM1互补模式更新频率,也会出现脉冲确实的情况,如图2所示。




图1 从187K变频到400khz,PWM1模块完成变化,PWM2模块滞后2个周期才变频。




图2 虽然两个模块PWM1和PWM2同时变频,但时间跨越了2个周期,这个脉冲时间很长。

图3 脉冲更新不同步,两个脉冲更新时间不同步造成了这种现象。

收藏收藏
xkw1cn
  • 积分:131441
  • |
  • 主题:37517
  • |
  • 帖子:55633
积分:131441
版主
  • 2021-10-23 22:26:55
 
PWM发生器响应阶越方波的特有现象。由于是非线性函数;正常。响应太快而已。象模拟电路一样;慢响应即可。
songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-24 17:02:23
  • 倒数8
 
用28035做LLC应该挺普遍了,这个问题应该不是一个严重的事情,应该是有办法解决的。我觉得相应太快应该不存在
xkw1cn
  • 积分:131441
  • |
  • 主题:37517
  • |
  • 帖子:55633
积分:131441
版主
  • 2021-10-24 22:18:16
  • 倒数6
 
虽然不知你如何设置。但这种阶越就是如此。
如积分步长过大;即便有延时;也改变不了实际阶越问题。
你现在的波形;反应的问题就是如此。
songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-25 21:41:11
  • 倒数5
 
配置文件

EPwm1Regs.TBPRD = 214;           // PWM frequency = 1 / period
    EPwm1Regs.CMPA.half.CMPA = 107;           // 初始化为0
  EPwm1Regs.CMPA.half.CMPAHR = 0;         // 初始化为0
    EPwm1Regs.CMPB = 0;                     // 初始化为0
    EPwm1Regs.TBPHS.half.TBPHS = 0;                // 不移相
    EPwm1Regs.TBCTR = 0;
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     //TB_COUNT_UPDOWN;
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Enable phase loading
   EPwm1Regs.TBCTL.bit.SYNCOSEL = 1;                        //CTR = zero:
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // 不分频
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;          // 不分频
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;  // 影子寄存器装载
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;  //CTR==PRD时装载。TBCTR=0X0
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    //缓存模式
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;         // 计数器为0时波形输出为高
    EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;       // 计数器增计数且基准计数值等于CMPA 波形输出为低
    EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;         // 计数器为0时波形输出为高
    EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR;       // 计数器增计数且基准计数值等于CMPB 波形输出为低
    EPwm1Regs.DBCTL.bit.IN_MODE = 0;           
    EPwm1Regs.DBCTL.bit.POLSEL = 2;            
    EPm1Regs.DBCTL.bit.OUT_MODE = 3;         
    EPwm1Regs.DBFED = 5;
EPwm1Regs.DBRED = 5;
(EPwm2Regs.TBPRD = 214;           
    EPwm2Regs.CMPA.half.CMPA = 0;           // 初始化为0
    EPwm2Regs.CMPA.half.CMPAHR = 0;         // 初始化为0
    EPwm2Regs.CMPB = 0;              // 初始化为0
    EPwm2Regs.TBPHS.half.TBPHS = 6;                //
    EPwm2Regs.TBCTR = 0;
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;     //TB_COUNT_UPDOWN;
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;        // Enable phase loading
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // 不分频
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;          // 不分频
    EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;         // 影子寄存器装载
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;  //CTR==PRD时装载。TBCTR=0X0
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    //缓存模式
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;         // 计数器为0时波形输出为高
    EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;       // 计数器增计数且基准计数值等于CMPA 波形输出为低
    EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;         // 计数器为0时波形输出为高
    EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR;       // 计数器增计数且基准计数值等于CMPB 波形输出为低
    EPwm2Regs.DBCTL.bit.IN_MODE = 0;           //
    EPwm2Regs.DBCTL.bit.POLSEL = 2;            // 互补输出
    EPwm2Regs.DBCTL.bit.OUT_MODE = 3;          //
    EPwm2Regs.DBFED = 5;
EPwm2Regs.DBRED = 5;




songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-25 21:41:56
  • 倒数4
 
定时器中断变频函数
Pwmfreq_cnt++;                //每次进入定时器+1                频率更新时间=定时器中断周期=500us
if(Pwmfreq_cnt%2 == 0)                //每次判断偶数次187khz,奇数次400khz
{
  EPwm1Regs.TBPRD = EPwm2Regs.TBPRD = 214;                //频率更新 187KHz
  EPwm1Regs.CMPA.half.CMPA =  EPwm2Regs.CMPA.half.CMPA = 107        //占空比更新
                        EPwm2Regs.DBFED = 6;        //死区更新
EPwm2Regs.DBRED = 6;
EPwm1Regs.DBFED = 6;
EPwm1Regs.DBRED = 6;
}
else
{
  EPwm1Regs.TBPRD = EPwm2Regs.TBPRD = 100;                //频率更新 400khz
  EPwm1Regs.CMPA.half.CMPA =  EPwm2Regs.CMPA.half.CMPA = 50        //占空比更新
                        EPwm2Regs.DBFED = 3;        //死区更新
EPwm2Regs.DBRED = 3;
EPwm1Regs.DBFED = 3;
EPwm1Regs.DBRED = 3;
}

songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-25 21:43:42
  • 倒数3
 
你知道用28035做LLC是如何变频的吗?
gnaijnaoul
  • 积分:1292
  • |
  • 主题:3
  • |
  • 帖子:141
积分:1292
LV6
高级工程师
  • 2021-10-24 08:16:21
  • 倒数10
 
参考Ti的文档仔细琢磨一下应该可以想清楚。
spracy1_Leverage New Type ePWM Features for Multiple Phase
songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-24 17:01:15
  • 倒数9
 
谢谢,提供文档,请问你遇到过这种情况吗?
songxium
  • 积分:1523
  • |
  • 主题:33
  • |
  • 帖子:445
积分:1523
LV6
高级工程师
  • 2021-10-24 17:08:56
  • 倒数7
 
看了文档内容,不包含28035芯片
gnaijnaoul
  • 积分:1292
  • |
  • 主题:3
  • |
  • 帖子:141
积分:1292
LV6
高级工程师
  • 2021-10-25 21:56:01
  • 倒数2
 
F28035的PWM模块类型为type 1类型,参照文档中描述改类型PWM模块存在的问题。
使用两个PWM模块调频,需要同步加载多个比较器,比较麻烦。使用软件计算第二路开关时间点,不使用硬件相位寄存器。
可以考虑用中断加载寄存器,频率高时几个周期加载1次,避开PWM动作的时间点,还需要在其它中断中允许嵌套中断。


zajzaj111
  • 积分:401
  • |
  • 主题:0
  • |
  • 帖子:36
积分:401
LV6
高级工程师
最新回复
  • 2022-7-14 13:46:19
  • 倒数1
 
发波要考虑时间点或者你的设置上有没有定义  如果你打断原本计数,加载可能非预期
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号