OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 21684|回复: 10

突然觉得TIM4_ICInitStructure.TIM_ICFilter这个设置好有用,但是不懂为什么,想问下

[复制链接]

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
发表于 2015-5-20 16:27:52 | 显示全部楼层 |阅读模式
5金钱
我这两天用stm32做电机控制,
中间有用到扭矩传感器。
就是需要测频率,根据换算关系得到扭矩。
我用的捕获方式,捕获每个周期的电平。

刚开始的时候,信号挺稳定的,读的数据也准确。

我把步进电机驱动器一打开,数据就各种异常,
逻辑分析仪测了一下,觉得不行
于是加了一些信号调理电路,之后再测,看起来波形是没有问题的了:(上下行对比)


示波器是这样的


看波形没什么问题了,但是捕获出来的值就是各种不正常。

正常是100us,实际会突然跳到50或者150这么大范围。

想了很多办法也不行了,就突然发现了TIM4_ICInitStructure.TIM_ICFilter这个设置把它从0x00改到了0x0f,之后数据就正常了。
网上查了一下,也没有查到是怎么工作的,
因为我一直用库函数,感觉不是很理解究竟是操作了哪个寄存器,是怎么实现的。

现在问题虽然已经解决了,但是还是想知道这个是设置了什么呀?

求用过的分享一下心得

最佳答案

查看完整内容[请看2#楼]

回复【5楼】tao475824827: --------------------------------- 回复【6楼】霸王表急: ---------------------------------  右键 go to definition    最后定位到 函数 static void TI1_Config(....) 对照参考手册, 看该函数的内容就明白了,其实那个滤波设置就是 TIMx->CCMRx 的 IC1F[3:0]
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-5-20 16:27:53 | 显示全部楼层
回复【5楼】tao475824827:
---------------------------------
回复【6楼】霸王表急:
---------------------------------
 右键 go to definition    最后定位到 函数 static void TI1_Config(....)
对照参考手册, 看该函数的内容就明白了,其实那个滤波设置就是 TIMx->CCMRx 的 IC1F[3:0]
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-5-20
在线时间
0 小时
发表于 2015-5-20 20:51:18 | 显示全部楼层
你这个波形明显是正交编码器输出,stm的定时器会直接对这个计数的,像这种干扰自动就会被忽略
回复

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-5-20 21:46:54 | 显示全部楼层
就是输入捕获滤波,由TIMx->CCMRx(捕获/比较模式寄存器)控制
回复

使用道具 举报

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
 楼主| 发表于 2015-5-21 21:11:23 | 显示全部楼层
回复【2楼】wangshujun:
---------------------------------
可是之前TIM4_ICInitStructure.TIM_ICFilter设置成0的时候,误差就很大啊
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
回复

使用道具 举报

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
 楼主| 发表于 2015-5-21 21:12:06 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
你知道TIM4_ICInitStructure.TIM_ICFilter这个是设置什么的么?我看写的是滤波,不知道这个是怎么实现的?
因为感觉效果挺好的,所以想了解一下
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
回复

使用道具 举报

14

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-8-5
在线时间
9 小时
发表于 2015-9-18 21:24:14 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------是IC1SPSC吗?
回复

使用道具 举报

7

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2015-11-26
在线时间
27 小时
发表于 2016-8-22 19:12:14 | 显示全部楼层
这个TIM4_ICInitStructure.TIM_ICFilter是输入捕获用来滤波的,当pwm输入进来,会有一个频率对输入的高电平采样,这个频率是TIMx_CR1的 CKD[1:0]的设置来确定的,当TIMx_CCMR1的ICnF[3:0]为F,那么他就会以前面说的频率对高电平采样8次,来确定是不是正真的高电平,当这个高电平小于8次采样,那么就把它滤除
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-4-28
在线时间
2 小时
发表于 2016-12-1 16:34:47 | 显示全部楼层
快乐柠檬 发表于 2016-8-22 19:12
这个TIM4_ICInitStructure.TIM_ICFilter是输入捕获用来滤波的,当pwm输入进来,会有一个频率对输入的高电平 ...

就是介个样子,学习嘞!
回复

使用道具 举报

3

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2016-9-8
在线时间
44 小时
发表于 2017-2-20 18:30:51 | 显示全部楼层
MARK  MARK
回复

使用道具 举报

33

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2019-11-12
在线时间
62 小时
发表于 2020-4-11 23:52:27 | 显示全部楼层
MARKMARK
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 00:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表