查看: 2488|回复: 6

[求助] KEAZ128 FTM2输入捕捉问题

[复制链接]
  • TA的每日心情
    奋斗
    2021-12-3 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    24

    帖子

    0

    高级会员

    Rank: 4

    积分
    655
    最后登录
    2022-11-17
    发表于 2021-6-18 17:11:35 | 显示全部楼层 |阅读模式
    本帖最后由 星火融冰 于 2021-6-18 18:07 编辑

      想通过FTM2的ch0和ch1来测量两个脉冲上升沿之间的时间间隔,如下图:黄色脉冲和蓝色脉冲(脉冲高电平的时间在500ns左右)。其中FTM2时钟设为40Mhz。

    1-1.png 1-2.png
    当蓝色脉冲只有1个时,可正常测出两个脉冲上升沿间的间隔,在48.5us左右。


    当蓝色脉冲有连续3个时,想要测量黄色脉冲上升沿和第1个蓝色脉冲上升沿间的时间间隔,结果测出的值为第1个黄色脉冲和第3个蓝色脉冲上升沿
    间的间隔,为50.7us左右。
    问题:CH0,CH1输入滤波值大小都试过,都不行,应该是蓝色脉冲上升沿只进入了1次通道中断?原理上蓝色脉冲可以连续进入3次通道中断吧,怎么解决这个问题呢??
    2-1.png 2-2.png
    我知道答案 目前已有6人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20015
    最后登录
    2024-4-25
    发表于 2021-6-21 11:09:14 | 显示全部楼层
    本帖最后由 小恩GG 于 2021-6-21 11:11 编辑

    楼主你好根据参考手册“26.4.4 Input Capture mode”描述可知,只要当前配置得是输入捕获模式,一旦匹配的边沿信号发生就会立刻把当前的FTM Counter值捕获到CnV寄存器里去。所以如果你CH1来3个脉冲,其实会触发3次CH1的中断。
    26.4.4 Input Capture mode.jpg 你这个情况不适用Filter功能,而是应该在中断服务函数里软件实现。
    比如:
    CH1只计算CH0之后的第一次值:CH0触发中断后设置一个软件标志位,CH1触发中断后根据标志判断是否计算。



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-12-3 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    24

    帖子

    0

    高级会员

    Rank: 4

    积分
    655
    最后登录
    2022-11-17
     楼主| 发表于 2021-6-21 11:39:40 来自手机 | 显示全部楼层
    首先,谢谢。我设置滤波的目的是为了滤除杂波,当然设置的滤波时间比高电平500ns时间短。另外,中断里加软件标志的方法我也试过,从我测试的结果看,Ch1的3个上升沿好像只进入了一次中断,不知道是不是这3个上升沿离得太近或者中断里处理数据时间过长的事
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-12-3 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    24

    帖子

    0

    高级会员

    Rank: 4

    积分
    655
    最后登录
    2022-11-17
     楼主| 发表于 2021-6-21 11:40:40 来自手机 | 显示全部楼层
    小恩GG 发表于 2021-6-21 11:09
    楼主你好根据参考手册“26.4.4 Input Capture mode”描述可知,只要当前配置得是输入捕获模式,一旦匹配的 ...

    首先,谢谢。我设置滤波的目的是为了滤除杂波,当然设置的滤波时间比高电平500ns时间短。另外,中断里加软件标志的方法我也试过,从我测试的结果看,Ch1的3个上升沿好像只进入了一次中断,不知道是不是这3个上升沿离得太近或者中断里处理数据时间过长的事
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20015
    最后登录
    2024-4-25
    发表于 2021-6-21 11:56:15 | 显示全部楼层
    本帖最后由 小恩GG 于 2021-6-21 11:57 编辑
    星火融冰 发表于 2021-6-21 11:40
    首先,谢谢。我设置滤波的目的是为了滤除杂波,当然设置的滤波时间比高电平500ns时间短。另外,中断里加 ...

    不好意思
    之前没注意到这3个脉冲间隔时间这么短
    关于是否处理时间过长,可以尝试在中断服务函数里别计算、只将CnV值赋给变量。之后就关闭CH1中断,这样就能看第一次进中断时读取到的值是否够及时。
    关于进了几次中断,可以在中断服务函数里软件计数判断。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-12-3 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    24

    帖子

    0

    高级会员

    Rank: 4

    积分
    655
    最后登录
    2022-11-17
     楼主| 发表于 2021-6-21 16:48:32 | 显示全部楼层
    小恩GG 发表于 2021-6-21 11:56
    不好意思
    之前没注意到这3个脉冲间隔时间这么短
    关于是否处理时间过长,可以尝试在中断服务函数里别计算、 ...

    试了试,还是不行。。中断处理函数如下。我的程序中还用到了一些其它中断,对FTM2这个不知道有影响没。
    FTM2_Task(void)
    {
            if((FTM_GetOverFlowFlag(FTM2))==FTM_SC_TOF_MASK)
            {
                    overflow++;
                    FTM_ClrOverFlowFlag(FTM2);
            }


            if(FTM_GetChannelFlag(FTM2,0)==FTM_CnSC_CHF_MASK)
            {

                    FTM_ClrChannelFlag(FTM2,0);
    TOF_start=FTM_GET_CxV(FTM2,0);
            }


            if(FTM_GetChannelFlag(FTM2,1)==FTM_CnSC_CHF_MASK)
            {
                    FTM_DisableChannelInt(FTM2,1);
                    FTM_ClrChannelFlag(FTM2,1);
                    TOF_stop=FTM_GET_CxV(FTM2,1);

            }

    }
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20015
    最后登录
    2024-4-25
    发表于 2021-6-21 17:22:01 | 显示全部楼层
    星火融冰 发表于 2021-6-21 16:48
    试了试,还是不行。。中断处理函数如下。我的程序中还用到了一些其它中断,对FTM2这个不知道有影响没。
    F ...

    本身进中断也有延时、其他更高优先级的中断也有影响:A Beginner’s Guide on Interrupt Latency - and Interrupt Latency of the Arm Cortex-M processors
    有没测试过关闭其他中断情况下,单独测试看看能不能读到第一次CnV的值?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 03:51 , Processed in 0.139400 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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