HW FTM

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_FTM.c和HW_FTM.h是FTM模块的固件驱动文件,这里定义了该模块的初始化函数、反初始化函数、PWM、输入捕获、正交解码等模式初始化函数。

结构体

FTM_InitTypeDef

变量 描述 取值 初始化
FTM_Type *FTM_Ftmx 选择FTMx FTM0、FTM1、FTM2、FTM3(F系列特有) 必须初始化
uint8 FTM_Mode 配置FTMx的工作模式

FTM_MODE_PWM-PWM输出模式
FTM_MODE_IC-输入捕获模式
FTM_MODE_QD-正交解码模式

必须初始化
uint32 FTM_PwmFreq 配置PWM模式下的PWM输出频率,单位Hz 1~0xFFFFFFFF FTM_MODE_PWM模式下必须初始化
uint32 FTM_PwmDeadtimeCfg 配置PWM模式下的相应通道对的死区功能

DEADTIME_CH01-通道0和通道1插入死区
DEADTIME_CH23-通道2和通道3插入死区
DEADTIME_CH45-通道4和通道5插入死区
DEADTIME_CH67-通道6和通道7插入死区

FTM_MODE_PWM模式下必须初始化
uint8 FTM_PwmDeadtimeDiv PWM模式下死区功能对总线时钟的分频系数

DEADTIME_DIV1-总线1分频
DEADTIME_DIV4-总线4分频
DEADTIME_DIV16-总线16分频

不须初始化
uint8 FTM_PwmDeadtimeVal PWM模式下死区功能插入的个数 0~63,0为不插入死区 不须初始化
uint8 FTM_QdMode 正交解码的解码模式

QD_MODE_PHAB-AB相解码模式
QD_MODE_CNTDIR-计数和方向解码模式

不须初始化,默认QD_MODE_PHAB
uint8 FTM_ClkDiv FTMx时钟相对总线时钟的分频系数

FTM_CLK_DIV1-FTM CLK分频系数1
FTM_CLK_DIV2-FTM CLK分频系数2
FTM_CLK_DIV4-FTM CLK分频系数4
FTM_CLK_DIV8-FTM CLK分频系数8
FTM_CLK_DIV16-FTM CLK分频系数16
FTM_CLK_DIV32-FTM CLK分频系数32
FTM_CLK_DIV64-FTM CLK分频系数64
FTM_CLK_DIV128-FTM CLK分频系数128

FTM_MODE_IC模式下须初始化
boolean FTM_ToiEnable 使能计数器溢出中断 TRUE、FALSE 不须初始化
FTM_ISR_CALLBACK FTM_Isr FTMx中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_FTM_Init()

函数原型

uint8 LPLD_FTM_Init(FTM_InitTypeDef);

描述

FTM模块通用初始化,可初始化为PWM、输入捕获、正交解码、双边捕获模式

形参

类型 名称 描述 取值
FTM_InitTypeDef ftm_init_structure FTM初始化结构体 结构体定义见FTM_InitTypeDef

输出

0--配置错误:1--配置成功

LPLD_FTM_Deinit()

函数原型


uint8 LPLD_FTM_Deinit(FTM_InitTypeDef);

描述

FTM模块通用反初始化

形参

类型 名称 描述 取值
FTM_InitTypeDef ftm_init_structure FTM初始化结构体 结构体定义见FTM_InitTypeDef

输出

0--配置错误:1--配置成功

LPLD_FTM_PWM_Enable()

函数原型

uint8 LPLD_FTM_PWM_Enable(FTM_Type *, FtmChnEnum_Type, uint32, PortPinsEnum_Type, uint8);

描述

FTM模块PWM模式输出使能,配置输出通道、占空比、指定对应的引脚、对齐方式

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号
uint32 duty PWM输出占空比 0~10000--占空比0.00%~100.00%
PortPinsEnum_Type pin 设置FTMx通道对应的引脚 FTM通道号复用引脚
uint8 align 脉冲对齐方式

ALIGN_LEFT--左对齐
ALIGN_RIGHT--右对齐

输出

0--配置错误
1--配置成功

LPLD_FTM_PWM_ChangeDuty()

函数原型

uint8 LPLD_FTM_PWM_ChangeDuty(FTM_Type *, FtmChnEnum_Type, uint32);

描述

变更FTM模块PWM模式指定通道的输出占空比

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号
uint32 duty PWM输出占空比 0~10000--占空比0.00%~100.00%

输出

0--配置错误
1--配置成功

LPLD_FTM_IC_Enable()

函数原型

uint8 LPLD_FTM_IC_Enable(FTM_Type *, FtmChnEnum_Type, PortPinsEnum_Type, uint8);

描述

FTM模块输入捕获模式输出使能,配置输入通道、指定对应的引脚、捕获边缘


形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号
PortPinsEnum_Type pin 设置FTMx通道对应的引脚 FTM通道号复用引脚
uint8 capture_edge 捕获边缘设置

CAPTURE_RI--上升沿捕获
CAPTURE_FA--下降沿捕获
CAPTURE_RIFA--上升下降沿捕获

输出

0--配置错误
1--配置成功

LPLD_FTM_DisableChn()

函数原型

uint8 LPLD_FTM_DisableChn(FTM_Type *, FtmChnEnum_Type);

描述

禁用FTM模块指定通道的输出、输入

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号

输出

0--配置错误
1--配置成功

LPLD_FTM_QD_Enable()

函数原型

uint8 LPLD_FTM_QD_Enable(FTM_Type *, PortPinsEnum_Type, PortPinsEnum_Type);

描述

FTM模块正交解码模式输入使能,配置输入通道PHA和PHB

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM1、FTM2
PortPinsEnum_Type pha PHA输入通道引脚

如果为FTM1:PTA8、PTA12、PTB0
如果为FTM2:PTA10、PTB18

PortPinsEnum_Type phb PHB输入通道引脚

如果为FTM1:PTA9、PTA13、PTB1
如果为FTM2:PTA11、PTB19

输出

0--配置错误
1--配置成功

LPLD_FTM_QD_Disable()

函数原型

uint8 LPLD_FTM_QD_Disable(FTM_Type *);

描述

FTM模块正交解码模式输入禁用

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM1、FTM2

输出

0--配置错误
1--配置成功

LPLD_FTM_IsTOF()

函数原型

boolean LPLD_FTM_IsTOF(FTM_Type *);

描述

判断FTMx是否产生计数溢出中断标志

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)

输出

TRUE--产生技术溢出中断标志
FALSE--未产生

LPLD_FTM_ClearTOF()

函数原型

void LPLD_FTM_ClearTOF(FTM_Type *);

描述

清除FTMx计数器溢出中断标志

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)

输出

LPLD_FTM_IsCHnF()

函数原型

boolean LPLD_FTM_IsCHnF(FTM_Type *, FtmChnEnum_Type);

描述

判断通道n是否产生中断标志

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号

输出

TRUE--产生中断标志
FALSE--未产生

LPLD_FTM_ClearCHnF()

函数原型

void LPLD_FTM_ClearCHnF(FTM_Type *, FtmChnEnum_Type);

描述

清除通道n中断标志

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号

输出

LPLD_FTM_GetChVal()

函数原型

uint16 LPLD_FTM_GetChVal(FTM_Type *, FtmChnEnum_Type);

描述

获取FTMx通道n捕获的FTMx计数值

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)
FtmChnEnum_Type chn PWM输出通道 FTM通道号

输出

0x1~0xFFFF

LPLD_FTM_GetClkDiv()

函数原型

uint8 LPLD_FTM_GetClkDiv(FTM_Type *);

描述

获取FTMx时钟分频系数

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)

输出

1、2、4、8、16、32、64、128

LPLD_FTM_GetCounter()

函数原型

uint16 LPLD_FTM_GetCounter(FTM_Type *);

描述

获取FTMx计数器值

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)

输出

16位整形计数值

LPLD_FTM_ClearCounter()

函数原型

void LPLD_FTM_ClearCounter(FTM_Type *);

描述

清空FTMx计数器

形参

类型 名称 描述 取值
FTM_Type * ftmx FTMx模块号 FTM0、FTM1、FTM2、FTM3(F系列特有)

输出

LPLD_FTM_EnableIrq()

函数原型

uint8 LPLD_FTM_EnableIrq(FTM_InitTypeDef);

描述

使能FTMx中断

形参

类型 名称 描述 取值
FTM_InitTypeDef ftm_init_structure FTM初始化结构体 结构体定义见FTM_InitTypeDef

输出

0--配置错误:1--配置成功

LPLD_FTM_DisableIrq()

函数原型

uint8 LPLD_FTM_DisableIrq(FTM_InitTypeDef);

描述

uint8 LPLD_FTM_DisableIrq(FTM_InitTypeDef);

形参

类型 名称 描述 取值
FTM_InitTypeDef ftm_init_structure FTM初始化结构体 结构体定义见FTM_InitTypeDef

输出

0--配置错误:1--配置成功

其他

FTM通道号

在相PWM、输入捕获、标志判断等相关函数中,需要FTM通道号这个形参,该参数在固件库中定义为FtmChnEnum_Type类型的枚举变量。FTMx不同模块号对应有不同的通道号,下表中FTM0、FTM1、FTM2列分别列出了可用的通道号,该号即为形参要传入的值

注意:以下对应关系为MK60D系列单片机的对应值,其他单片机请参考相关技术文档。
FTM0 FTM1 FTM2
FTM_Ch0 FTM_Ch0 FTM_Ch0
FTM_Ch1 FTM_Ch1 FTM_Ch1
FTM_Ch2 - -
FTM_Ch3 - -
FTM_Ch4 - -
FTM_Ch5 - -
FTM_Ch6 - -
FTM_Ch7 - -

FTM通道号复用引脚

FTM的每个通道对应有外部的输入输出引脚,且可能含有多个服用引脚。下表中对应引脚一列即代表函数形参需要传入的值。

注意:以下对应关系为MK60D系列144引脚单片机的对应值,其他单片机请参考相关技术文档。
通道号 FTM0对应引脚 FTM1对应引脚 FTM2对应引脚
FTM_Ch0 PTA3\PTC1 PTA8\PTA12\PTB0 PTA10\PTB18
FTM_Ch1 PTA4\PTC2 PTA9\PTA13\PTB1 PTA11\PTB19
FTM_Ch2 PTA5\PTC3 - -
FTM_Ch3 PTA6\PTC4 - -
FTM_Ch4 PTA7\PTD4 - -
FTM_Ch5 PTA0\PTD5 - -
FTM_Ch6 PTA1\PTD6 - -
FTM_Ch7 PTA2\PTD7 - -