在BLDC控制的PWM调制示例代码中,有一段代码不太明白,请教一下各位:
Tmp = (int32)Period*(int32)GPR0_BLDC_PWM
GPR0_BLDC_PWM=DutyFunc是占空比调制系数,是int16格式的。
Period是int16格式的。
而初始化时,DutyFunc=0x0500,那么int16格式的Period再乘以一个'0x0500'表达的是个什么意思啊?
Eric Ma:
周期值乘以占空比,不就是等于比较寄存器的值吗?至于初始值,则是给比较寄存器的初始值。DutyFunc应该是有Q格式的,你查一下。
Eric
在BLDC控制的PWM调制示例代码中,有一段代码不太明白,请教一下各位:
Tmp = (int32)Period*(int32)GPR0_BLDC_PWM
GPR0_BLDC_PWM=DutyFunc是占空比调制系数,是int16格式的。
Period是int16格式的。
而初始化时,DutyFunc=0x0500,那么int16格式的Period再乘以一个'0x0500'表达的是个什么意思啊?
Xiaojie Xu:
在计数器的周期寄存器知一定时,PWM波的占空比由计数器的比较寄存器值决定,当计数值与比较寄存器值发生匹配时,PWM输出产生触发,所以在控制系统中,只要将数字PI调节计算出的结果,按一定系数转换成对应的占空比值,乘以周期值后存入比较寄存器就可获得所需的开关管控制信号。