打印
[资料分享与下载]

kinetis定时器FTM详解

[复制链接]
楼主: niuyaliang
手机看帖
扫描二维码
随时随地手机跟帖
101
niuyaliang|  楼主 | 2015-2-28 16:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
FTMPWM装载寄存器(FTMx_PWMLOAD)
使能PWM的自动载入功能,当FTM计数计数到MOD设定值并变化到下一个值或该通道设置为输出比较且比较成功时,MOD、CNTIN、C(n)V、C(n+1)V载入缓冲器中的值。

使用特权

评论回复
102
niuyaliang|  楼主 | 2015-2-28 16:05 | 只看该作者
LDOK:载入使能。
CHnSEL:载入时是否包括通道n
CHnSEL=0:不包括;
CHnSEL=1:包括。

使用特权

评论回复
103
niuyaliang|  楼主 | 2015-2-28 16:05 | 只看该作者
1.5.3FTM功能详解
FTM模块的时钟
FTM模块的核心是一个16位计数器,该计数器的时钟来源可设置(由FTMx_SC寄存器中的CLKS设置),可来自总线时钟(CLKS=01),也可来自MCG模块的MCGFFCLK,对时钟源可进行分频(由FTMx_SC寄存器中的PS设置)。

使用特权

评论回复
104
niuyaliang|  楼主 | 2015-2-28 16:06 | 只看该作者
如果使用固定频率时钟,即fixed frenquency clock,也就是MCGFFCLK,则需要在MCG模块中设置。MCG模块提供的MCGFFCLK,可以为其它片上周边设备提供时钟,该时钟可由内部慢速参考时钟提供或外部晶振,且由FLL分频后提供。MCGFFCLK由C1_IREFS位设置来自内部32K还是来自外部经过FDIV分频后的时钟,输出到MCGFFCLK还要2分频一次。
MCGFFCLK用于局部总线时钟同步,而且不得大于MCGOUTCLK的1/8。且该时钟在MCG处于BLPI模式和STOP模式下无效。

使用特权

评论回复
105
niuyaliang|  楼主 | 2015-2-28 16:06 | 只看该作者
一般情况下,只要不是对外部计数功能,我们都会采用Bus Clock为FTM提供时钟。

使用特权

评论回复
106
niuyaliang|  楼主 | 2015-2-28 16:06 | 只看该作者
FTM模块的计数模式
FTM模块在时钟确定后,计数器计数,默认情况下,对分频后输入时钟进行递增无符号计数。计数器初始值由FTMx_CNTIN指定。当一直计数到达FTMx_MOD寄存器的设定值时,TOF置位。计数器回到初始值,循环往复。如下图所示,计数器从0计数到3,循环计数。计数周期=(MOD-CNTIN+1)*时钟周期。

使用特权

评论回复
107
niuyaliang|  楼主 | 2015-2-28 16:07 | 只看该作者


初始值也可是负数,例如CNTIN=0xFFFC(补码-4),MOD=4,则计数器从-4计数到4,循环计数。当CNTIN的最高位,即CNTIN[15]=1时,初始值作为负数对待,否则视为正数。

使用特权

评论回复
108
niuyaliang|  楼主 | 2015-2-28 16:07 | 只看该作者
FTM计数时,建议MOD值必须大于CNTIN值,编程时需注意。如果MOD==CNTIN,则计数值一直保持MOD值,且TOF位一直置1。
当QUADEN=0(非正交解码模式)且CPWMS=0(加法计数)时,计数器为加法计数,如果设置CPWMS=1,则进入先加后减计数模式。(中心对齐PWM必须将该位置1)。
在先加后减计数模式下,假设CNTIN=0,MOD=4,则计数过程如下

在该模式下,计数周期=2*(MOD-CNTIN),当计数值从MOD变为MOD-1时,TOF置位。
如FTMEN=0,此时FTM模块功能等同于S08的TPM模块,此时无论MOD=0或者MOD=0XFFFF,此时计数器为一个自由运行的16位计数器。
如FTMEN=1,且QUADEN=0、CPWMS=0时,此时只有MOD=0xFFFF时,才可作为一个自由运行的计数器。

使用特权

评论回复
109
niuyaliang|  楼主 | 2015-2-28 16:07 | 只看该作者
任何对FTM计数器的写入操作,都会复位计数器,计数器的值重新回到CNTIN指定值。也可以使用FTM的同步功能,让计数器重新回到初值,各通道输出也回到初始值。

使用特权

评论回复
110
niuyaliang|  楼主 | 2015-2-28 16:07 | 只看该作者
FTMx_CONF寄存器中的NUMOF[4:0]可设置TOF置位的频率。默认情况下,即NUMOF[4:0]=0,每个计数周期,TOF置位一次,如果NUMOF=n,(n<32),则每n+1个周期,TOF置位一次。

使用特权

评论回复
111
niuyaliang|  楼主 | 2015-2-28 16:08 | 只看该作者
边沿对齐PWM模式
PWM输出实际上利用的就是FTM的输出比较的功能。当QUADEN = 0,DECAPEN = 0,COMBINE= 0,CPWMS = 0,MSnB = 1时,FTM工作在EPWM模式下,即边沿对齐模式。可用于产生舵机和电机的PWM控制信号。在这个模式下,FTM计数器工作方式和计数模式相同,默认为加法计数,计数到MOD值后自动返回CNTIN值。PWM信号的周期和计数器计数周期有关,PWM周期=(MOD-CNTIN+1)*时钟周期。

使用特权

评论回复
112
niuyaliang|  楼主 | 2015-2-28 16:08 | 只看该作者
PWM信号高低电平切换的时刻,则由CnV值决定,当计数器累加计数到CnV值相等时,PWM信号则翻转。直到计数到MOD值,一个周期结束,信号回到初始值。这种模式的原理和输出比较模式是相同的,当比较成功时,也就是FTM计数值=CnV时,CHnF标志也会置1。PWM信号的输出可以时左对齐(信号先高后低)也可以是右对齐(信号先低后高)。左右对齐由ELSnB:ELSnA决定,若ELSnB:ELSnA=10则是左对齐模式,若ELSnB:ELSnA=X1则是右对齐模式。以左对齐为例,高电平持续时间=(CnV-CNTIN)*时钟周期。

使用特权

评论回复
113
niuyaliang|  楼主 | 2015-2-28 16:08 | 只看该作者
在边沿对齐PWM模式中,一般PWM周期不变,通过改变CnV的值以改变占空比,如改变CnV的值,则新的值并不会立刻生效,而是到一个周期结束,FTM计数器从MOD变为CNTIN时,CnV值才生效。

使用特权

评论回复
114
niuyaliang|  楼主 | 2015-2-28 16:08 | 只看该作者
EPWM例程如下,在该例程中,总线时钟为60MHz,经过FTM分频到3.75MHz,FTM递增计数,周期10ms,高电平事件1.5ms。使用FTM0_CH3通道,由PTA6引脚输出。

使用特权

评论回复
115
cowboy2014| | 2015-2-28 16:09 | 只看该作者
谢谢你的分享。。。

使用特权

评论回复
116
niuyaliang|  楼主 | 2015-2-28 16:09 | 只看该作者

使用特权

评论回复
117
niuyaliang|  楼主 | 2015-2-28 16:10 | 只看该作者
中心对齐PWM模式
中心对齐PWM模式和边沿对齐PWM模式唯一不同之处在于CPWMS = 1,即此时计数器工作模式为先加后减模式,计数器累加到CnV时,信号翻转,直到计数到MOD值后开始递减计数,再次到达CnV时,信号再次翻转,然后递减到CNTIN值,一个周期结束。同样的MOD、CNTIN、CnV,值,CPWM的周期是EPWM的两倍,但占空比不变。

使用特权

评论回复
118
niuyaliang|  楼主 | 2015-2-28 16:10 | 只看该作者
在中心对齐PWM模式下,ELSnB:ELSnA 的作用和EPWM相同,即ELSnB:ELSnA=10信号输出先高后低,若ELSnB:ELSnA=X1信号输出先低后高。
输入捕捉模式

使用特权

评论回复
119
niuyaliang|  楼主 | 2015-2-28 16:10 | 只看该作者
FTM的输入捕捉模式可捕捉外部信号的正跳变或负跳变,可替代外部中断使用。和一般外部中断不同的是,输入捕捉功能不但可以在捕捉到特定的跳变时产生中断,而且输入引脚可以启用滤波功能,关键是,输入捕捉功能在捕捉到信号时,还可以记录捕捉的时刻,即捕捉发生时,FTM计数器的值会记录在CnV寄存器中。
输入捕捉模式下,DECAPEN = 0(不启用双边呀捕捉),COMBINE = 0(各通道独立),CPWMS= 0(计数器累加计数),MSnB:MSnA = 0:0(输入捕捉模式)。

使用特权

评论回复
120
niuyaliang|  楼主 | 2015-2-28 16:11 | 只看该作者
此时,捕捉什么样的信号则由ELSnB:ELSnA决定。
ELSnB:ELSnA=01:捕捉上升沿;
ELSnB:ELSnA=10:捕捉下降升沿;
ELSnB:ELSnA=11:捕捉上升沿或下降沿。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则