打印

捕获模式下的周期怎么计算??

[复制链接]
4705|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题,了解一点输入捕获检验相同的一个或者几个边沿,根据差值可以求出周期,不知道怎么求???IC2Value = TIM_GetCapture2(TIM2);,不知道IC2Value的值是什么,貌似不是周期??有点不理解,求高手解释下。。十分感谢。。
沙发
香水城| | 2012-5-2 11:36 | 只看该作者
IC2Value的是时间值,两次相邻捕获的差值就是周期。

使用特权

评论回复
板凳
mage心寒|  楼主 | 2012-5-2 13:02 | 只看该作者
2# 香水城
香主的意思是一个下降沿或者上升沿与上升沿或者下降沿的差值嘛??因为我现在只用一个通道上升沿触发,值用串口输出来,每次的时间值是一样的,求解释,如果说是时间值应该是随着时间递增才对。。

使用特权

评论回复
地板
mage心寒|  楼主 | 2012-5-2 15:01 | 只看该作者
IC2Value原来就是周期啊。。晕死。。。

使用特权

评论回复
5
mage心寒|  楼主 | 2012-5-2 16:56 | 只看该作者
顺便问下捕获模式采样高速的信号100K左右精度怎样,还有没有其它方式采样的。。

使用特权

评论回复
6
mage心寒|  楼主 | 2012-5-3 09:45 | 只看该作者
看了不少资料为啥在输入捕获模式下,大家的TIM_Period =0xffff; //自动重装载寄存器的值都设置的很大,那按定时器的更新时间进入定时器的时间不是变慢了,那采集快点的信号肯定不行吧。。这个问题纠结我好长时间了,路过的帮忙看下啊。。:dizzy:

使用特权

评论回复
7
airwill| | 2012-5-3 09:59 | 只看该作者
看了不少资料为啥在输入捕获模式下,大家的TIM_Period =0xffff; //自动重装载寄存器的值都设置的很大,那按定时器的更新时间进入定时器的时间不是变慢了,那采集快点的信号肯定不行吧。。这个问题纠结我好长时间了, ...
mage心寒 发表于 2012-5-3 09:45


你这是捕获信号, 其精度跟 TIM_Period =0xffff; 的设置毫无关系, 只跟定时器的时钟源有关.

TIM_Period =0xffff; 反而有个好处, 就是避免定时器溢出导致计算时的初值补偿.

使用特权

评论回复
8
mage心寒|  楼主 | 2012-5-3 13:18 | 只看该作者
7# airwill
可是这个值TIM_Period =0xffff;跟定时器的更新有关系啊??如果设置那么大,定时器采集的信号就很慢,那捕获的精度不是很低??求解释。。不是很懂,现在很迷糊。。。

使用特权

评论回复
9
香水城| | 2012-5-3 14:11 | 只看该作者
定时器从0开始计数,计数到TIM_Period后,重新归零再计数。

捕获只是把发生捕获时刻的计数器当前值拷贝下来,你的IC2Value就是这个数值。

如果配置了 发生捕获时复位计数器,则计数器没有计数到TIM_Period时也被归零并重新计数。

如果你配置比较小的TIM_Period数值,则可能在还没有发生捕获时,计数器就被归零,所以你要在软件中记录下计数器被归零的次数。

当计数器的时钟频率为F时,计数器每计数一次表示1/F的时间,因此从捕获寄存器中读出的数值表示了一个时间。如果配置了发生捕获时复位计数器,则这个时间恰好就是要捕获信号的周期。

从上面原理可以看出,TIM_Period的数值与捕获的精度没有关系。

使用特权

评论回复
10
mage心寒|  楼主 | 2012-5-3 14:18 | 只看该作者
9# 香水城
谢谢香主,刚问了同事,也跟我说了下,之前一直以为捕获也跟定时器的配置有关系,现在才了解清楚捕获跟硬件有关,跟挂在TIMX下的时钟的速度有关,还有一点就是通用定时器可以作为PWM输入捕获嘛??后面没有写,貌似高级定时器后面写了PWM,不知道啥意思请香主这个问题也解释下。。谢谢。。

使用特权

评论回复
11
mage心寒|  楼主 | 2012-5-3 14:39 | 只看该作者
问题已经解决,精度也能达到。。谢谢两位。。

使用特权

评论回复
12
mage心寒|  楼主 | 2012-5-3 15:13 | 只看该作者
那个香主还在不,还想问个问题就不开贴了,我现在测外部20K的信号误差99.9%,但是有个问题就是PWM脉宽为啥测出来的都是0,我在板子上面已经将CH1通道和CH2通道短接了,为啥DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;这句话的值是0,我表示很不理解。

使用特权

评论回复
13
香水城| | 2012-5-4 10:01 | 只看该作者
请参考固件库中的PWM Input例子。

使用特权

评论回复
14
zchong| | 2012-5-5 21:53 | 只看该作者
定时器从0开始计数,计数到TIM_Period后,重新归零再计数。

捕获只是把发生捕获时刻的计数器当前值拷贝下来,你的IC2Value就是这个数值。

如果配置了 发生捕获时复位计数器,则计数器没有计数到TIM_Period时也被归 ...
香水城 发表于 2012-5-3 14:11


《《《《发生捕获时复位计数器》》》》这个如何实现?通过TI1-->TI1F_ED?

使用特权

评论回复
15
zchong| | 2012-5-8 12:35 | 只看该作者
香主呢

使用特权

评论回复
16
香水城| | 2012-5-8 14:10 | 只看该作者
《《《《发生捕获时复位计数器》》》》这个如何实现?通过TI1-->TI1F_ED?
zchong 发表于 2012-5-5 21:53


是的:通过TI1-->TI1F_ED。

PWM Input mode.GIF (43.99 KB )

PWM Input mode.GIF

使用特权

评论回复
17
王晨2014| | 2014-11-3 13:20 | 只看该作者
不明白“ IC1的捕获寄存器捕获PWM的高电平周期”这句话在哪个里面体现了? 我只配置了通道2的输入捕获功能呀,为什么 通道1TIM_GetCapture1(TIM2)捕获了?

使用特权

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

本版积分规则

19

主题

1019

帖子

13

粉丝