打印
[资料分享与下载]

kinetis定时器FTM详解

[复制链接]
楼主: niuyaliang
手机看帖
扫描二维码
随时随地手机跟帖
141
niuyaliang|  楼主 | 2015-2-28 16:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
如果出现电机振动,则会出现如下波形。

正交解码系统框图如下所示

在正交解码模式下,计数器的时钟源来自外部的A相和B相输入。
A相和B相的极性确定以后,则通过QUADMODE位设置加减计数模式。
如果QUADMODE=1,B相输入值用于指示计数方向,A相输入用于计数,FTM计数器在A相输入的每个上升沿进行计数,累加或递减由B相电平决定。如下图所示。如果采用旋转编码器,则B相信号可由编码器输出的AB相通过D触发器后输入。

使用特权

评论回复
142
niuyaliang|  楼主 | 2015-2-28 16:18 | 只看该作者
DMODE=1时计数模式
如果QUADMODE=0,则计数方向由AB相之间的关系决定,计数频率由A相B相输入信号决定。当A相或B相的信号出现跳变,即可触发FTM计数器改变。在这种模式下,只需要把旋转编码器的AB相输出直接接到FTM的AB相输入即可。

使用特权

评论回复
143
niuyaliang|  楼主 | 2015-2-28 16:18 | 只看该作者
在QUADMODE=0时,只要满足以下任何一个条件,计数器即加1
A相出现上升沿时,B相为低电平;
B相出现上升沿时,A相为高电平;
B相出现下降沿时,A相为低电平;
A相出现下降沿时,B相为高电平。

使用特权

评论回复
144
niuyaliang|  楼主 | 2015-2-28 16:18 | 只看该作者
在QUADMODE=0时,只要满足以下任何一个条件,计数器即减1
A相出现上升沿时,B相为高电平;
B相出现上升沿时,A相为低电平;
B相出现下降沿时,A相为高电平;
A相出现下降沿时,B相为低电平。

使用特权

评论回复
145
niuyaliang|  楼主 | 2015-2-28 16:19 | 只看该作者
如果计数溢出,可能为正向溢出,也可能为反向溢出。正向溢出时,计数器累加计数到MOD后,即返回到CNTIN,这时TOF置位,而TOFDIR位也置1,表示正向溢出。反向溢出时,即计数器递减计数,从CNTIN变为MOD时,TOF置1,但TOFDIR为0,表示反向溢出。

使用特权

评论回复
146
niuyaliang|  楼主 | 2015-2-28 16:19 | 只看该作者
正交解码模式初始化例程如下,该例程使用A10和A11引脚输入作为旋转编码器的A相和B相输入。
[plain] view plaincopy
void FTM2_QUAD_Iint(void)  
{  
         PORTA_PCR10= PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能  
         PORTA_PCR11= PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能  
         SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM2时钟  
         FTM2_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
         FTM2_QDCTRL|=FTM_QDCTRL_QUADMODE_MASK;//AB相同时确定方向和计数值  
         FTM2_CNTIN=0;//FTM0计数器初始值为0  
         FTM2_MOD=65535;//结束值  
FTM2_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM2正交解码模式  
         FTM2_MODE |= FTM_MODE_FTMEN_MASK;//FTM2EN=1   
         FTM2_CNT=0;  
}  

使用特权

评论回复
147
niuyaliang|  楼主 | 2015-2-28 16:20 | 只看该作者
在周期性定时中断服务程序中,读取FTM2_CNT的值并清0计数值即可得到当前的转速,使用int变量保存,如为正数则为正转,负数则为反转。定时中断处理程序入下。

使用特权

评论回复
148
sltian09| | 2015-6-25 15:42 | 只看该作者
楼主问一下如下的周期是如何计算出来的呢,能不能详细说一下:
FTM0_MOD=37499;//结束值,周期为(MOD-CNTIN+1)*时钟周期=10ms  
FTM0_C2V=5625;//高电平1.5ms  
FTM0_C3V=20000;


使用特权

评论回复
149
追逐浪花| | 2015-6-25 21:25 | 只看该作者
谢谢楼主的分享,非常有用

使用特权

评论回复
150
quray1985| | 2015-6-26 07:20 | 只看该作者
谢谢楼主的详细分析,挺有帮助的

使用特权

评论回复
151
cowboy2014| | 2015-6-26 07:28 | 只看该作者
如果再配上图的说明就更好了

使用特权

评论回复
152
sltian09| | 2015-6-27 11:44 | 只看该作者
楼主及各位大侠帮我看一下 KE06的 FTM EPWM为什么打不出波形,完全按照手册配置的,能提点建议或者指点一下吗?不甚感激啊!!

main()
{
    Clk_Init(); //system bus clock 20M       
    SIM_PINSEL1 |=SIM_PINSEL1_FTM2PS0(0);     
    SIM_SCGC |=SIM_SCGC_FTM2_MASK ;               
    FTM2_MODE |= FTM_MODE_WPDIS_MASK;     
   FTM2_COMBINE=0;                                       
   FTM2_SC=0x09;                                       
   FTM2_C3SC |= FTM_CnSC_ELSB_MASK;
   FTM2_C3SC &= ~FTM_CnSC_ELSA_MASK;               
   FTM2_C3SC |= FTM_CnSC_MSB_MASK;
   FTM2_MODE |= ~1;               
   FTM2_OUTMASK =~FTM_OUTMASK_CH0OM_MASK;
   FTM2_CNTIN=0x0000;       
  FTM2_MOD=9999;                               
  FTM2_C0V=5000;
}

不胜感激啊!!!!!!!!

使用特权

评论回复
153
大苏牙| | 2015-6-27 14:55 | 只看该作者
谢谢楼主的详细介绍

使用特权

评论回复
154
仙女山| | 2015-6-27 21:16 | 只看该作者
非常有用的帖子,楼主代理ST的芯片吗

使用特权

评论回复
155
跟屁虫| | 2015-6-28 07:47 | 只看该作者
谢谢楼主的分享,能整成一个PDF就好了

使用特权

评论回复
156
西门扫雪| | 2015-6-28 17:39 | 只看该作者
FTM模块是一个多功能定时器模块

使用特权

评论回复
157
quray1985| | 2015-6-28 21:46 | 只看该作者
FTM模块是一个多功能定时器模块,主要功能有,PWM输出、输入捕捉、输出比较、定时中断、脉冲加减计数、脉冲周期脉宽测量。

使用特权

评论回复
158
ccw1986| | 2015-6-28 22:00 | 只看该作者
FTM模块的时间基准来自一个16位的计数器,该计数器的值可读取,即可作为无符号数对待,也可作为有符号数的补码对待。

使用特权

评论回复
159
cxl894688582| | 2015-9-11 21:47 | 只看该作者
介绍的很详细,多谢楼主

使用特权

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

本版积分规则