搜索
bottom↓
回复: 0

[TRK-KEA使用经验分享]KEA64 FTM 移相波形 学习过程

[复制链接]

出0入0汤圆

发表于 2015-11-15 12:23:22 | 显示全部楼层 |阅读模式
本帖最后由 cl1cl1cl1cl1 于 2015-11-15 12:25 编辑

KEA64看见官网介绍例程多是CW环境和KEIL下的例程,下了库 KEXX_DRIVERS_V1.2.1_DEVD 又是KE系列的虽说差不多,但要配置FTM组合不对称PWM还真有些不顺,而且debug也没有IAR方便(我用IAR的多些)。
找找IAR例程应该有KEA64系列的,就打开IAR的


接着




选择自定义文件夹,把FTM例子就下来了。
接着修改FTM的寄存器。

        FTM2_SC |= FTM_SC_TOIE_MASK;//打开TOIE中断  每次匹配中断

        SIM_SOPT &=~SIM_SOPT_NMIE_MASK;//将NMI禁止 用来复用FTM2_CH4
       
        FTM2_MODE   
          |= FTM_MODE_WPDIS_MASK //打开MODE  WPDIS位的写保护
          | FTM_MODE_FTMEN_MASK;//FTM 使能  1 自由运行计数器并且同步与 TPM 行为不同。
        FTM2_COMBINE =
          FTM_COMBINE_COMBINE0_MASK //组合通道(n = 0)  1 通道(n)和(n+1)组合。
                | FTM_COMBINE_COMP0_MASK //通道(n)互补(n = 0) 1 通道(n+1)输出与通道(n)输出互补。
                  | FTM_COMBINE_SYNCEN0_MASK //同步使能(n = 0) 1 使能该通道对中的 PWM 同步。
                        | FTM_COMBINE_DTEN0_MASK |//死区时间使能(n = 0) 1 使能该通道对中的死区时间插入。
                                          FTM_COMBINE_COMBINE1_MASK | FTM_COMBINE_COMP1_MASK | FTM_COMBINE_SYNCEN1_MASK | FTM_COMBINE_DTEN1_MASK
                                        |FTM_COMBINE_COMBINE2_MASK | FTM_COMBINE_COMP2_MASK | FTM_COMBINE_SYNCEN2_MASK | FTM_COMBINE_DTEN2_MASK
                                          ;     
        FTM2_C0SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
        FTM2_C1SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
        FTM2_C2SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
        FTM2_C3SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
        FTM2_C4SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
        FTM2_C5SC |= FTM_CnSC_ELSA_MASK |
          FTM_CnSC_MSA_MASK;  /* 组合PWM输出 高真脉冲(通道(n)匹配时置位,通道(n+1)匹配时清零) */
       
        FTM2_CNTIN = 10;//开始
        FTM2_MOD = 65500;//结束
       
        FTM_SetPeriod(0, 15625);                /* Interrupt every 15625 counts,  equal to every 100 ms */
        FTM_SetPeriod(1, 31250);            /* Interrupt every 31250 counts, equal to every 200 ms */
        FTM_SetPeriod(2, 46875);                /* Interrupt every 46875 counts, equal to every 300 ms */
        FTM_SetPeriod(3, 62500);                /* Interrupt every 62500 counts, equal to every 400 ms */



        FTM2_PWMLOAD = FTM_PWMLOAD_LDOK_MASK;//自动加载缓存值

        //FTM2_SC &= ~FTM_SC_CPWMS_MASK; //中心对齐 PWM 选择   1 FTM 计数器可工作在先增后减计数模式中。
                                                                        //0 FTM 计数器可工作在向上计数模式中。
        FTM2_SC |= FTM_SC_CPWMS_MASK; //中心对齐 PWM 选择   1 FTM 计数器可工作在先增后减计数模式中。
                                                                        //0 FTM 计数器可工作在向上计数模式中。
       
        //死区设置
        FTM2_DEADTIME |= FTM_DEADTIME_DTPS_MASK//系统时钟 0xc0  16分频
                                |FTM_DEADTIME_DTVAL(3);//20个时钟周期
       
       
        //0 FTM2 CH4 映射到 PTB4 上。默认  SIM_PINSEL = |
       
        FTM2_SC |= FTM_SC_CLKS(1); /*FTM2 use system clock*///时钟源选择 01 系统时钟

经过这些修改得到了我需要的带死区的PWM波形。


下面会加入AD 和 比较器功能串口modbus等代码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 03:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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