找回密码
 立即注册
查看: 576|回复: 10

STC32的PWMA互补输出的死区问题

[复制链接]

该用户从未签到

1

主题

5

回帖

39

积分

新手上路

积分
39
发表于 2023-6-12 10:40:25 | 显示全部楼层 |阅读模式
PWM4P和PWM4N这一对互补通道是不是没有死区功能?


STC32的PWMA互补输出的死区问题-1.png


回复 送花

使用道具 举报

该用户从未签到

1

主题

5

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2023-6-12 11:40:15 | 显示全部楼层
我改成了PWM1P和PWM1N,互补输出是有的,但也还是不能成功插入死区。
配置如下:
1.png
帮忙确认下
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-6-12 17:40:03 | 显示全部楼层
    STC32的PWM4P和PWM4N是有死区功能的
    可以使用STC32G实验箱例程包里的“25-高级PWM1-PWM2-PWM3-PWM4,驱动P6口呼吸灯实验程序”例子测试
    PWM初始化里插入死区寄存器设置就行。前面的输出通道使能,与脚位切换,可根据自身需要修改设置:
    1.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2023-6-15 16:14:25 | 显示全部楼层
    PWMA的4路都有死区,但是都共用一个死区时间寄存器。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    39

    积分

    新手上路

    积分
    39
     楼主| 发表于 2023-6-22 10:28:13 | 显示全部楼层
    梁工 发表于 2023-6-15 16:14
    PWMA的4路都有死区,但是都共用一个死区时间寄存器。

    一个死区控制器没有问题的,但是但是我无论用PWM1还是PWM4都调不出来。。。

    点评

    直接下载STC官方例程里的HEX文件测试。  详情 回复 发表于 2023-6-22 10:32
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2023-6-22 10:32:21 | 显示全部楼层
    xinrc 发表于 2023-6-22 10:28
    一个死区控制器没有问题的,但是但是我无论用PWM1还是PWM4都调不出来。。。 ...

    直接下载STC官方例程里的HEX文件测试。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    39

    积分

    新手上路

    积分
    39
     楼主| 发表于 2023-6-23 16:11:20 | 显示全部楼层
    本帖最后由 xinrc 于 2023-6-23 16:47 编辑
    梁工 发表于 2023-6-22 10:32
    直接下载STC官方例程里的HEX文件测试。

    我下载了例程测试过时可以插入死区的。
    但是例程里PWMA的时钟是没有分频,而我需要一个频率比较低的PWM波形输出(例如:100Hz),于是对PWM的时钟进行分频,这样再插入死区就看不出来了。而死区计数器的驱动时钟源是分频前的,所以频率低的时候用示波器就看不出来了。

    点评

    死区是给MOSFET驱动的,一般都是几个us以内。如果你需要很长的间隔,那就不是死区时间,而是相位差了,得按相位差的方式实现。  详情 回复 发表于 2023-6-23 16:52
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2023-6-23 16:52:17 | 显示全部楼层
    xinrc 发表于 2023-6-23 16:11
    我下载了例程测试过时可以插入死区的。
    但是例程里PWMA的时钟是没有分频,而我需要一个频率比较低的PWM波 ...

    死区是给MOSFET驱动的,一般都是几个us以内。如果你需要很长的间隔,那就不是死区时间,而是相位差了,得按相位差的方式实现。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    39

    积分

    新手上路

    积分
    39
     楼主| 发表于 2023-6-23 18:43:05 | 显示全部楼层
    本帖最后由 xinrc 于 2023-6-23 18:48 编辑
    梁工 发表于 2023-6-23 16:52
    死区是给MOSFET驱动的,一般都是几个us以内。如果你需要很长的间隔,那就不是死区时间,而是相位差了,得 ...

    相位差的方式怎么实现呢,我其实需要的波形和插入死区的波形是一致的,只是需要这个死区时间的可调范围大一些.
    另外我看手册上写HSCLDIV这个寄存器是可以调节PWM和SPI的时钟的,但是设置了没有用。
    1.png

    PS:我需要的死区时间在500us以内。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    39

    积分

    新手上路

    积分
    39
     楼主| 发表于 2023-6-23 19:09:40 | 显示全部楼层
    本帖最后由 xinrc 于 2023-6-23 19:18 编辑

    1.png

    我其实需要的是这样一组波形,PWM0是正负对称的方波,PWM1和PWM2是互补的方波(需要插入死区,死区时间小于500us可调)。PWM0和PWM1之间相位有偏差,做到可调。

    三个波形的频率是一样的,只是相位上的差别

    @梁工,这样的能实现吗?

    点评

    可以实现,可以参考我们的相位差PWM例子,或者使用STC8G2K64S4系列更好实现。  详情 回复 发表于 2023-6-24 12:27
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 08:12 , Processed in 0.083740 second(s), 74 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表