您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 飞思卡尔k系列_ftm模块详解
1.5FTM模块1.5.1FTM模块简介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兼容。对于维持在低电平或高电平的信号也可进行输入捕捉的测试。双边沿捕捉可用于脉冲或周期信号宽度测量。2.FTM模块框图由图可见,FTM模块的核心是一个16位计数器,该计数器的时钟源可以选择,如果我们选择由FTM来实现PWM,输入捕捉,或者输出比较,定时中断,脉宽测量等功能,则一般选择systemclock。这个时钟实际上就是我们前面提到的MCG模块输出的MCGOUTCLK,再由SIM模块分配后得到的BusClock。如果我们选择由FTM实现对外部脉冲的计数,也可选择外部时钟,如果是外部编码器输入的AB相脉冲,用于电机正反转测速,则可以使用PHA和PHB输入,由计数器自动加减计数。16位计数器FTMCounter每个FTM模块一个,该FTM模块的所有通道共用这一个计数器。计数器的初始值(CNTIN)和结束值(MOD)可以设置。计数器的计数方式有三种,一种是递增计数,计数器从初始值开始累加,直到结束值,在下一个时钟周期,又回到初始值,循环往复。第二种是先加后减计数,计数器从初始值开始累加,到结束值后,从下一个时钟开始递减,一直减到初始值,然后再次开始累加,循环往复运行。第三种是正交解码模式,即对外部输入的AB相脉冲计数,由FTM根据A相和B相的相位自动递增或递减计数。在这里需要注意,FTM0不具备第三种计数模式,只有FTM1和FTM2可以使用正交解码。1.5.2FTM的寄存器对FTM模块的设置和访问时都是通过FTM的寄存器来完成,下面我们就开始介绍FTM相关的寄存器。注意,FTM模块有很多寄存器的写入操作并不能立刻更新该寄存器的值,而是先写到一个缓冲器(Buffer)里,由系统在设置好的载入点(loadpoint),再配合软件或硬件触发的方式来从缓冲器更新寄存器中的值的,后面我们介绍到这些寄存器的时候会指出。另外,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:系统时钟(推荐,即BusClock);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的情况下才可写入。ad当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在不同用途的设置,参考下表。DECAPENCOMBINECPWMSMSnB:MSnAELSnB:ELSnAMODE设置XXXXX0无没有引脚被FTM使用00001输入捕捉只捕捉上升沿10只捕捉下降沿11捕捉上升沿或下降沿11输出比较比较成功输出翻转10比较成功输出低电平11比较成功输出高电平1X10边沿对齐PWM先高后低X1先低后高1XX10中心对齐PWM高低高X1低高低10XX10联合PWMn通道比较成功高,n+1通道比较成功低X1n通道比较成功低,n+1通道比较成功高100X0查看下表双边沿捕单次捕捉X1捉模式连续捕捉ELSnBELSnA通道端口使能检测边沿00禁止不检测01使能上升沿10使能下降沿11使能上升沿和下降沿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,和FTMcounter几个寄存器同步时使用的触发器,可选择软件触发或硬件触发。触发就是允许计数器在到达下一个载入点时更新这些寄存器的值的信号。软件触发通过编程实现,硬件触发通过外部脉冲实现。PWMSYNC=0:MOD,CnV,OUTMASK,和FTMcounter几个寄存器的同步可以选择软件触发或硬件触发,没有限制。PWMSYNC=1:MOD,CnV的同步只可以选择软件触发,OUTMASK,和FTMcounter的同步只可以选择硬件触发。WPDIS:写保护禁止,该位和WPEN(写保护使能)相反,当WPEN写1时,WPDIS被清0WPDIS=0:写保护使能,被写保护的位不可被写入;WPDIS=1:写保护禁止,被写保护的位可写入。INIT:通道输出初始化,当对INIT写1时,通道的输出初始化,根据每个通道的OUTINIT寄存器而定。对该位写0无效,任何时候读取该位都为0。FTMEN:FTM使能,该位写保护,只有当MODE[WPDIS]=1时可写入。FTMEN=0:只有和S08的TPM兼容的寄存器可以使用,这时一般的输入捕捉和输出比较,各通道独立输出PWM都可以使用,且不需要选择PWM同步方式;FTMEN=1
本文标题:飞思卡尔k系列_ftm模块详解
链接地址:https://www.777doc.com/doc-5951093 .html