打印
[汽车MCU – KEA]

【玩转KEA】官方实验例程FTM模块

[复制链接]
7493|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 FSL_FAE_REMI 于 2014-7-24 11:52 编辑

         FTM模块(The FlexTimer module)的主要功能有输入捕捉、输出比较和产生PWM信号来驱动电机和进行能量管理。
       本实验主要是通过FTM模块的计数器功能,分别对FTM2模块的0123四个通道的FTM2_CnV寄存器设置不同的输出匹配的值,分别为15400100ms 30800200ms)、46200300ms)、 61600400ms)。当计数器上升计数到与对应的FTM2_CnV寄存器的设定值相等时,对应通道上产生一次中断。然后通过中断,对通道的引脚电平进行翻转,计数器重新计数。这样相当于产生了四个不同周期的PWM信号来控制KEA128开发板上的4LED灯的点亮与熄灭。
芯片引脚与LED电路如下图所示。



设置FTM2_CnV寄存器的值代码如下:
main.c文件中:
FTM_Init();                                                                       /* Initialize the FTM module */
     FTM_SetPeriod(0, 15400); /* Interrupt every 15400 counts,  equal to every 100 ms */                                                         
     FTM_SetPeriod(1, 30800); /* Interrupt every 30800 counts,  equal to every 200 ms */                                 
     FTM_SetPeriod(2, 46200); /* Interrupt every 46200 counts,  equal to every 300 ms */                                             
     FTM_SetPeriod(3, 61600); /* Interrupt every 61600 counts, equal to every  400 ms */
FTM.c文件中:
void FTM_SetPeriod(UINT8 ch, UINT32 per)
{
     period[ch] = per;
     FTM2_C0V = FTM_CnV_VAL(period[0]) ;
     FTM2_C1V = FTM_CnV_VAL(period[1]) ;   
     FTM2_C2V = FTM_CnV_VAL(period[2]) ;
     FTM2_C3V = FTM_CnV_VAL(period[3]);
}
其中:FTM_CnV_VAL为赋值函数,其设定可以在SKEAZ1284.h文件中查询含义。


引脚电平跳变的代码如下:
main.c文件中:
void FTM_Interrupt(UINT8 ch)
{
                 switch(ch)
                 {
                 case 0:
                             LED0_TOGGLE;
                 break;
                 case 1:
                             LED1_TOGGLE;         
                 break;
                 case 2:
                             LED2_TOGGLE;         
                 break;
                 case 3:
                             LED3_TOGGLE;         
                 break;
                 }
}
GPIO.h文件中:
#define OUTPUT_TOGGLE(port,register_num)   XOUTPUT_TOGGLE(port,register_num)
#define XOUTPUT_TOGGLE(port,register_num)    GPIO##port##_PTOR|=1<<register_num

TRK-KEA128_LABTS2.zip (343.24 KB)
     




评论
W1432788507 2018-1-16 19:06 回复TA
感谢,正在学习 

相关帖子

沙发
FSL_FAE_STEVE| | 2014-7-24 11:51 | 只看该作者
感谢楼主的分享!

使用特权

评论回复
板凳
FSL_TICS_ZJJ| | 2014-7-24 13:35 | 只看该作者
支持楼主的原创分享!

使用特权

评论回复
地板
663208879| | 2014-9-16 16:23 | 只看该作者
想问下 这个 100、200、300、400ms所对应的值是怎么算出来的

使用特权

评论回复
5
FSL_TICS_Robin| | 2014-9-16 16:43 | 只看该作者
663208879 发表于 2014-9-16 16:23
想问下 这个 100、200、300、400ms所对应的值是怎么算出来的

既然是FTM的counter个数,那么肯定和FTM counter频率有关。
你可以查一下FTM counter的频率在此程序中设置成了多少。

使用特权

评论回复
6
663208879| | 2014-9-16 17:24 | 只看该作者
FTM2_SC |= FTM_SC_PS(7);        /* Select Preescaler in this case 128. 20 Mhz /128 =156.25 Khz. */
                                /* Counter increase by one every 6.4 us */
FTM2_SC |= FTM_SC_CLKS(1);      /* FTM2 use system clock */

以上是例子上对定时器的配置,FTM counter 是156.25Khz(6.4us)   15400 * 6.4us = 98.560ms  ,所以不知道这个100MS是怎么算出来的

使用特权

评论回复
7
FSL_TICS_Robin| | 2014-9-16 17:27 | 只看该作者
663208879 发表于 2014-9-16 17:24
FTM2_SC |= FTM_SC_PS(7);        /* Select Preescaler in this case 128. 20 Mhz /128 =156.25 Khz. */
                                /*  ...

手头没有这块开发板呢暂时,请问你用示波器测试LED引脚电压波形是准确的100ms吗?

使用特权

评论回复
8
663208879| | 2014-9-16 20:45 | 只看该作者
用示波器看确实是100ms

使用特权

评论回复
9
FSL_TICS_Robin| | 2014-9-17 15:02 | 只看该作者
663208879 发表于 2014-9-16 17:24
FTM2_SC |= FTM_SC_PS(7);        /* Select Preescaler in this case 128. 20 Mhz /128 =156.25 Khz. */
                                /*  ...

这注释感觉蛮奇怪的嘛
建议你利用PTH2引脚上的BUSOUT功能输出Bus Clock并用示波器观察一下。
SIM_SOPT0寄存器的CLKOE可以用于使能该引脚功能。

FTM counter的时钟源从你程序配置来看就是选择的这个FTM / PWT时钟除以128

这样一来你就可以根据DIV1\DIV2\DIV3的值以及测得Bus Clock频率得知FTM / PWT时钟了。




使用特权

评论回复
10
lingyun1| | 2015-6-30 15:28 | 只看该作者
完全没看懂这注释是什么意思

使用特权

评论回复
11
lingyun1| | 2015-6-30 15:28 | 只看该作者
完全没看懂这注释是什么意思,这128.2MHZ是怎么来的啊?

使用特权

评论回复
12
lingyun1| | 2015-6-30 15:30 | 只看该作者
完全没看懂这注释是什么意思,这128.2MHZ是怎么来的啊?

使用特权

评论回复
13
VB2015| | 2015-9-24 20:02 | 只看该作者
有没有用过FTM0,或者FTM1啊,我这边用的KEAZ128,FTM2模块的8个通道都能按设计输出指定的PWM脉冲波,但FTM0,FTM1的2个通道完全不行。求高手指点哦

使用特权

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

本版积分规则

4

主题

15

帖子

4

粉丝