打印
[技术问题解答]

KE02Z:FTM双边沿捕获测脉冲周期(已解决)

[复制链接]
3861|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 FSL_TICS_A 于 2014-7-2 14:55 编辑

最近要用FTM的双边沿捕获功能测量脉冲周期,脉冲信号最低可到1HZ。FTM的时钟选用系统时钟,频率是20MHZ,由于FTM的计数器是16位的,所以信号周期会超过最大定时周期。我准备用记录溢出次数的方法解决此问题,但是有一种临界条件我比较担心,不知道如何解决,希望得到大家的帮助,临界条件如下:
计数器到达最大值0XFFFF后,当检测到待测脉冲的后边沿,准备保存当前计数值到CnV寄存器时,如果正好此时时钟的上升沿同时到来,那么会发生什么结果呢?  保存的计数值是0xFFFF 还是 溢出值0呢? 计数器溢出中断和 边沿捕获中断哪个会被先响应呢?
在边沿捕获中断响应函数中能够检测到计数溢出溢出标志位(TOF)?

相关帖子

沙发
FSL_TICS_Robin| | 2014-6-9 16:12 | 只看该作者
楼主你好
首先你去读FTMx_CnV寄存器得到的值即是边沿发生瞬间(稍有硬件延时见参考手册)的值。
FTMx_CNT寄存器中的值是根据FTM时钟源连续增加的counter值。

使用特权

评论回复
板凳
FSL_TICS_Robin| | 2014-6-9 16:20 | 只看该作者
本帖最后由 FSL_TICS_Robin 于 2014-6-9 16:46 编辑
FSL_TICS_Robin 发表于 2014-6-9 16:12
楼主你好
首先你去读FTMx_CnV寄存器得到的值即是边沿发生瞬间(稍有硬件延时见参考手册)的值。
FTMx_CNT寄 ...

上面提到的硬件延时在参考手册中有提到,所以如果你是0xFFFF时发生的边沿,实际捕捉到的CnV就是顺延3个system clock后的counter值。如果你开启Filter for Input Capture mode那么这个延时就会根据信号情况而定。


(改成MKE02Z64M20SF0RM手册内截图)

Input Capture mode.jpg (80.42 KB )

Input Capture mode.jpg

使用特权

评论回复
地板
FSL_TICS_Robin| | 2014-6-9 16:32 | 只看该作者
本帖最后由 FSL_TICS_Robin 于 2014-6-9 16:47 编辑

边沿捕获中断是根据CHnF标志产生的,这个CHnF通常(未开启捕捉滤波)是顺延3个system clock后被置位的。
计数器溢出中断是根据TOF标志产生的,这个TOF标志是在FTM counter 从MOD变到CNTIN时被置位的。

(改成MKE02Z64M20SF0RM手册内截图)

使用特权

评论回复
5
jiandan_w|  楼主 | 2014-6-9 16:41 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-9 16:20
上面提到的硬件延时在参考手册中有提到,所以如果你是0xFFFF时发生的边沿,实际捕捉到的CnV就是顺延3个sy ...

谢谢您的回答,手册这部分我研究过,刚才我的问题描述的不是很准确,问题准确说是保存Cnv,置标志位及产生中断时,如果下一个时钟上升沿到来,是否会产生问题? 或者说这个处理过程是否能够保证在一个时钟周期内完成? 如图。

FTM picture.PNG (101.03 KB )

FTM picture.PNG

使用特权

评论回复
6
FSL_TICS_Robin| | 2014-6-10 18:38 | 只看该作者
本帖最后由 FSL_TICS_Robin 于 2014-6-10 19:39 编辑
jiandan_w 发表于 2014-6-9 16:41
谢谢您的回答,手册这部分我研究过,刚才我的问题描述的不是很准确,问题准确说是保存Cnv,置标志位及产 ...

有一种临界情况可能会发生:
比如FTM counter 已经很接近MOD值,此时信号被捕捉到置起CHnF同时引起中断。在CHnF被置1到进入捕捉中断前有一段时间(这个时间由 Cortex M0+的interrupt latency 以及 当前是否有更高优先级中断正在执行 决定),如果这段时间内counter来一个clock将导致TOF溢出标志也被置位。
这种情况下捕获中断标志先于溢出中断被置1,但是在FTMx中断里去判断TOF溢出中断标志也为1。这样情况的TOF应该不能加上一个FTMx_MOD的周期。

不过你的待捕捉频率1HZ,FTM counter的时钟源完全可以用更低的频率,否则溢出中断会过多。
FTM counter降频后,如果counter增加所需的时间大于进中断时间就可以了。

使用特权

评论回复
7
jiandan_w|  楼主 | 2014-6-13 13:52 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-10 18:38
有一种临界情况可能会发生:
比如FTM counter 已经很接近MOD值,此时信号被捕捉到置起CHnF同时引起中断。 ...

好的,非常感谢!

那在这种临界情况下,捕获的计数值应该是MOD值吧,不应该是0(溢出后的计数值值)吧?

使用特权

评论回复
8
FSL_TICS_Robin| | 2014-6-13 14:05 | 只看该作者
jiandan_w 发表于 2014-6-13 13:52
好的,非常感谢!

那在这种临界情况下,捕获的计数值应该是MOD值吧,不应该是0(溢出后的计数值值)吧? ...

如果不开启输入捕捉滤波器,那么捕获到CnV值就是脉冲边沿实际发生后3个system clock时刻的counter值。

使用特权

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

本版积分规则

4

主题

16

帖子

0

粉丝