搜索

[技术问答] 赛元SC92F7003死区互补PWM请教

[复制链接]
879|11
 楼主 | 2018-6-12 21:43 | 显示全部楼层 |阅读模式
首先感谢沈总支持提供的器件,配置死区互补PWM时参考了规格书例程配置如下
  1. void PWM_Init(void)
  2. {
  3.         PWMCON0 = 0x08;                // 0x38PWM输出到IO,PWM时钟为Fsys/32,PWM5输出至P21,PWM2输出至P26,PWM0-6的周期设置的低2位为0.
  4. //        PWMCON1 = 0X18;                //独立模式,打开PWM3-4。
  5.         PWMCON1 = 0X89;                //互补模式,打开PWM0-6。0|3
  6.         PWMPRD  = 200;                //PWM周期设置,周期 = (59*4+PWMCON0&0x03)/Fpwm
  7.         PWMCFG  = 0x08;                //PWM输出不 **//反向0x38;        反向INV3       
  8.    
  9. //        PWMMOD  = 1;
  10.         PWMDTY3 = 0xFF;           //PWM死区时间配置寄存器3~0 PDR[3:0] PWM0/1/2上升沿死区时间=PDR/fHRC
  11.                                                                                 //7~4 PDF[3:0] PWM3/4/5下降沿死 区时间=PDF/fHRC
  12.         /*必须先配置PWM的低2位*/
  13.         PWMDTYA = 0x00;                //PWM0-3的低2位设置为00;
  14.         PWMDTYB = 0x00;                //PWM4-6的低2位设置为00;
  15.        
  16.         /*再配置PWM的高8位*/
  17.         PWMDTY0 = 46;            //PWM0的Duty = (50*4+PWMDTYA&0x03)/(59*4+1)
  18. //        PWMDTY1 = 30;            //PWM1的Duty = (45*4+PWMDTYA&0x0C)/(59*4+1)
  19. //        PWMDTY2 = 10;             //PWM2的Duty = (40*4+PWMDTYA&0x30)/(59*4+1)

  20. //       
  21.         PWMCON0 |= 0x80;          //开启PWM

  22. }

  23. void  PWM_SET ( uint PWMCV_VALUE , uint PWMCC_VALUE)
  24. {   //设定电压=PWMCV_VALU/2.842; PWMCV_VALUE= 设定电压*2.842如:72.15V= 72.15*2.842=205须PWMCV_VALUE =205
  25. //        static uint CRC_VALUE,CRCH_VALUE,CRCL_VALUE;//PWM1_Duty,        static
  26. //        static uint CC1_VALUE,CCH1_VALUE,CCL1_VALUE;//PWM1_Duty,        static
  27.         PWMDTY0 =  PWMCV_VALUE;            //PWM1的Duty = (45*4+PWMDTYA&0x0C)/(59*4+1)

  28.                
  29. }
复制代码


期望波形是规格书这样C:\Users\Administrator\Desktop\guigeshutupian.jpg
 楼主 | 2018-6-12 21:46 | 显示全部楼层
本帖最后由 qiang7260 于 2018-6-12 21:55 编辑

规格书上互补PWM

规格书上互补PWM

上面配置输出PWM

上面配置输出PWM

左边是规格书上PWM,右边按上面程序配置输出波形,死区几乎没有,新手请教各位大神看看问题在哪,
程序里数值怎么调 都得不到左边波形。

使用特权

评论回复
| 2018-6-13 10:33 | 显示全部楼层
规格书上写的死区设置是PDF[3:0]/fOSC,也就是内部振荡器为16M,这里设置的死区最大为1us

使用特权

评论回复
| 2018-6-13 10:35 | 显示全部楼层
你设置PWM不分频,就能比较明显看到死区

使用特权

评论回复
| 2018-6-13 10:39 | 显示全部楼层
一般功率器件的死区延时在是ns级别,具体你要看你用的功率管的关断时间和导通时间

使用特权

评论回复
 楼主 | 2018-6-13 12:42 | 显示全部楼层
谢谢YanniChen,准备用在50khz半桥上,这时PWMPRD=80,PWMDTY须小于40.这样分辨率是不是低了?

使用特权

评论回复
| 2018-6-13 13:59 | 显示全部楼层
哈哈 客气啦,也感谢您分享哈。有问题随时沟通哈!

使用特权

评论回复
 楼主 | 2018-6-13 14:03 | 显示全部楼层
刚才配置PWMPRD=30,PWMDTY=13.这样频率达到133khz,死区有一单边200ns,互补的效果还是没有。

使用特权

评论回复
 楼主 | 2018-6-13 14:04 | 显示全部楼层
没有互补
IMAG0150.jpg

使用特权

评论回复
| 2018-6-14 09:34 | 显示全部楼层
PWM互补意思是两个波形反向,从你截图看已经反向了,你的问题是后死区看不到吧,你是否有设置PDR和PDF 。可以再把你现在的程序贴出来看下

使用特权

评论回复
 楼主 | 2018-6-14 09:58 | 显示全部楼层
本帖最后由 qiang7260 于 2018-6-14 10:42 编辑

手机贴程序不太方便,上面有更改的只有PWMPRD=30,PWMDTY=13.这样频率达到133khz,PWMDTY3 = 0xFF没更改,按规格书12.5.3配置是最大了,我理解的互补是不但反相还会和第一张图片那样。准备尝试一下做个电源用来取代3525,输出半桥驱动波形,和3525这样的
IMAG0151.jpg

使用特权

评论回复
| 2018-6-15 13:08 | 显示全部楼层
7003死区互补PWM波形,往这里看
124498046153924039.jpg

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表