查看: 4023|回复: 0

[S32] S32K144的FTM模块捕获50KHZ的PWM的脉宽失败

[复制链接]
  • TA的每日心情
    无聊
    2024-7-18 16:39
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    2

    主题

    15

    帖子

    0

    注册会员

    Rank: 2

    积分
    152
    最后登录
    2025-4-9
    发表于 2019-5-30 21:14:32 | 显示全部楼层 |阅读模式
         最近在调试SENT接口的解码,要对一段不同宽度的脉冲信号进行解码,为此需要测出每一个脉冲即一个周期的宽度,故使用S32K144的FTM模块输入捕捉功能,利用捕捉中断捕捉两次上升沿之间即一个周期的宽度。但在实际操作中发现当脉冲的周期太短即频率较高时捕获到的数据有误,以捕获上升沿为例,要捕获一个周期的脉冲,需要捕获两个上升沿。在捕获一段频率为50KHZ的脉冲时,在捕获到第一个上升沿之后进入中断,获取了一次CnV中的值,但没有捕获到紧邻的下一个上升沿,而是在经过两三个周期之后才捕获到下一个上升沿。而捕获5KHZ频率的脉冲时,则可以正常的捕捉到两个上升沿之间的脉冲。硬件使用的是NXP官方的EVB,软件是S32DS 2018,使用PE配置。求助各位大大帮帮忙,会是什么问题?下面是我写的中断方面的代码和PE的配置。

                                                             M6]HXL@8`769K3DB$]2J%KY.png

                                                          

    void FTM1_Ch2_Ch3_IRQHandler(void)
            {

                   ///////////////////////////////////////////FTM1_CH2中断////////////////////////////////////////////////////////////
                        if((FTM1->CONTROLS[2].CnSC&FTM_CnSC_CHF_MASK)==FTM_CnSC_CHF_MASK)//判断通道标志位状态
                        {
                                                     FTM1->CONTROLS[2].CnSC &= ~FTM_CnSC_CHF_MASK; // clear channel flag
                                                     FTM1_CH2_OldRising= FTM1_CH2_Rising;//将上一次获取的数据保存
                                                     FTM1_CH2_Rising=FTM1->CONTROLS[2].CnV;//获取当前通道值寄存器的值
                                                     if(FTM1_CH2_OldRising< FTM1_CH2_Rising)
                                                    {
                                                       IC_FTM1_CH2_F_Num=FTM1_CH2_Rising-FTM1_CH2_OldRising;
                                                    }
                                                    else
                                                    {
                                                      IC_FTM1_CH2_F_Num=(65535-FTM1_CH2_OldRising)+FTM1_CH2_Rising;
                                                    }
                                                    IC_FTM1_CH2_F_Num=IC_FTM1_CH2_F_Num*125/20000;
                                                    SendChar(IC_FTM1_CH2_F_Num);
                        }

    }

    我知道答案 目前已有0人回答
    O%_QARCM]%KBXMA~L3WM497.png
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-10 14:05 , Processed in 0.082948 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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