智能车基础学习FTM模块

FTM模块是一个多功能定时器模块,同时也是在智能车制作中最常用到的模块,他的伟大之处在于他能输出PWM,能输出比较,输入捕捉,定时中断,进行脉冲加减计数等。
1、FTM寄存器
在K60中,FTM只有三个模块,FTM0、FTM1、FTM2。
FTMx_CNT(计数器寄存器),负责计数
FTMx_SC(状态和控制寄存器),用于控制计数器寄存器的计数频率,包括时钟源的选择和分频系数,同时负责计数溢出和中断使能等。
FTMx_MOD(模数寄存器)
FTMx_CNTIN(计数器初始值寄存器)
FTMx_CnV(通道值寄存器),n代表FTMx中该寄存器的个数,对于FTM0来说一共有八个,这八个寄存器负责PWM的脉宽,每个寄存器存入一个数字,当计数器寄存器寄到对应数字时,他们就会让PWM的输出产生一个上升沿或者下降沿。
其中的x代表不同的FTM模块的标号。
2、PWM工作原理(PWM在Kinetis的FTM中的工作机理)
PWM中很重要的参数是频率(周期的倒数)和占空比
周期=(MOD-CNTIN+1)×计数器周期
占空比=(cnV-CNTIN)÷PWM的周期
PWM输出周期:首先公式中的计数器周期是由FTMx_SC寄存器决定的, FTMx_SC寄存器决定了FTM模块采用哪个频率为输入频率,这些频率候选有系统时钟、固定频率时钟以及外部时钟,同时FTMx_SC寄存器还负责这些输入频率的分频系数,总之FTMx_SC寄存器决定了计数器周期,也就是FTMx_CNT寄存器计数的快慢。然后FTMx_CNT寄存器从FTMx_CNTIN寄存器中得到计数的初始值,于是就按照FTMx_SC寄存器决定的快慢一直计数到FTMx_MOD存入数据的大小,这就构成了一个PWM周期。PWM输出脉宽:首先假定FTMx_CNT在计第一个数时,PWM通道输出高电平,当CNT计到FTMx_CnV寄存器含有的数的时候,PWM输出通道就会变为低电平,直到FTMx_CNT继续计数到等于FTMx_MOD的值候一个PWM周期结束,当重新开始从FTMx_CNTIN的值进行计数时,PWM的输出通道又变为了高电平,这样持续下去,就产生了PWM波形。关于FTM模块的PWM输出路数:一个FTMx模块并不是只能输出一路PWM,其实FTMx_CnV根据x的不同,有n个通道可以输出PWM,如果是x=0,那么FTM0就有8个FTMx_CnV,C0V到C7V这8个通道值寄存器,因此FTM0可以输出8路不同占空比的PWM,但是由于负责计数的FTMx_CNT以及其他寄存器在FTM0中仅仅各有一个,因此FTM0只能输出一种频率的PWM。
3、FTM模块输入捕获功能
输入捕获(Input Capture),即输入捕获。首先FTM能够生成PWM,同时还具备其他功能,这都是因为FTM含有的寄存器,之前介绍的寄存器不仅能生成PWM,还能利用自身功能,实现输入捕获功能。输入捕获就像PWM的逆变一样,通过检测输入PWM方波,捕获上升沿或者下降沿,来计算出PWM的频率或者占空比。
实现输入捕获功能的原理:首先FTMx_CnV寄存器不再负责记住一个特定的数据,而是随时待命,随时准备记录下FTMx_CNT寄存器计数的数值。当FTM的输入通道产生一个上升沿或者下降沿的时候,就会产生一个中断,这时FTMx_CnV寄存器就会立刻记录下FTMx_CNT寄存器此刻的数字,我们只要知道两次中断之间FTMx_CnV寄存器记录的计数的差,就可以间接计算出中断间隔时间了,从而可以计算出PWM方波的频率。当然FTMx_CNT寄存器计数的频率还是由FTMx_SC寄存器决定的。假设我们知道FTMx_CNT计数的频率为fCNT, FTMx_CnV寄存器自从上次中断后记录的计数差为cv,配置捕获上升沿时产生中断,那么两次中断的时间差的倒数就是PWM方波的频率: 输入PWM频率=fCNT/cv
一个FTM模块只能提供一路输入捕获。
4、正交解码原理
首先要清楚正交解码是干嘛用的,编码器是常用的电机测速传感器,他不仅可以测速,还可以知道电机的正转还是反转,靠的就是他能输出两路正交信号,我们可以通过正交信号的相位差来识别出当前电机的转动方向。因此有了FTM模块,我们就可以将这两路正交信号PhA和PhB输入到FTM的正交输入通道,通过正交解码功能,直接读取脉冲的计数值,这个计数值是有符号的,正数代表正转,负数则代表反转。
5、FTM其他功能
1)PWM死区
PWM死区是在是PWM输出时,为了使H桥或半H桥的上下管不会因为器件本身的开关速度问题导致同时导通而设置的一个保护时段。这个时间在Kinetis的FTM模块也是可以设置的,在库函数使用时只要在配置PWM输出时,配置FTM_PwmDeadtimeCfg和FTM_PwmDeadtimeDiv就可以了。
2)溢出中断
除了输入捕获能产生中断外,FTM内部也会产生溢出中断,这是在使用输入捕获或者正交解码时可能遇到的问题,那么什么是溢出中断呢,它是当CNT计数器计数到上限时产生的一种中断。你可以在初始化FTM时配置是否使能该中断,利用成员变量FTM_ToiEnable。

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值