FSL_TICS_ZJJ 发表于 2014-5-21 17:49:12

【经验分享】kinetis K系列FTMEN非零情况下修改MOD值

本帖最后由 FSL_TICS_Robin 于 2014-7-18 14:24 编辑

【经验分享】kinetis K系列FTMEN非零情况下修改MOD值
一问题描述   
有些网友反映,在kinetis K(K20D50M)系列的FTMEN非零情况下修改MOD值失败,其实在FTMEN非零情况下修改MOD值是最简单的,它不同于FTMEN=1,需要做MOD寄存器同步更新。只需要直接修改MOD值,等到FTM counter满足了相应的条件之后,就可以更新MOD值。
二 问题解答
根据用户手册如下:


如果FTMEN=0,则按照PWM的模式有两种情况,CPWM和非CPWM, 如果是CPWM,则当MOD寄存器写入数据并且FTM的计数值从MOD到MOD-1的时候,就会实现真实MOD的改变。
如果是非CPWM,则当MOD寄存器写入数据并且FTM的计数值从MOD到CNTIN的时候,就会实现真实MOD的改变。如果是free-runing,则就是则当MOD寄存器写入数据并且FTM的计数值从0XFFFF到0的时候,会实现真实MOD的改变。
为了便于网友测试,我这边使用CW的PE做了一个FTM的例程,PWM模式是EPWM,然后通过测试实现MOD的改变。使用的FTM模块是init_FTM.
三测试结果
   测试平台:FRDM_K20D50M
   PWM 模式: EPWM
测试目的:将MOD从6000变到5000.
时钟源:系统时钟并且2分频。
程序功能:MOD为6000时跑一段时间后将MOD改为5000并查看波形。
测试结果显示,能够将MOD改变到自己想要的值。

图1
Test1为改变MOD前读的值,test2为改变MOD后读的值,可以看到成功改到了5000。


图2
以上是实际测试的波形,可以看到后面的PWM的周期已经改变掉。
四 附件
附件为测试的代码,需要的网友可以拿去。
后面将会做一个同步修改MOD的经验分享。
**** Hidden Message *****




PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。

FSL_TICS_ZJJ 发表于 2014-5-21 17:51:21

后面会推出更多的经验分享帖,不足之处恳请指正,同时也欢迎大家分享自己的经验。

lcptw 发表于 2014-8-14 17:26:15

up学习FTM,功能太强大,太复杂啦。{:loveliness:}

浪里白条 发表于 2014-8-14 19:53:34

飞思卡尔的这个FlexTimer还是比较强大的

FSL_TICS_ZJJ 发表于 2014-8-15 08:46:28

lcptw 发表于 2014-8-14 17:26
up学习FTM,功能太强大,太复杂啦。

所以要慢慢学,还是很好用的。
而且有相关的应用笔记讲这个的。

ln08136207 发表于 2014-8-15 11:31:46

我没用到这个功能,也没遇到这个问题,不过下次说不定了,可以少走弯路。

FSL_TICS_ZJJ 发表于 2014-8-15 11:39:10

ln08136207 发表于 2014-8-15 11:31
我没用到这个功能,也没遇到这个问题,不过下次说不定了,可以少走弯路。 ...

对的,先看看知道有这个东西,下次用的时候需要再来看看。
如果有问题,可以直接发帖交流啊。

sblpp 发表于 2014-8-16 22:16:21

谢谢分享!
页: [1]
查看完整版本: 【经验分享】kinetis K系列FTMEN非零情况下修改MOD值