FTM详解K10单片机PWMWord下载.docx
《FTM详解K10单片机PWMWord下载.docx》由会员分享,可在线阅读,更多相关《FTM详解K10单片机PWMWord下载.docx(34页珍藏版)》请在冰点文库上搜索。
第二种是先加后减计数,计数器从初始值开始累加,到结束值后,从下一个时钟开始递减,一直减到初始值,然后再次开始累加,循环往复运行。
第三种是正交解码模式,即对外部输入的AB相脉冲计数,由FTM根据A相和B相的相位自动递增或递减计数。
在这里需要注意,FTM0不具备第三种计数模式,只有FTM1和FTM2可以使用正交解码。
FTM的寄存器
对FTM模块的设置和访问时都是通过FTM的寄存器来完成,下面我们就开始介绍FTM相关的寄存器。
注意,FTM模块有很多寄存器的写入操作并不能立刻更新该寄存器的值,而是先写到一个缓冲器(Buffer)里,由系统在设置好的载入点(loadpoint),再配合软件或硬件触发的方式来从缓冲器更新寄存器中的值的,后面我们介绍到这些寄存器的时候会指出
。
另外,FTM的很多寄存器具有写保护功能,需要先把写保护打开才可以写入,这点也在后面的介绍中提到。
21状态和控制寄存器(FTMx_SC)StatusandControl
该寄存器每个FTM模块一个,里面包含计数器溢出标志,溢出中断允许设置,计数模式设置,时钟源选择和分频设置,具体如下。
∙TOF(TimerOverflowFlag):
定时器溢出标志,当FTM模块计数器到达MOD寄存器中设置的结束值时,无论是递增计数还是先加后减计数,在计数值从结束值变化到下一个值时,该位置1。
当读取该寄存器,且该位置1时,写0可清除该标志,写1则没有效果。
∙TOIE(TimerOverflowInterruptEnable):
定时器溢出中断使能。
当TOF置1时是否触发中断。
对外界固定时钟计数配合TOF和TOIE则可以实现定时中断的功能。
TOIE=0:
定时器溢出中断禁止;
TOIE=1:
∙CPWMS(Center-alignedPWMSelect):
中心对齐PWM选择。
这一位实际是设置计数器加减计数,所谓PWM中心对齐模式就是指的计数器先加后减。
该位平时出于写保护状态,只有在MODE[WPDIS]=1时才可被写入。
CPWMS=0:
计数器加法计数;
CPWMS=1:
计数器先加后减计数。
∙CLKS(ClockSourceSelection):
时钟源选择。
选择FTM计数器的时钟来源。
该位平时写保护,只有在MODE[WPDIS]=1时才可写入。
CLKS=00:
未选择时钟;
CLKS=01:
系统时钟(推荐,即BusClock);
CLKS=10:
定频时钟;
CLKS=11:
外部时钟。
∙PS:
预分频设置。
设置对CLK选中的时钟预分频。
预分频比=2^PS,最大128分频。
22计数器FTMx_CNT(Counter)
该寄存器包含FTM计数器的值。
复位时该寄存器清0,向该寄存器写入任何值将会使该寄存器回到初始设定值。
CNTIN中保存的是初始设定值。
BDM模式下,FTM计数器被冻结。
23模数寄存器FTMx_MOD(Modulo)
该寄存器保存FTM计数器的模数,即计数器计数终止值,当计数器到达对应的模数值时,TOF将在下一个时钟到来时置1。
此时计数器的值取决于选择的计数器计数方案,默认回到初始值。
写该寄存器的值会先锁存到一个缓冲器里,不会立刻更新,而是和寄存器更新设置有关。
24通道n状态及控制寄存器(FTMx_CnSC)Channel(n)StatusandControl
这是一个非常重要的寄存器,每个通道都有一个CnSC寄存器。
该寄存器中包含通道中断标志位、中断使能控制位、通道设置以及引脚功能设置。
∙CHF(ChannelFlag):
通道标志,当对应通道设定事件发生时该位由硬件置1。
所谓通道设定事件有两种,一种是输入捕捉模式下,捕捉到设定的边沿时;
另一种是输出比较模式下,FTM计数值变化到和通道n的设定值相等时。
当通道的CHF置1时,读取CnSC寄存器并对CHF位写0可清除该位,写1无效。
如果该位置1,在对CSC寄存器进行读写操作时,新的事件发生,则CHF位仍保持未清除的状态。
在这种情况下,新发生的事件的中断请求不会丢失。
CHF=0:
通道事件未发生;
CHF=1:
发生通道事件。
∙CHIE(ChannelInterruptEnable):
通道中断使能。
该位用于设置CHF置位时是否发出中断请求。
CHIE=0:
通道中断禁止;
CHIE=1:
∙MSB、MSA(ChannelModeSelect):
通道模式选择,只有在MODE[WPDIS]=1的情况下才可写入。
当DECAPEN=0,也就是不用双边沿捕捉,双边沿捕捉一般用于捕捉外部脉冲用于测量脉冲的周期和脉宽时用。
MSB:
MSA=00:
输入捕捉;
MSA=01:
输出比较;
MSA=1x:
边沿对齐PWM。
当DECAPEN=1,即使用双边沿捕捉时。
MSA=X0:
单次捕捉模式;
MSA=X1:
连续捕捉模式。
∙ELSB、ELSA(EdgeorLevelSelect):
边沿或电平选择。
参看下表:
模式、边沿和电平选择,在下表中,有些设置位还没有提到,这里提前介绍一下。
DECAPEN用于设置双边沿捕捉,主要用于测外部脉冲的周期和脉宽时用到;
COMBINE用于设置联合模式,用于两路联合输出PWM,可用于非对称PWM波形输出,或者两通道互补输出,使用联合方式输出PWM的方式在有些桥式电机驱动的电路中,可以很方便的实现电机正反转切换,也可以用软件实现死区插入,如果不用联合模式,该位置0即可;
CPWMS在FTMx_SC寄存器中已经介绍,具体参看前面的介绍。
有关MSnB:
MSnA和ELSnB:
ELSnA在不同用途的设置,参考下表。
DECAPEN
COMBINE
CPWMS
MSnB:
MSnA
ELSnB:
ELSnA
MODE
设置
X
XX
无
没有引脚被FTM使用
1
输入捕捉
只捕捉上升沿
10
只捕捉下降沿
11
捕捉上升沿或下降沿
输出比较
比较成功输出翻转
比较成功输出低电平
比较成功输出高电平
1X
边沿对齐PWM
先高后低
X1
先低后高
中心对齐PWM
高低高
低高低
联合PWM
n通道比较成功高,n+1通道比较成功低
n通道比较成功低,n+1通道比较成功高
X0
查看下表
双边沿捕捉模式
单次捕捉
连续捕捉
ELSnB
通道端口使能
检测边沿
禁止
不检测
使能
上升沿
下降沿
上升沿和下降沿
∙DMA:
DMA使能,使能该通道的DMA传输
DMA=0:
DMA禁止;
DMA=1:
DMA使能。
25通道n计数值寄存器((FTMx_CnV)Channel(n)Value
每个通道都有一个CnV寄存器,在输入捕捉模式下,当捕捉到设置的边沿时,此时FTM计数器的值自动保存到CnV寄存器中,该值可用于反映捕捉事件发生的时刻。
在输出模式下CnV寄存器保存输出匹配值,该值用于和FTM计数器的值进行比较,当相等时,则比较成功。
在输入捕捉、捕捉测试和双边沿捕捉模式下,任何对该寄存器的写入操作都无效。
在输出模式下,写入该寄存器的值会先锁存到缓冲器内,何时更新和寄存器更新设置有关。
26计数器初始值寄存器(FTMx_CNTIN)CounterInitialValue
该寄存器保存FTM计数器的初始值。
写入该寄存器的值会预先锁存在缓冲器内。
在选择时钟前,先设置该寄存器以初始化FTM计数器,否则,计数器会默认从0开始计数。
27捕捉和比较状态寄存器(FTMx_STATUS)CaptureandCompareStatus
该寄存器中包含了每个通道的FTMx_CSC寄存器中的CHnF位的拷贝以方便编程。
这样一次就可以读出一个FTM模块的所有通道的标志位,读取后,写0清除。
28特性模式选择寄存器(FTMx_MODE)FeaturesModeSelection
该寄存器主要设置错误中断、错误控制、捕捉测试模式、PWM同步、写保护、通道输出初始化、FTM增强特性使能。
这些控制和所有通道都有关。
∙FAULTIE(FaultInterruptEnable):
错误中断使能,当错误控制使能时,在检测到错误时是否触发中断。
FAULTIE=0:
错误控制中断禁止;
FAULTIE=1:
错误控制中断使能。
∙FAULTM(FaultControlMode):
定义错误控制模式,该寄存器写保护,只有当MODE[WPDIS]=1时可写入。
FAULTM=00:
所有通道错误控制功能禁止;
FAULTM=01:
偶数通道错误控制使能,且手动清除错误;
FAULTM=10:
所有通道错误控制使能,且手动清除错误;
FAULTM=11:
所有通道错误控制使能,且自动清除错误。
∙CAPTEST(CaptureTestModeEnable):
捕捉测试使能,该位写保护,只有当MODE[WPDIS]=1时可写入。
CAPTEST=0:
输入捕捉测试禁止;
输入捕捉测试禁止。
∙PWMSYNC(PWMSynchronizationMode):
PWM同步模式,所谓PWM同步实际上就是如何将某些寄存器的值从Buffer中更新的一种机制。
选择MOD,CnV,OUTMASK,和FTMcounter几个寄存器同步时使用的触发器,可选择软件触发或硬件触发。
触发就是允许计数器在到达下一个载入点时更新这些寄存器的值的信号。
软件触发通过编程实现,硬件触发通过外部脉冲实现。
PWMSYNC=0:
MOD,CnV,OUTMASK,和FTMcounter几个寄存器的同步可以选择软件触发或硬件触发,没有限制。
PWMSYNC=1:
MOD,CnV的同步只可以选择软件触发,OUTMASK,和FTMcounter的同步只可以选择硬件触发。
∙WPDIS(WriteProtectionDisable):
写保护禁止,该位和WPEN(写保护使能)相反,当WPEN写1时,WPDIS被清0
WPDIS=0:
写保护使能,被写保护的位不可被写入;
WPDIS=1:
写保护禁止,被写保护的位可写入。
∙INIT(InitializetheChannelsOutput):
通道输出初始化,当对INIT写1时,通道的输出初始化,根据每个通道的OUTINIT寄存器而定。
对该位写0无效,任何时候读取该位都为0。
∙FTMEN(FTMEnable):
FTM使能,该位写保护,只有当MODE[WPDIS]=1时可写入。
FTMEN=0:
只有和S08的TPM兼容的寄存器可以使用,这时一般的输入捕捉和输出比较,各通道独立输出PWM都可以使用,且不需要选择PWM同步方式;
FTMEN=1:
所有寄存器都可以使用。
如果使用通道联合输出PWM,双边沿捕捉,AB相计数等增强的功能,则需要设置FTMEN=1,这时也必须规划好使用的到的一些寄存器的更新方式,即PWM同步方式和软硬件触发同步的方式。
29同步寄存器(FTMx_SYNC)Synchronization
该寄存器用于设置PWM同步。
一个同步事件能够执行MOD,CV,和OUTMASK寄存器的同步,即使用缓冲器中的值更新这几个寄存器,这时FTM计数器也可以重新初始化。
当FTMEN=1时,该寄存器必须合理设置。
∙SWSYNC(PWMSynchronizationSoftwareTrigger):
PWM同步软件触发。
当对该位写1时,软件触发发生,即发生软件触发事件,当计数器运行到下一个载入点时,同步发生,对应寄存器更新,完毕后SWSYNC会自动清0。
∙TRIG2(PWMSynchronizationHardwareTrigger2):
PWM同步硬件触发器2。
使能硬件触发器2触发PWM同步,触发器2输入引脚上出现上升沿时硬件触发。
TRIG2=0:
触发器禁止;
TRIG2=1:
触发器使能。
∙TRIG1(PWMSynchronizationHardwareTrigger1):
PWM同步硬件触发器1。
使能硬件触发器1触发PWM同步,触发器1输入引脚上出现上升沿时硬件触发。
TRIG1=0:
TRIG1=1:
∙TRIG0(PWMSynchronizationHardwareTrigger0):
PWM同步硬件触发器0。
使能硬件触发器0触发PWM同步,触发器0输入引脚上出现上升沿时硬件触发。
TRIG0=0:
TRIG0=1:
注意:
软件触发,即向SWSYNC位写1,和通过TRIG0:
3实现的硬件触发,存在潜在的冲突。
当SYNCMODE=0时,如果同时使用硬件触发和软件触发就可能发生。
建议不要同时使用软件触发和硬件触发,一般情况下,当我们使用FTM的一些增强功能时,我们使用软件触发即可。
∙SYNCHOM(OutputMaskSynchronization):
输出屏蔽同步,选择OUTMASK寄存器是否从缓冲器里更新。
SYNCHOM=0:
在系统时钟上升沿时,OUTMASK寄存器从缓冲器中更新自身值;
SYNCHOM=1:
PWM同步时,OUTMASK寄存器从缓冲器中更新自身值。
∙RENINT(FTMCounterReinitializationbySynchronization(FTMCounterSynchronization)):
FTM计数器重新初始化。
决定当选择的触发器触发同步时,FTM计数器是否重新初始化。
RENINT=0:
FTM计数器继续计数;
RENINT=1:
当触发事件发生时,FTM计数器回到设定的初值。
∙CNTMAX(Maximumloadingpointenable):
最大载入点使能,当触发事件发生后,直到FTM计数器达到莫一个值时,这一时刻才会发生更新寄存器值的同步,这一时刻就是载入点。
当该位为1时,当FTM计数器达到最大值时,即MOD值,这一时刻将作为一个同步的载入点。
∙CNTMIN(Minimumloadingpointenable):
最小装载点使能
当该位为1时,当FTM计数器达到最小值时,即CNTIN值,这一时刻将作为一个同步的载入点。
30通道输出初始状态(FTMx_OUTINIT)InitialStateforChannelsOutput
∙CHxOI(ChannelxOutputInitializationValue):
通道x输出初始值。
CHxOI=0:
初始值为0;
CHxOI=1:
初始值为1。
31输出屏蔽寄存器(FTMx_OUTMASK)
∙CHxOM(ChannelxOutputMask):
通道x输出屏蔽。
CHxOM=0:
该通道输出正常;
CHxOM=1:
该通道输出屏蔽。
32通道联合功能寄存器(FTMx_COMBINE)FunctionforLinkedChannels
该寄存器包含:
错误控制、同步、死区插入、双边沿捕捉模式、补偿、双通道联合等功能。
该寄存器在使用双通道联合功能时,主要是非对称PWM输出,双通道互补输出,双边沿捕捉等功能时需要合理设置。
∙FAULTENn(FaultControlEnableforn=6):
使能通道2n和2n+1的错误控制,该位写保护,只有当MODE[WPDIS]=1时可写入。
FAULTENn=0:
通道2n和2n+1的错误控制禁止;
FAULTENn=1:
通道2n和2n+1的错误控制使能。
∙SYNCENn(SynchronizationEnableforn=6):
使能寄存器C(2n)V和C(2n+1)V的PWM同步,即这两个寄存器能否被触发事件触发更新。
该位写保护,只有当MODE[WPDIS]=1时可写入。
SYNCENn=0:
寄存器C(2n)V和C(2n+1)V的PWM同步禁止;
SYNCENn=·
:
寄存器C(2n)V和C(2n+1)V的PWM同步使能。
∙DTENn(DeadtimeEnableforn=6):
死区使能。
使能通道2n和2n+1的死区插入。
死区插入在双通道互补输入控制桥式电机驱动电路时,防止同侧开关管同时导通的危险,具体插入死区的时间则由FTMx_DEADTIME寄存器设定。
DTENn=0:
通道2n和2n+1的死区插入功能禁止;
DTENn=1:
通道2n和2n+1的死区插入功能使能。
∙DECAPn(DualEdgeCaptureModeCapturesforn=6):
双边沿捕捉。
使能通道2n和2n+1的双边沿捕捉。
该位只有当FTMEN=1和DECAPEN=1时有效。
DECAPn=0:
通道2n和2n+1的双边沿捕捉禁止;
DECAPn=1:
通道2n和2n+1的双边沿捕捉使能。
∙COMPn(ComplementofChannel(n)forn=6):
使能通道2n和2n+1的互补模式,即两个通道波形相反。
COMPn=0:
通道2n和2n+1的互补模式禁止;
COMPn=1:
通道2n和2n+1的互补模式使能。
∙COBINEn(CombineChannelsforn=6):
通道2n和2n+1联合设置。
只有COMBINEn=1,才可使用上面那些位设置的功能。
COBINEn=0:
通道2n和2n+1独立使用;
COBINEn=1:
通道2n和2n+1联合使用。
33死区插入控制寄存器(FTMx_DEADTIME)DeadtimeInsertionControl
该寄存器设置死区时间分频系数和死区值。
所有的FTM通道都使用这个时钟分频和死区值。
死区插入的目的时在驱动全桥电路时,防止同侧半桥同时导通。
只有双通道联合互补输出时,且对应的DTENn=1时,设置的死区值才有效。
∙DTPS(DeadtimePrescalerValue):
分频设置。
死区时间的定时也是由对BusClock计数实现的,DTPS设定的时对BusClock分频的设置。
DTPS=0X:
分频比为1;
DTPS=10:
分频比为4;
DTPS=11:
分频比为16。
∙DTVAL(DeadtimeValue):
DTVAL设置对DTPS分频后的时钟的计数值以确定死区插入的时间。
死区插入的时间=DTPS*DTVAL*总线时钟周期。
34通道极性寄存器(FTMx_POL)ChannelsPolarity
当各通道的出于非活动状态,给寄存器设置各通道非活动状态下的值。
各位都写保护,只有当MODE[WPDIS]=1时可写入。
35输入捕捉滤波控制寄存器(FTMx_FILTER)InputCaptureFilterControl
该寄存器设置输入通道的滤波值,通道4、5、6、7无输入滤波器。
注意,写入该寄存器的值将立刻起作用,而且通道0、1、2、3必须在输入模式下,如设置不当可能造成错过正确的信号。
滤波模式一般只在输入捕捉时使用,当启用滤波功能时,如果输入端发生变化,则滤波器内部的5bit计数器开始累加计数,一旦溢出(溢出值由CHnFVAL[3:
0]设定),输入端变化才提交给边沿检测器。
如果计数过程中,输入端再次发生相反变化,则计数器会被复位并重新开始计数,这样一些比过滤时间短的脉冲则会被视为干扰且不会提交给边沿计数器,只有在滤波模块计数期间保持稳定的信号才会提交给边沿计数器。
36正交解码控制和状态寄存器(FTMx_QDCTRL)QuadratureDecoderControlandStatus
正交解码一般用于正反向脉冲计数,由旋转编码器输入A相和B相脉冲,由FTM模块根据相位自动增加或减少。
在电机正反转测速时非常有用。
∙PHAFLTREN(PhaseAInput