打印
[G32R]

基于R501-多路PWM同步计数的配置解析

[复制链接]
62|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyz0926|  楼主 | 2025-4-30 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zyz0926 于 2025-4-30 16:29 编辑

#申请原创# #技术资源#  
以本人开发的通用高压伺服软件为例来进行说明,G32R501-多路PWM同步配置经验介绍如下:
伺服中使用的PWM包括:
   PWM1: 增计数,用于主中断触发,频率16K
   PWM3: 增减计数,用于U相PWM波输出,频率8K
   PWM5: 增减计数,用于V相PWM波输出,频率8K
   PWM6: 增减计数,用于W相PWM波输出,频率8K
  
   PWM7: 增计数,用于电流环中断触发,频率16K
   PWM2: 增计数,用于CPU1核并行中断触发,频率32K

PWM模块的TB计数器的同步框架图请实际参考极海G32R501官方用户手册。

可以观察到,8路PWM主要分为三路同步链路,其中,PWM1,2,3处于第一同步链路,PWM4,5,6处于第二同步链路,PWM7,8处于第三同步链路。可以看出,多路PWM的同步只能向下同步,不能向上同步,即同步基准最好定为PWM1,其他所有PWM,均可与PWM1进行同步。通过同步输入源寄存器来进行选择。
比如如果使用PWM1作为同步源,同步配置所有PWM,则配置如下:      
SyncSocRegs.SYNCSELECT.bit.PWM1SYNCIN = 1;           
SyncSocRegs.SYNCSELECT.bit.PWM4SYNCIN = 0;
SyncSocRegs.SYNCSELECT.bit.PWM7SYNCIN = 0;

而同步的具体寄存器配置也是较为简单,将同步基准配置为主模式,通过配置PHSEN来实现,同步选择为计数器为0触发
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
其余所有被同步的PWM,配置为从模式,,同步选择为同步源输入触发
EPwm8Regs.TBCTL.bit.PHSEN = TB_ENABLE; // slave module
EPwm8Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  

要注意的是,如果要PWM8与PWM1进行同步,则不管PWM7是否使用,都必须要进行同步配置,否则链路不通,则即使配置好PWM8与PWM1同步寄存器也无法实现同步。同理,PWM4,5,6也是一样的关系。

在本伺服开发中,原先的PWM1作为主中断触发,增计数,如果以其作为同步基准,则后面的PWM的同步则是无法实现,主要是计数模式与周期均存在差异。这里需要改变下配置思路,将主中断搬移到PWM2上,将PWM1改为增减计数,频率8K的同步源即可。即PWM1仅仅作为空计数的同步源计数器。在实际应用中,配置往往是比较灵活的,需要根据实际的情况来进行取舍,前提是对同步的原理比较清晰。


使用特权

评论回复
沙发
zyz0926|  楼主 | 2025-4-30 16:29 | 只看该作者

使用特权

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

本版积分规则

15

主题

27

帖子

0

粉丝