查看: 5428|回复: 0

[原创] 【玩转KEA】官方实验例程FTM模块

[复制链接]

该用户从未签到

10

主题

40

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2018-5-8
发表于 2016-1-21 10:44:34 | 显示全部楼层 |阅读模式
FTM模块(The FlexTimer module)的主要功能有输入捕捉、输出比较和产生PWM信号来驱动电机和进行能量管理。

本实验主要是通过FTM模块的计数器功能,分别对FTM2模块的0,1,2,3四个通道的FTM2_CnV寄存器设置不同的输出匹配的值,分别为15400(100ms) 、30800(200ms)、46200(300ms)、 61600(400ms)。当计数器上升计数到与对应的FTM2_CnV寄存器的设定值相等时,对应通道上产生一次中断。然后通过中断,对通道的引脚电平进行翻转,计数器重新计数。这样相当于产生了四个不同周期的PWM信号来控制KEA128开发板上的4个LED灯的点亮与熄灭。

芯片引脚与LED电路如下图所示。
   FTM1.png


FTM2.PNG


设置FTM2_CnV寄存器的值代码如下:
在main.c文件中:
  1. FTM_Init();                                                                       /* Initialize the FTM module */
  2.      FTM_SetPeriod(0, 15400); /* Interrupt every 15400 counts,  equal to every 100 ms */                                                         
  3.      FTM_SetPeriod(1, 30800); /* Interrupt every 30800 counts,  equal to every 200 ms */                                 
  4.      FTM_SetPeriod(2, 46200); /* Interrupt every 46200 counts,  equal to every 300 ms */                                             
  5.      FTM_SetPeriod(3, 61600); /* Interrupt every 61600 counts, equal to every  400 ms */
复制代码

在FTM.c文件中:
  1. void FTM_SetPeriod(UINT8 ch, UINT32 per)
  2. {
  3.      period[ch] = per;
  4.      FTM2_C0V = FTM_CnV_VAL(period[0]) ;
  5.      FTM2_C1V = FTM_CnV_VAL(period[1]) ;   
  6.      FTM2_C2V = FTM_CnV_VAL(period[2]) ;
  7.      FTM2_C3V = FTM_CnV_VAL(period[3]);
  8. }
复制代码
其中:FTM_CnV_VAL为赋值函数,其设定可以在SKEAZ1284.h文件中查询含义。


引脚电平跳变的代码如下:
在main.c文件中:
  1. void FTM_Interrupt(UINT8 ch)
  2. {
  3.                  switch(ch)
  4.                  {
  5.                  case 0:
  6.                              LED0_TOGGLE;
  7.                  break;
  8.                  case 1:
  9.                              LED1_TOGGLE;         
  10.                  break;
  11.                  case 2:
  12.                              LED2_TOGGLE;         
  13.                  break;
  14.                  case 3:
  15.                              LED3_TOGGLE;         
  16.                  break;
  17.                  }
  18. }
复制代码

在GPIO.h文件中:
  1. #define OUTPUT_TOGGLE(port,register_num)   XOUTPUT_TOGGLE(port,register_num)
  2. #define XOUTPUT_TOGGLE(port,register_num)    GPIO##port##_PTOR|=1<<register_num
复制代码

TRK-KEA128_LABTS2.zip (343.24 KB, 下载次数: 128)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-23 04:53 , Processed in 0.081026 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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