我用TIM做编码器模式的时候总溢出,是不是配置没对?
接的是AB相信号,但TIMx_Counter老跳满值,难道是滤波没开?有时候跳变太快定时器反应不过来。 是不是编码器的分辨率太高? 你TIM设的最大值是多少? 滤波设置没开的话,容易误触发。 看看反转配置对没? AB相是不是相位反了? 建议加硬件滤波器试试。 F3的定时器模式还挺多,搞混了容易出错。 用逻辑分析仪抓一下AB相看看。 我建议你先跑慢速信号试试。 溢出了就重新规划一下呢,太快了吧,放慢点一点一点来 在使用STM32F3的TIM做编码器模式时出现总溢出问题,可能是配置不当或未处理溢出情况导致的 时钟与GPIO配置,需开启对应定时器和GPIO的时钟,并将连接编码器A相和B相的GPIO引脚配置为合适的输入模式(如浮空输入或上拉输入) 使用TIM3时,要开启TIM3和GPIOA的时钟,并把PA6、PA7配置为输入模式 时基单元配置,预分频器一般选择不分频,自动重装载值可设为最大65535,计数模式选择向上计数。这样能保证计数器在较大范围内计数,减少溢出频率 输入捕获单元配置,主要配置滤波器和极性参数。滤波器用于消除噪声干扰,极性参数根据编码器信号特点选择上升沿、下降沿或双边沿触发 编码器接口模式配置,调用库函数配置编码器模式,如TIM_EncoderInterfaceConfig,可选择仅使用TI1通道、仅使用TI2通道或同时使用TI1和TI2通道进行计数。同时使用两个通道时计数精度更高 硬件溢出处理,STM32定时器存在溢出中断,可在中断里做溢出计数。向上溢出时溢出计数减1,向下溢出时溢出计数加1 32位的编码器计数值可通过公式full_count = cnt + overflow_count * 65536计算得出
页:
[1]