本帖最后由 kfhzy 于 2022-4-26 11:30 编辑
我的项目是,控制多个EC风机。EC风机转速受PWM控制,反馈是转速对应的脉冲。
实际GD32F303的配置是,PWM的载频为10KHz,使用TIM3的4个output通道输出PWM。
转速采集采用EXTI外部触发,使用一个100kHz的定时器,作为测量时钟。
调试时,当控制1只EC风机时,一切正常,即PWM输出正常,转速采集的脉冲变化和100k定时器的值相同。即在EXTI对应端子上,施加100Hz的频率,计数器值应该是1000(即100k / 100 = 1000),实际单片机读到的计数值也是1000,且波动范围可以是个位数,1001,1003,998等。
当控制2只或2只以上EC风机时,出现了诡异的现象。此时,PWM输出正常,风机也正常运转。
但是转速采集的脉冲计数变化不再是100k的变化速率了,而是10K的变化速率。即,假如在EXTI对应端子上,施加100Hz的频率,计数器值是1000,但波动变为了1010,990,1020,980等等,再也没有个位数的变化了。
并且,当改变PWM的载频至50K时,采集的脉冲频率变化即为50k的变化速率。即波动变为了1005,1010,995,990等等。
当改变PWM的载频,如100K时,采集的脉冲频率变化即为100k的变化速率。波动才又有了个位数的变化。
在调试中,TIM3的4个PWM通道,只要是一个或零个PWM输出,EXTI的频率采集就正常。一旦使能了2个及以上的PWM输出,EXTI的频率采集就异常了,并且随着PWM的频率改变而改变。
各位大神,看看这是什么情况呢?
|