在STM32F103中同时使用两个定时器通道捕获两路PWM信号时出现频率不准确的问题,可能由以下原因导致:
问题根源
当两个通道的中断优先级相同(尤其是同一定时器的不同通道),硬件会按固定顺序处理中断(如通道1优先于通道2)。若两个事件同时触发,第二个中断需等待第一个处理完毕,导致时间戳误差。
解决方案
问题根源
同一定时器的两个通道共享计数器寄存器(CNT)。若两个捕获事件几乎同时发生,读取第一个通道的捕获值(CCR1)时,第二个通道的捕获事件可能覆盖计数器值(CCR2),导致两个通道的时间差计算错误。
解决方案
问题根源
当PWM周期较长时,定时器可能发生多次溢出(计数器从最大值回到0)。若未正确记录溢出次数,计算周期时会引入误差,尤其两路信号同时溢出时误差更明显。
解决方案
Period = (OverflowCount * ARR) + CCRx;问题根源
两路信号同时输入可能引入交叉干扰或噪声,导致边沿抖动,触发多次虚假捕获事件。
解决方案
问题根源
在ISR中未正确处理多通道捕获的时序,例如未及时清除中断标志或错误更新全局变量。
解决方案
问题根源
定时器时钟频率过低,导致计数器分辨率不足,两路高频信号同时捕获时误差被放大。
解决方案
通过调整中断优先级、优化计数器溢出处理、隔离定时器资源或增加信号滤波,可有效解决多通道PWM捕获的精度问题。
举报
在STM32F103中同时使用两个定时器通道捕获两路PWM信号时出现频率不准确的问题,可能由以下原因导致:
问题根源
当两个通道的中断优先级相同(尤其是同一定时器的不同通道),硬件会按固定顺序处理中断(如通道1优先于通道2)。若两个事件同时触发,第二个中断需等待第一个处理完毕,导致时间戳误差。
解决方案
问题根源
同一定时器的两个通道共享计数器寄存器(CNT)。若两个捕获事件几乎同时发生,读取第一个通道的捕获值(CCR1)时,第二个通道的捕获事件可能覆盖计数器值(CCR2),导致两个通道的时间差计算错误。
解决方案
问题根源
当PWM周期较长时,定时器可能发生多次溢出(计数器从最大值回到0)。若未正确记录溢出次数,计算周期时会引入误差,尤其两路信号同时溢出时误差更明显。
解决方案
Period = (OverflowCount * ARR) + CCRx;问题根源
两路信号同时输入可能引入交叉干扰或噪声,导致边沿抖动,触发多次虚假捕获事件。
解决方案
问题根源
在ISR中未正确处理多通道捕获的时序,例如未及时清除中断标志或错误更新全局变量。
解决方案
问题根源
定时器时钟频率过低,导致计数器分辨率不足,两路高频信号同时捕获时误差被放大。
解决方案
通过调整中断优先级、优化计数器溢出处理、隔离定时器资源或增加信号滤波,可有效解决多通道PWM捕获的精度问题。
举报
更多回帖