你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 用主从定时器方式实现DSP QEP模块的QCTMR功能,异常

[复制链接]
lzylzy1212 提问时间:2026-4-9 10:53 / 未解决

DSP的QEP有个功能QCTMR,可以提高编码器线数较少且转速低时的速度计算精度。原理:在读取QEP的脉冲数时,可以获得当前QCTMR定时器的值,该QCTMR定时器可配置为在每个QEP脉冲到的时候会被自动清零,这样能够补偿因QEP脉冲变化较少时的速度计算误差。

现在就是想用stm32实现dsp qep模块的QCTMR功能。用的H723芯片,我们把主定时器TIM2配置成正交编码器模式Encoder Mode Tl1 and Tl2,接ABZ编码器。另外配置一个从定时器TIM23为普通周期计数模式。然后也想要每个QEP脉冲变化时能有触发信号使得从定时器复位,因此配置了主TIM2触发模式为TIM_TRGO_OC1,TIM23从模式配置为复位。现在QEP变化可以复位TIM23->CNT,目前的问题是1个ABZ有4个qep脉冲变化,但只复位了1次TIM23。

代码如下:

TIM2的配置代码a3770e3a-d409-4bde-ae16-c8daae931e2d.png

TIM23的配置代码3a9cfd216097c992f22170268257a6e4.png

想问一下,这种实现方式可行吗?为什么1个周期4个脉冲变化只复位了1次从定时器呢,哪里有问题。求解答

image.png
image.png
image.png
image.png
image.png
赞 收藏 评论7 发布时间:2026-4-9 10:53

举报

7个回答
xmshao 回答时间:2026-4-10 11:29:17

你现在TIM2接上了编码器,然后让TIM2产生触发信号令TIM23复位。

但是,你选择的TIM2的OC1目前是不存在的,因为它的CH1CH2都做编码输入了,并不是比较输出通道。退一步讲,即使你选别的通道的OC信号作为触发输出,一个周期【你这里就是65535个脉冲】也只能产生一次触发信号去复位下一级TIMER。

lzylzy1212 回答时间:2026-4-9 11:00:21

顶一下😄

lzylzy1212 回答时间:2026-4-9 11:10:32

3a9cfd216097c992f22170268257a6e4.png8f68966a4628d1ae7a22672f61705910.png

butterflyspring 回答时间:2026-4-9 17:15:08
看了一点资料,如果没理解错的话,是想要在两个脉冲之间计数,提高分辨率。

时间轴 →|----Tp1----|----Tp2----|----Tp3----|QEP脉冲:   ↑           ↑           ↑QCTMR值:   清零→计数→读数→清零→计数→读数→清零



那么可行的方法是用一个定时器来做输入捕获,这样在两个脉冲之间计数。
分辨率由定时器精度来决定。两个捕获值相减即可。
因为目的是在低速状态下提高分辨率,那么时间是相当充裕的。




lzylzy1212 回答时间:2026-4-15 16:31:45

butterflyspring 发表于 2026-4-9 17:15
看了一点资料,如果没理解错的话,是想要在两个脉冲之间计数,提高分辨率。</p>
<p>时间轴 →|----Tp1----|----Tp ...

是的,问题是这个定时器如何在2个Qep脉冲之间计数并复位,计数很简单就实现,主要是复位。贴的代码段就是用编码器的模式的TIM2去复位计数定时器TIM23的,但是不是每个QEP脉冲都复位,4个脉冲也就是一个周期才复位1次,所以精度很差,达不到要求。

lzylzy1212 回答时间:2026-4-15 16:33:12

xmshao 发表于 2026-4-10 11:29
你现在TIM2接上了编码器,然后让TIM2产生触发信号令TIM23复位。</p>
<p>但是,你选择的TIM2的OC1目前是不存在 ...

[md]但是实验下来OC1是可以复位的,也不是TIM2.CNT到达period才复位1次,是每4个QEP脉冲(编码器模式为EncoderT12)会复位1次。

butterflyspring 回答时间:2026-4-15 17:38:22
lzylzy1212 发表于 2026-4-15 16:31
[md]是的,问题是这个定时器如何在2个Qep脉冲之间计数并复位,计数很简单就实现,主要是复位。贴的代码段 ...

定时器工作在从模式下,它的复位来源于触发信号。

主定时器的触发信号一个周期只能来一次,所以只能复位一次。

因此用捕获的方式才可以更精准的获得测量值,只是做给减法。
而触发复位计数器就是避免做减法,但是次数不够。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版