打印
[STM32F1]

STM32定时器输入捕获霍尔传感器信号测量电机转速,偶尔会丢失一个中断。

[复制链接]
5789|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
silverpal|  楼主 | 2016-6-23 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做一个项目用到了STM32F103C8T6,使用TIM4对霍尔传感器输出的脉冲进行捕获,用来测电机的转速,实现思路是:TIM4使能Update和CC1中断,配置为上升沿捕获。每次Update中断触发时计时变量Tim4UpdateCnt自增,用于整体计时。每次CC1中断时,获取捕获的值,与Tim4UpdateCnt结合计算得到捕获发生的时刻,然后计算与上一个捕获时刻的时间差,即为所测的电机转动周期。实际运行时程序测得的周期能够达到us级的精度。但是偶尔会丢失一次捕获中断,导致测得的电机转动周期跳变为正常值的两倍,大概几分钟至十几分钟会出现一次。为了排除霍尔传感器给的脉冲信号不可靠的原因,我使用信号发生器产生50Hz,占空比为1%的方波,连接至捕获通道上,结果仍然有同样的现象。不知道坛里的兄弟有没有遇到过这种问题,又是如何解决的,请不吝赐教,谢谢!
沙发
mmuuss586| | 2016-6-23 10:28 | 只看该作者
没遇到过呢,我们做无刷控制的时候没遇到这个问题;

使用特权

评论回复
板凳
xmshao| | 2016-6-23 14:40 | 只看该作者
程序里还有别的什么中断吗?

使用特权

评论回复
地板
silverpal|  楼主 | 2016-6-23 15:54 | 只看该作者
xmshao 发表于 2016-6-23 14:40
程序里还有别的什么中断吗?

TIM4中断是最高优先级,别的中断都关掉了,仍然有这个问题。

使用特权

评论回复
5
xmshao| | 2016-6-23 16:12 | 只看该作者
按理说不该这样,会不会是硬件什么地方影响到它某时刻的捕捉了。

使用特权

评论回复
6
silverpal|  楼主 | 2016-6-24 15:20 | 只看该作者
xmshao 发表于 2016-6-23 16:12
按理说不该这样,会不会是硬件什么地方影响到它某时刻的捕捉了。

如果用外部中断,每次都能触发到,没有丢失。但是用定时器输入捕获总是会隔几分钟丢一个。

使用特权

评论回复
7
xuaiguo| | 2019-11-21 15:25 | 只看该作者
使用STSPIN32F0也发现这个问题

使用特权

评论回复
8
gdszzyq| | 2019-11-21 17:18 | 只看该作者
本帖最后由 gdszzyq 于 2019-11-21 17:20 编辑

为什么不用外部中断结合定时器的方式呢

使用特权

评论回复
9
leibinglin| | 2020-4-17 15:03 | 只看该作者
长知识了 呵呵

使用特权

评论回复
10
joyme| | 2020-4-17 15:38 | 只看该作者
你说你能达到us级的精度,你TIM4 update中断是1us中断吗?
如果是1us的中断,CPU负荷是很重的,看看你的中断处理函数里语句多不多

使用特权

评论回复
11
wziyi| | 2020-4-25 17:04 | 只看该作者
CPU 负载过高或者中断里的代码耗时太久

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

28

帖子

1

粉丝