查看: 1151|回复: 4

[求助] frdm kv31f FTM fault 設置

[复制链接]
  • TA的每日心情

    2021-8-30 18:28
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    3

    主题

    13

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    467
    最后登录
    2022-9-8
    发表于 2021-7-29 10:34:49 | 显示全部楼层 |阅读模式
    我使用SDK的simple_pwm實驗ftm fault 功能,設置完成後沒有任何反應,可以請問哪個環節設置錯了?
    int main(void)
    {
        ftm_config_t ftmInfo;
        ftm_chnl_pwm_signal_param_t ftmParam;
        ftm_pwm_level_select_t pwmLevel = kFTM_HighTrue;

        ftm_fault_param_t fault;

        /* Configure ftm params with frequency 24kHZ */
        ftmParam.chnlNumber            = BOARD_FTM_CHANNEL;
        ftmParam.level                 = pwmLevel;
        ftmParam.dutyCyclePercent      = updatedDutycycle;
        ftmParam.firstEdgeDelayPercent = 0U;
        ftmParam.enableComplementary   = false;
        ftmParam.enableDeadtime        = false;

        fault.enableFaultInput=true;
        fault.faultLevel=false;
        fault.useFaultFilter=false;


        /* Board pin, clock, debug console init */
        BOARD_InitPins();
        BOARD_BootClockRUN();
        BOARD_InitDebugConsole();

        FTM_GetDefaultConfig(&ftmInfo);

        ftmInfo.faultMode=kFTM_Fault_AllChnlsAuto;
        FTM_SetupFaultInput(FTM0,kFTM_Fault_0,&fault);
        FTM_SetFaultControlEnable(FTM0,kFTM_Fault_0,true);
        /* Initialize FTM module */
        FTM_Init(BOARD_FTM_BASEADDR, &ftmInfo);

        FTM_SetupPwm(BOARD_FTM_BASEADDR, &ftmParam, 1U, kFTM_EdgeAlignedPwm, 24000U, FTM_SOURCE_CLOCK);

        FTM_StartTimer(BOARD_FTM_BASEADDR, kFTM_SystemClock);

    最佳答案

    Alan_3318a3 发表于 2021-8-3 11:57 目前可以使用fault功能,使用kFTM_Fault_AllChnlsAuto 如下圖。 但還有疑問,ftm_fault_mode_t中的kFTM_F ... 建议阅读参考手册的“Manual fault clearing”章节:then the chann ...
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20028
    最后登录
    2024-4-26
    发表于 2021-7-30 14:35:10 | 显示全部楼层
    楼主你好
    请问是否在pin_mux.c的函数中,通过配置ALTx将需要作为fault control功能的引脚配置该功能?以及开启对应PORT口的时钟门?
    FTM0_FLT0.jpg
    pin_mux.jpg
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-8-30 18:28
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    3

    主题

    13

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    467
    最后登录
    2022-9-8
     楼主| 发表于 2021-8-3 11:54:42 | 显示全部楼层
    目前可以使用fault功能,使用kFTM_Fault_AllChnlsAuto 如下圖。
    但還有疑問,ftm_fault_mode_t中的kFTM_Fault_AllChnlsMan怎麼操作?
    要如何回復成正常輸出PWM?
    是要透過中斷副程式清除Flag嗎?

    int main(void) {

            ftm_config_t ftmInfo;//timer struct
            ftm_chnl_pwm_signal_param_t ftmParam;//timer pwm struct

            ftm_fault_param_t fault;//timer fault struct

            /* Configure ftm params with frequency 24kHZ */
            ftmParam.chnlNumber            = kFTM_Chnl_0;
            ftmParam.level                 = kFTM_HighTrue;
            ftmParam.dutyCyclePercent      = 50;
            ftmParam.firstEdgeDelayPercent = 0U;
            ftmParam.enableComplementary   = false;
            ftmParam.enableDeadtime        = false;

            /*Configure fault param*/
            fault.enableFaultInput=true;
            fault.faultLevel=false;
            fault.useFaultFilter=false;

            /* Board pin, clock, debug console init */
            BOARD_InitBootPins();
            BOARD_InitBootClocks();
            BOARD_InitBootPeripherals();
            BOARD_InitDebugConsole();

            FTM_GetDefaultConfig(&ftmInfo);
            ftmInfo.faultMode=kFTM_Fault_AllChnlsMan;

            /* Initialize FTM module */
            FTM_Init(FTM0, &ftmInfo);
            /*Setup PWM param*/
            FTM_SetupPwm(FTM0, &ftmParam, 1U, kFTM_EdgeAlignedPwm, 20000U, FTM_SOURCE_CLOCK);
            /*Setup fault param*/
            FTM_SetupFaultInput(FTM0,kFTM_Fault_0,&fault);
            FTM_SetFaultControlEnable(FTM0,kFTM_Fault_0,true);//setup FTM0_Fault0
            /*Start timer*/
            FTM_StartTimer(FTM0, kFTM_SystemClock);
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-8-30 18:28
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    3

    主题

    13

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    467
    最后登录
    2022-9-8
     楼主| 发表于 2021-8-3 11:57:05 | 显示全部楼层
    小恩GG 发表于 2021-7-30 14:35
    楼主你好
    请问是否在pin_mux.c的函数中,通过配置ALTx将需要作为fault control功能的引脚配置该功能?以及 ...

    目前可以使用fault功能,使用kFTM_Fault_AllChnlsAuto 如下圖。
    但還有疑問,ftm_fault_mode_t中的kFTM_Fault_AllChnlsMan怎麼操作?
    要如何回復成正常輸出PWM?
    是要透過中斷副程式清除Flag嗎?

    int main(void) {

            ftm_config_t ftmInfo;//timer struct
            ftm_chnl_pwm_signal_param_t ftmParam;//timer pwm struct

            ftm_fault_param_t fault;//timer fault struct

            /* Configure ftm params with frequency 24kHZ */
            ftmParam.chnlNumber            = kFTM_Chnl_0;
            ftmParam.level                 = kFTM_HighTrue;
            ftmParam.dutyCyclePercent      = 50;
            ftmParam.firstEdgeDelayPercent = 0U;
            ftmParam.enableComplementary   = false;
            ftmParam.enableDeadtime        = false;

            /*Configure fault param*/
            fault.enableFaultInput=true;
            fault.faultLevel=false;
            fault.useFaultFilter=false;

            /* Board pin, clock, debug console init */
            BOARD_InitBootPins();
            BOARD_InitBootClocks();
            BOARD_InitBootPeripherals();
            BOARD_InitDebugConsole();

            FTM_GetDefaultConfig(&ftmInfo);
            ftmInfo.faultMode=kFTM_Fault_AllChnlsMan;

            /* Initialize FTM module */
            FTM_Init(FTM0, &ftmInfo);
            /*Setup PWM param*/
            FTM_SetupPwm(FTM0, &ftmParam, 1U, kFTM_EdgeAlignedPwm, 20000U, FTM_SOURCE_CLOCK);
            /*Setup fault param*/
            FTM_SetupFaultInput(FTM0,kFTM_Fault_0,&fault);
            FTM_SetFaultControlEnable(FTM0,kFTM_Fault_0,true);//setup FTM0_Fault0
            /*Start timer*/
            FTM_StartTimer(FTM0, kFTM_SystemClock);
    圖片1.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20028
    最后登录
    2024-4-26
    发表于 2021-8-4 09:51:03 | 显示全部楼层
    Alan_3318a3 发表于 2021-8-3 11:57
    目前可以使用fault功能,使用kFTM_Fault_AllChnlsAuto 如下圖。
    但還有疑問,ftm_fault_mode_t中的kFTM_F ...

    建议阅读参考手册的“Manual fault clearing”章节:then the channels output disabled by fault control is again enabled when the FAULTF bit is cleared and a new PWM cycle begins.根据你的需要清除FAULTF标志

    FTMx_MODE[FAULTM].jpg Manual fault clearing.jpg

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-26 12:31 , Processed in 0.137867 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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