logo资料库

Kinetis FTM模块详解,很深入.doc

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
作者:潘峰
北京联合大学实训基地
微博:ht
QQ:66797490
博客:http://www.eefocus.com/panpan_0315/blog/
1.5FTM模块
1.5.1 FTM模块简介
1.5.2 FTM的寄存器
1.5.3 FTM功能详解
作者:潘峰 北京联合大学实训基地 微博:http://weibo.com/u/1262858854 QQ:66797490 博客: http://www.eefocus.com/panpan_0315/ blog/ 1.5FTM 模块 1.5.1 FTM 模块简介 FTM 模块是一个多功能定时器模块,主要功能有,PWM 输出、输入捕捉、输出比较、 定时中断、脉冲加减计数、脉冲周期脉宽测量。在 K10 中,共有 FTM0,FTM1,FTM2 三个 独立的 FTM 模块。其中 FTM0 有 8 个通道,可用于电机或舵机的 PWM 输出,但不具备正交 解码功能,也就是对旋转编码器输入的正反向计数功能。而 FTM1 和 FTM2 则具备正交解码 功能,但是 FTM1 和 FTM2 各只有两个通道。FTM 模块的时间基准来自一个 16 位的计数器, 该计数器的值可读取,即可作为无符号数对待,也可作为有符号数的补码对待。 1. FTM 模块特性  时钟源可选择,FTM 的时钟源可以来自系统时钟或外部时钟。可对时钟分频,分频 比为 1,2,4,8,16,32,64,128。  FTM 的一个 16 位计数器,该计数器可设置为自由运行或由用户设置起始和结束值, 可递增计数也可递减计数。  FTM 的每个通道都可以设置为输入捕捉、输出比较或边沿对其的 PWM 输出。  在输入捕捉模式下,可捕捉上升沿、下降沿或两个边沿都捕捉,有些通道可选择输 入滤波器。  在输出比较模式下,在比较成功时可选择输出信号置位、清零或翻转。
 所有的通道都可以设置为中心对齐的 PWM 输出模式。  每对通道都可以级联以产生 PWM 信号。  FTM 的通道可成对工作在相同输出或互补输出,也可各通道独立输出。  当通道成对互补输出时可使用死区插入。  可产生触发信号。  软件控制 PWM 输出。  最多 4 个全局错误控制使用的错误输入。  每个通道的极性可设置。  每个通道都可产生中断。  错误条件发生时也可产生中断。  同步载入或写入带缓冲的 FTM 寄存器。  关键寄存器有写保护功能。  和 HS08 系里的 TPM 兼容。  对于维持在低电平或高电平的信号也可进行输入捕捉的测试。  双边沿捕捉可用于脉冲或周期信号宽度测量。 FTM 模块框图 2.
由图可见,FTM 模块的核心是一个 16 位计数器,该计数器的时钟源可以选择,如果我 们选择由 FTM 来实现 PWM,输入捕捉,或者输出比较,定时中断,脉宽测量等功能,则一 般选择 system clock。这个时钟实际上就是我们前面提到的 MCG 模块输出的 MCGOUTCLK, 再由 SIM 模块分配后得到的 Bus Clock。如果我们选择由 FTM 实现对外部脉冲的计数,也可 选择外部时钟,如果是外部编码器输入的 AB 相脉冲,用于电机正反转测速,则可以使用 PHA 和 PHB 输入,由计数器自动加减计数。
16 位计数器 FTM Counter 每个 FTM 模块一个,该 FTM 模块的所有通道共用这一个计数 器。计数器的初始值(CNTIN)和结束值(MOD)可以设置。计数器的计数方式有三种,一 种是递增计数,计数器从初始值开始累加,直到结束值,在下一个时钟周期,又回到初始值, 循环往复。第二种是先加后减计数,计数器从初始值开始累加,到结束值后,从下一个时钟 开始递减,一直减到初始值,然后再次开始累加,循环往复运行。第三种是正交解码模式, 即对外部输入的 AB 相脉冲计数,由 FTM 根据 A 相和 B 相的相位自动递增或递减计数。在这 里需要注意,FTM0 不具备第三种计数模式,只有 FTM1 和 FTM2 可以使用正交解码。 1.5.2 FTM 的寄存器 对 FTM 模块的设置和访问时都是通过 FTM 的寄存器来完成,下面我们就开始介绍 FTM 相关的寄存器。注意,FTM 模块有很多寄存器的写入操作并不能立刻更新该寄存器的值,而 是先写到一个缓冲器(Buffer)里,由系统在设置好的载入点(load point),再配合软件或 硬件触发的方式来从缓冲器更新寄存器中的值的,后面我们介绍到这些寄存器的时候会指 出。另外,FTM 的很多寄存器具有写保护功能,需要先把写保护打开才可以写入,这点也在 后面的介绍中提到。 1. 状态和控制寄存器(FTMx_SC) 该寄存器每个 FTM 模块一个,里面包含计数器溢出标志,溢出中断允许设置,计数模 式设置,时钟源选择和分频设置,具体如下。  TOF:定时器溢出标志,当 FTM 模块计数器到达 MOD 寄存器中设置的结束值时,无论 是递增计数还是先加后减计数,在计数值从结束值变化到下一个值时,该位置 1。当读 取该寄存器,且该位置 1 时,写 0 可清除该标志,写 1 则没有效果。  TOIE:定时器溢出中断使能。当 TOF 置 1 时是否触发中断。对外界固定时钟计数配合 TOF 和 TOIE 则可以实现定时中断的功能。 TOIE=0:定时器溢出中断禁止; TOIE=1:定时器溢出中断使能。
 CPWMS:中心对齐 PWM 选择。这一位实际是设置计数器加减计数,所谓 PWM 中心对 齐模式就是指的计数器先加后减。该位平时出于写保护状态,只有在 MODE[WPDIS] = 1 时才可被写入。 CPWMS=0:计数器加法计数; CPWMS=1:计数器先加后减计数。  CLKS:时钟源选择。选择 FTM 计数器的时钟来源。该位平时写保护,只有在 MODE[WPDIS] = 1 时才可写入。 CLKS=00:未选择时钟; CLKS=01:系统时钟(推荐,即 Bus Clock); CLKS=10:定频时钟; CLKS=11:外部时钟。  PS:预分频设置。设置对 CLK 选中的时钟预分频。该位平时写保护,只有在 MODE[WPDIS] = 1 时才可写入。 预分频比=2^PS,最大 128 分频。 2. 计数器 FTMx_CNT 该寄存器包含 FTM 计数器的值。复位时该寄存器清 0,向该寄存器写入任何值将会使 该寄存器回到初始设定值。CNTIN 中保存的是初始设定值。 BDM 模式下,FTM 计数器被冻结。 3. 模数寄存器 FTMx_MOD 该寄存器保存 FTM 计数器的模数,即计数器计数终止值,当计数器到达对应的模数值 时,TOF 将在下一个时钟到来时置 1。此时计数器的值取决于选择的计数器计数方案,默认 回到初始值。 写该寄存器的值会先锁存到一个缓冲器里,不会立刻更新,而是和寄存器更新设置有关。 4. 通道 n 状态及控制寄存器(FTMx_CnSC) 这是一个非常重要的寄存器,每个通道都有一个 CnSC 寄存器。该寄存器中包含通道中 断标志位、中断使能控制位、通道设置以及引脚功能设置。  CHF:通道标志,当对应通道设定事件发生时该位由硬件置 1。所谓通道设定事件有两种, 一种是输入捕捉模式下,捕捉到设定的边沿时;另一种是输出比较模式下,FTM 计数值
变化到和通道 n 的设定值相等时。当通道的 CHF 置 1 时,读取 CnSC 寄存器并对 CHF 位 写 0 可清除该位,写 1 无效。如果该位置 1,在对 CSC 寄存器进行读写操作时,新的事 件发生,则 CHF 位仍保持未清除的状态。在这种情况下,新发生的事件的中断请求不 会丢失。 CHF=0:通道事件未发生; CHF=1:发生通道事件。  CHIE:通道中断使能。该位用于设置 CHF 置位时是否发出中断请求。 CHIE=0:通道中断禁止; CHIE=1:通道中断使能。  MSB、MSA:通道模式选择,只有在 MODE[WPDIS] = 1 的情况下才可写入。 当 DECAPEN=0,也就是不用双边沿捕捉,双边沿捕捉一般用于捕捉外部脉冲用于测量脉冲 的周期和脉宽时用。 MSB:MSA=00:输入捕捉; MSB:MSA=01:输出比较; MSB:MSA=1x:边沿对齐 PWM。 当 DECAPEN=1, 即使用双边沿捕捉时。 MSB:MSA=X0:单次捕捉模式; MSB:MSA=X1:连续捕捉模式。  ELSB、ELSA:边沿或电平选择。参看下表: 模式、边沿和电平选择,在下表中,有些设置位还没有提到,这里提前介绍一下。 DECAPEN 用于设置双边沿捕捉,主要用于测外部脉冲的周期和脉宽时用到; COMBINE 用于设置联合模式,用于两路联合输出 PWM,可用于非对称 PWM 波形输出, 或者两通道互补输出,使用联合方式输出 PWM 的方式在有些桥式电机驱动的电路中,可以 很方便的实现电机正反转切换,也可以用软件实现死区插入,如果不用联合模式,该位置 0 即可; CPWMS 在 FTMx_SC 寄存器中已经介绍,具体参看前面的介绍。有关 MSnB:MSnA 和 ELSnB:ELSnA 在不同用途的设置,参考下表。 DECAPEN COMBINECPWMS MSnB:MSnA ELSnB:ELSnA MODE 设置 X 0 1 X 0 1 0 X 0 1 0 0 XX 0 1 1X XX XX X0 0 1 10 11 1 10 11 10 X1 10 X1 10 X1 无 没有引脚被 FTM 使用 输入捕捉 只捕捉上升沿 只捕捉下降沿 捕捉上升沿或下降沿 输出比较 比较成功输出翻转 比较成功输出低电平 比较成功输出高电平 边沿对齐 先高后低 PWM 先低后高 中心对齐 高低高 PWM 低高低 联合 PWM n 通道比较成功高,n+1 通道比较成功低 n 通道比较成功低,n+1 通道比较成功高 查看下表 双边沿捕 单次捕捉
X1 捉模式 连续捕捉 ELSnB 0 0 1 1 ELSnA 0 1 0 1 通道端口使能 检测边沿 禁止 使能 使能 使能 不检测 上升沿 下降沿 上升沿和下降沿  DMA:DMA 使能,使能该通道的 DMA 传输 DMA=0:DMA 禁止; DMA=1:DMA 使能。 5. 通道 n 计数值寄存器((FTMx_CnV) 每个通道都有一个 CnV 寄存器,在输入捕捉模式下,当捕捉到设置的边沿时,此时 FTM 计数器的值自动保存到 CnV 寄存器中,该值可用于反映捕捉事件发生的时刻。在输出模式 下 CnV 寄存器保存输出匹配值,该值用于和 FTM 计数器的值进行比较,当相等时,则比较 成功。 在输入捕捉、捕捉测试和双边沿捕捉模式下,任何对该寄存器的写入操作都无效。在输 出模式下,写入该寄存器的值会先锁存到缓冲器内,何时更新和寄存器更新设置有关。 6. 计数器初始值寄存器(FTMx_CNTIN) 该寄存器保存 FTM 计数器的初始值。写入该寄存器的值会预先锁存在缓冲器内。在选 择时钟前,先设置该寄存器以初始化 FTM 计数器,否则,计数器会默认从 0 开始计数。 7. 捕捉和比较状态寄存器(FTMx_STATUS) 该寄存器中包含了每个通道的 FTMx_CSC 寄存器中的 CHnF 位的拷贝以方便编程。这样 一次就可以读出一个 FTM 模块的所有通道的标志位,读取后,写 0 清除。 8. 特性模式选择寄存器(FTMx_MODE) 该寄存器主要设置错误中断、错误控制、捕捉测试模式、PWM 同步、写保护、通道输 出初始化、FTM 增强特性使能。这些控制和所有通道都有关。
 FAULTIE:错误中断使能,当错误控制使能时,在检测到错误时是否触发中断。 FAULTIE=0:错误控制中断禁止; FAULTIE=1:错误控制中断使能。  FAULTM:定义错误控制模式,该寄存器写保护,只有当 MODE[WPDIS] = 1 时可写入。 FAULTM=00:所有通道错误控制功能禁止; FAULTM=01:偶数通道错误控制使能,且手动清除错误; FAULTM=10:所有通道错误控制使能,且手动清除错误; FAULTM=11:所有通道错误控制使能,且自动清除错误。  CAPTEST:捕捉测试使能,该位写保护,只有当 MODE[WPDIS] = 1 时可写入。 CAPTEST=0:输入捕捉测试禁止; CAPTEST=0:输入捕捉测试禁止。  PWMSYNC:PWM 同步模式,所谓 PWM 同步实际上就是如何将某些寄存器的值从 Buffer 中更新的一种机制。 选择 MOD,CnV, OUTMASK,和 FTM counter 几个寄存器同步时使用的触发器,可选 择软件触发或硬件触发。触发就是允许计数器在到达下一个载入点时更新这些寄存器的 值的信号。软件触发通过编程实现,硬件触发通过外部脉冲实现。 PWMSYNC=0:MOD,CnV, OUTMASK,和 FTM counter 几个寄存器的同步可以选择软 件触发或硬件触发,没有限制。 PWMSYNC=1:MOD,CnV 的同步只可以选择软件触发,OUTMASK,和 FTM counter 的 同步只可以选择硬件触发。  WPDIS:写保护禁止,该位和 WPEN(写保护使能)相反,当 WPEN 写 1 时,WPDIS 被 清 0 WPDIS=0:写保护使能,被写保护的位不可被写入; WPDIS=1:写保护禁止,被写保护的位可写入。  INIT:通道输出初始化,当对 INIT 写 1 时,通道的输出初始化,根据每个通道的 OUTINIT 寄存器而定。对该位写 0 无效,任何时候读取该位都为 0。  FTMEN:FTM 使能,该位写保护,只有当 MODE[WPDIS] = 1 时可写入。 FTMEN=0:只有和 S08 的 TPM 兼容的寄存器可以使用,这时一般的输入捕捉和输出比 较,各通道独立输出 PWM 都可以使用,且不需要选择 PWM 同步方式; FTMEN=1:所有寄存器都可以使用。如果使用通道联合输出 PWM,双边沿捕捉,AB 相 计数等增强的功能,则需要设置 FTMEN=1,这时也必须规划好使用的到的一些寄存器 的更新方式,即 PWM 同步方式和软硬件触发同步的方式。 9. 同步寄存器(FTMx_SYNC) 该寄存器用于设置 PWM 同步。一个同步事件能够执行 MOD, CV,和 OUTMASK 寄存 器的同步,即使用缓冲器中的值更新这几个寄存器,这时 FTM 计数器也可以重新初始化。 当 FTMEN=1 时,该寄存器必须合理设置。
分享到:
收藏