第6章 定时器相关模块_第1页
第6章 定时器相关模块_第2页
第6章 定时器相关模块_第3页
第6章 定时器相关模块_第4页
第6章 定时器相关模块_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 定时器相关模块本章导读:本章讲述了计数器/定时器的一般工作原理,介绍K60N512的定时接口模块(PDB、 FTM、PIT、LPTMR、CMT和RTC )的基本功能与编程基础,并给出具体的例子,读者要仔细体会各种不同的使用方法,并将这些方法运用到具体的应用中。本章知识点有计数器/定时器的工作原理;可编程延时模块PDB;Flex定时器FTM;周期中断定时器PIT;低功耗定时器LPTMR;载波调制传输接口 CMT;实时时钟RTC。6.1计数器/定时器的基本工作原理在嵌入式应用系统中,有时要求能对外部脉冲信号或开关信号进行计数,这可通过计数器来 完成。有些设备要求每间隔一定时间开启并在一段时

2、间后关闭,有些指示灯要求不断地闪烁,这 可利用定时信号来完成。个人计算机也经常要用到定时信号,如系统日历时钟的计时、产生不同 频率的声源等。在计算机系统屮,计数与定时问题的解决方法是一致的,只不过是同一个问题的 两种表现形式。实现计数与定时的基本方法有三种:完全硬件方式、完全软件方式、可编程计数器/定时器。 1.完全硬件方式在过去的许多仪器仪表或设备中,需要进行延时、定时或计数,经常使用数字逻辑电路实现, 即完全用硬件电路实现计数/定时功能,若要改变计数/定时的要求,必须改变电路参数,通用性和灵活性差。在微型电子计算机出现以后,特別是随着单片微型计算机的发展与普及,这种完全硬件方式实现定时与计

3、数的方法已较少使用。2.完全软件方式在计算机中,通过编程利用计算机执行指令的时间实现定时,称为完全软件方式,简称软件方式。在这种方式中,一般是根据所需要的时间常数来设计一个延时子程序,延时子程序中包含一定的指令,设计者要对这些指令的执行时间进行精确的计算和测试,以便确定延时时间是否符合要求。当时间常数比较大时,常常将延时子程序设计为一个循环程序,通过循环常数和循环体 内的指令来确定延时时间。这样,每当延时子程序结束以后,可以直接转入下而的操作,也可以用输出指令产生一个信号作为定时输出。这种方法的优点是节省硬件。主要缺点是执行延时程序期间,CPU一直被占用,所以降低了 CPU的使用效率,也不容易

4、提供多作业环境;另外,设计延时子程序时,要用指令执行时间来拼凑延时时间,显得比较麻烦。不过,这种方法在实际应用中还是经常使用的,尤其是在已有系统上作软件开发时,以及延时时间较小而重复次数又较少的情况。在计算机控制软件开发过程中,作为粗略的延时,经常使用软件方法来实现定时。3.可编程计数器/定时器利用专门的可编程计数器/定时器实现计数与定时,克服了完全硬件方式与完全软件方式的缺点,综合利用了它们各自的优点,其计数/定时功能可由程序灵活地设置,设定之后与CPU并行地工作,不占用CPU的工作时间。应用可编程计数器/定时器,在简单的软件控制下,可以产生准确的时间延时。这种方法的主要思想是根据需要的定时

5、时间,用指令对计数器/定时器设置定时常数,并用指令启动计数器/定时器开始计数,当计数到指定值时,便自动产生一个定时输出。在计数器/定时器开始工作以后,CPU不必去管它,而可以去做其他工作。这种方法最突出的优点是计数时不占用CPU的时间,如果利用计数器/定时器产生中断信号还可以建立多作业的环境,所以可大大提高CPU的利用率。加上计数器/定时器本身的开销并不很大,因此这种方法在微机应用系统中得到了广泛的使用。K60的定时器接口模块包括了六个子模块:可编程延迟模块PDB、Flex定时器模块FTM、周期中断定时器模块PIT、低功耗定时器模块LPTMR、载波调制发射器模块CMT,以及实时时钟模块RTC。

6、下面逐个介绍这几个模块。6.2可编程延迟模块PDB6.2.1 PDB的基础知识可编程延迟模块(Programmable Delay Block, PDB)可以提供从内部/外部触发源、可编程间隔到A/D转换(Analog To Digital Convert, ADC)的硬件触发,也可以提供D/A转换模块(Digital-to-Analog Converter, DAC)间隔触发的可控时延,这样就可以为ADC转换和DAC输出提供精确的时间。由于本章涉及ADC与DAC的内容,读者可以先阅读后面的章节再进行本节的学习。另外,PDB模块还可以选择性提供脉冲输出。PDB模块包含高达15种输入触发中断源和

7、软件触发中断源、8路的可配置用于ADC触发的PDB通道、8路的DAC内部触发源和8路的脉冲输出。PDB结构框图如图6-1所示。在图中,只显示了PDB通道n,DAC间隔触发器x以及脉冲输出y (用虚线框表示),没有显示PDB使能控制逻辑与时序错误中断逻辑。6.2.2 PDB模块寄存器介绍PDB的寄存器绝对地址(十六进制)寄存器名称访问4003_6000状态和控制秒寄存器(PDB0_SC)R/W4003_6004模寄存器(PDB0_MOD)R/W4003_6008计数寄存器(PDB0_CNT)R4003_600C中断延时寄存器(PDB0_IDLY)R/W4003_6010通道n控制寄存器1((PD

8、B0_CH0C1)R/W4003_6014通道n状态寄存器(PDB0_CH0S)W1c4003_6018通道n延时0寄存器(PDB0_CH0DLY0)R/W4003_601C通道n延时1寄存器(PDB0_ CH0DLY1)R/W4003_6038通道n控制寄存器1( PDB0_CH1C1 )R/W4003_603C通道n状态寄存器( PDB0_CH1S )W1c4003_6040通道n延时0寄存器(PDB0_CH1DLY0)R/W4003_6044通道n延时1寄存器(PDB0_ CH1DLY1)R/W4003_6150DAC间隔触发n控制寄存器( PDB0_DACINTC0 )R/W4003_

9、6154DAC间隔n寄存器( PDB0_DACINT0 )R/W4003_6158DAC间隔触发n控制寄存器( PDB0_DACINTC1)R/W4003_615CDAC间隔n寄存器( PDB0_DACINT1 )R/W4003_6190输出脉冲n使能寄存器( PDB0_PO0EN)R/W4003_6194输出脉冲n延时寄存器( PDB0_PO0DLY)R/W1)状态和控制寄存器(PDBx_SC)PDBx_SC位描述位描述31-20:预留预留,只读,值为019-18:LDMOD装载模式选择LDOK置位后,此位为MOD、IDLY、ChnDlym、INTx和POyDly寄存器的负载模式选择位00

10、一旦LDOK置位后,内部寄存器立即从缓冲区装载值01 PDB计数器的值与MOD寄存器的值相等且LDOK置位后,内部寄存器从缓冲区装载值(1)10 LDOK置位后,如果检测到输入触发事件,内部寄存器从缓冲区装载值(2)11 当(1)或(2)发生时,内部寄存器从缓冲区装载值。17:PDBEIEPDB时序错误中断使能位0 禁止中断1 使能中断16:SWTRIG软件触发当使能PDB而且选择软件触发作触发输入源时,写1到此位会使计数器重新计数。写0无 效。 读为015:DMAENDMA使能位0 禁止1 使能14-12:PRESCALER预分频选择位000 1倍倍频001 2倍倍频010 4倍倍频011

11、8倍倍频100 16倍倍频101 32倍倍频110 64倍倍频111 128倍倍频11-8:TRGSEL输入触发源选择为PDB选择输入触发源。输入触发源可以是内部或者外部触发源,或者软件触发。00001110分别为中断源0中断源14,1111为软件中断源7:PDBENPDB使能位0 禁止,计数器关闭1 使能6:PDBIFPDB中断标志位当计数器的值等于IDLY寄存器的值时,此位置位。写0清该位。5:PDBIEPDB中断使能这一位使能PDB中断。当此位被置位且DMAEN被清除时,PDBIF会产生一个中断0 禁止1 使能4:预留预留,只读,值为03-2:MULT倍频因子选择位00 倍频因子为101

12、 倍频因子为1010 倍频因子为2011 倍频因子为401:CONT连续模式使能位0 单次模式1 连续模式0:LDOK装载数据OK位写1可以让缓冲装载内部寄存器MOD、IDLY、ChnDlym、INTx和POyDly的值。MOD、IDLY、ChnDlym、INTx和POyDly可以通过LDMOD发挥作用。2)模寄存器(PDBx_MOD)PDBx_MOD位寄存器位描述31-16:预留预留,只读,值为015-0:MODPDB模值这些位确定了计数器的周期,当计数器达到这个值时,归零,如果PDB为连续模式,重新计数。3)计数寄存器(PDBx_CNT)PDBx_CNT位描述位描述31-16:预留预留,只

13、读,值为015-0:CNTPDB计数器,只读4)中断延时寄存器(PDBc_IDLY)PDBc_IDLY位描述位描述31-16:预留预留,只读,值为015-0:IDLYPDB中断延时,这些位确定PDB中断的延时值5)通道n控制寄存器1(PDBx_CHnC1)每个PDB通道都有一个控制寄存器CHnC1,用来控制每个PDB通道的功能。PDBx_CHnC1位描述位描述31-24:预留预留,只读,值为023-16:BBPDB通道预触发背靠背操作使能位0 禁止1 使能15-8:TOSPDB预触发输出选择位这些位用来选择PDB的ADC预触发输出。0 PDB通道响应旁路模式的预触发。1当在输入触发源检测到一个

14、上升沿信号后,计数器的值等于通道延时寄存器的值加一个预分频周期时,或者选择软件触发模式且SWTRIG置位,预触发器会响应7-0:ENPDB通道预触发使能位0 禁用PDB通道响应预触发器1 使能 PDB通道响应预触发器6)通道n状态寄存器(PDBx_CHnS)PDBx_CHnS位描述位描述31-24:预留预留,只读,值为023-16:CFPDB通道标志当PDB计数器与CHnDLYm匹配时置位CFm。写0清除15-8:预留预留,只读,值为07-0:ERRPDB通道时序错误标志0 PDB通道响应预触发器不检测时序错误1 PDB通道响应预触发器检测时序错误7)通道n延时0寄存器(PDBx_CHnDLY

15、0)PDBx_CHnDLY0位描述位描述31-16:预留预留,只读,值为015-0:DLYPDB通道延时值这些位确定通道响应预触发器的延时值8)通道n延时1寄存器(PDBx_CHnDLY1)功能同通道n延时0寄存器,不再赘述。9)DAC间隔触发器n控制寄存器(PDBx_DACINTCn)PDBx_DACINTCn位描述位描述31-2:预留预留,只读,值为01:EXTDAC外部输入触发使能位0 禁用DAC外部输入触发1 使能DAC外部输入触发0:TOEDAC间隔触发使能位0 禁止1 使能10)DAC间隔n寄存器(PDBx_DACINTn)PDBx_DACINTn位描述位描述31-16:预留预留,

16、只读,值为015-0:INTDAC间隔这些位决定DAC间隔触发器的间隔值11)脉冲输出n使能寄存器(PDBx_POnEN)PDBx_POnEN位描述位描述31-8:预留预留,只读,值为07-0:POENPDB脉冲输出使能0 禁止1 使能12)脉冲输出n延时寄存器(PDBx_POnDLY)PDBx_POnDLY位描述位描述31-16:DLY1PDB脉冲输出延时1这些位用来确定PDB脉冲输出延时1的值。当PDB计数器等于DLY1时,脉冲输出高。15-0:DLY2PDB脉冲输出延时2这些位用来确定PDB脉冲输出延时2的值。当PDB计数器等于DLY2时,脉冲输出高。6.2.3 PDB模块概要与编程要点

17、1.PDB输入触发源选择PDB有多达15个输入触发源,叫做Trigger-In 014,在图6-1中可以看到,它们与片上或片下事件源相连。通过PDB状态控制寄存器SC的软件触发位(SWTRIG)可以将PDB设置为软件触发,通过SC的输入触发源选择位域(TRIGSEL)可以使能触发输入源Trigger-In 0到14 中的某一个,或者是软件触发。SCTRIGSEL的取值范围为00001111,其中00001110对应 触发源Trigger-In 0到14,1111对应软件触发。详细信息参见本章阅读材料。2. DAC间隔触发器输出PDB可以产生间歇的触发,周期性的更新DAC输出。当产生输入触发事件

18、且DACINTCxEXT 等于零时,复位DAC间隔计数器x并重新开始计数。当间隔计数器x的值等于DACINTx寄存器设置的值时,DAC间隔触发器x会输出一个脉冲来更新DACx,该脉冲的脉宽等于一个外设时 钟周期。如果置位DACINTCxEXT,将旁路DAC间隔计数器,而且在检测到DAC外部输入触发有上升沿之后,DAC间隔触发器x会输出一个脉冲。清位DACINTCxTOE将禁止DAC间隔计数器和DAC间隔触发器。当PDB计数器等于PDB模寄存器MOD的值时,复位DAC间隔计数器。因此当PDB计数器归零时,DAC间隔计数也会重新开始。在图6-1可以看到DAC间隔触 发输出框图。3.脉冲输出PDB可

19、以输出宽度可配置的脉冲。当PDB计数器的值等于PDB脉冲输出y延时寄存器DLY1的值时,脉冲输出为高;当计数器达的值等于PDB脉冲输出y延时寄存器DLY2的值时,脉冲输出为低。由图6-1也可以看到脉冲输出框图。图6-1 PDB结构框图6.2.3 PDB构件设计及测试实例(省略)6.3 Flex定时器FTM6.3.1 FTM的基础知识弹性定时器模块(FlexTimer Module, FTM)是一个支持输入捕捉、输出比较、产生可用来 控制电机的PWM信号和电源管理应用的通道定时器。它建立在飞思卡尔8位微控制器HCS08 定时器PWM模块TPM上,并且在低功耗和向后兼容TPM的基础上进行功能扩展,

20、增加了有符号的加法计数器、故障控制输入、增强了触发功能和极性控制来满足电机控制、电源转换等 的需要。所有与TPM模块相同的特性完全向后兼容,FTM在相同的核心平台下不需要对代码做 任何改变就可以实现相同的功能。FTM具有可选的时钟源,可以是系统时钟、固定频率时钟或者外部时钟;具有1、2、4、8、16、32、64、128预分频;一个可以进行无符号或有符号计数的16位计数器,为FTM提供定时 参考;每一个通道都可配置为输入捕捉、输出比较或者边缘对齐的PWM模式;每个通道的极性 都可以配置,并产生溢出中断、通道中断、故障中断等中断。当TOIE=l 且TOF=l时,产生定时 器溢出中断,当ChnIE=

21、l且CHnF=l时,产生通道(n)中断,当FAULTIE=1且FAULTF=1时, 产生故障中断。图6-2显示了 FTM模块结构,其中心组件为16位计数器。6.3.2 FTM模块寄存器介绍FTM寄存器非常多,我们这里只列举常用的8个。1)状态和控制寄存器(FTMx_SC)SC包含溢出状态标志和控制位,用来配置中断使能、FTM配置、时钟源和预分频因子。这些控制和这个模块的所有通道相关。FTMx_SC位域描述位域描述31-8保留这个只读位域被保留,值常为0。7TOF定时器溢出标志位0 FTM计数器不溢出1 FTM计数器溢出6TOIE定时器溢出中断使能0 禁止TOF中断。使用软件轮询1 使能TOF中

22、断。当TOF等于1时产生中断5CPWMS中央对齐PWM选择位0 FTM计数器向上计数1 FTM计数器向上向下计数4-3CLKS时钟源选择00 没有选择任何时钟(实际上是禁止FTM计数器)01 系统时钟10 固定频率时钟11 外部时钟2-0PS预分频因子选择位000 1分频001 2分频010 4分频011 8分频100 16分频101 32分频110 64分频111 128分频2)计数器(FTMx_CNT)CNT寄存器包含FTM计数器的值。复位清CNT寄存器,写任何值到COUNT中会将计数器更新为它的初始值(CNTIN),当激活BDM时,FTM计数器冻结。FTMx_CNT位域描述位域描述31-

23、16保留只读位域被保留,总是为0。15-0COUNT计数器值3)模寄存器(FTMx_MOD)模寄存器包含FTM计数器的模值。FTM计数器达到模寄存器的值后,在下个时钟周期置位溢出标志(TOF),FTM计数器的下一个值取决于所选的计数方式。写MOD寄存器会将值锁存到缓冲区中,MOD寄存器会根据写缓冲区中的值更新寄存器。如果FTMEN=0,通过写SC寄存器可能复位写一致机制,推荐在写MOD寄存器之前初始化FTM计数器。FTMx_MOD位域描述位描述31-16:预留预留,只读,值为015-0:MOD模值4)通道n状态和控制寄存器(FTMx_CnSC)CnSC包含了通道中断状态标志和控制位,用于配置中

24、断使能、通道配置和引脚功能。FTMx_CnSC位描述位描述31-8:预留预留,只读,值为07:CHF通道标志0 无通道事件发生1 有通道事件发生6:CHIE通道中断使能位0 禁止1 使能5:MSB通道模式选择位在通道逻辑中,用于进一步的选择,它的功能取决于通道模式。此位已被写保护。只有当MODEWPDIS = 1时才可写。4:MSA通道模式选择位在通道逻辑中,用于进一步的选择,它的功能取决于通道模式。此位已被写保护。只有当MODEWPDIS = 1时才可写。3:ELSB边沿或电平选择位ELSB和ELSA的功能取决于通道模式,此位已被写保护。仅当MODEWPDIS = 1时才可写。2:ELSA边

25、沿或电平选择位ELSB和ELSA的功能取决于通道模式,此位已被写保护。仅当MODEWPDIS = 1时才可写。1:预留预留,只读,值为00:DMADMA使能位0 禁止1 使能5)通道n值寄存器(FTMx_CnV)这些寄存器包括了输入捕捉模式下捕捉的FTM计数器的值或者输出比较模式下的匹配值。在输入捕捉、捕捉测试和双边沿捕捉模式,写CnV无效。在输出比较模式下,写CnV寄存器将会把写入的值装载到缓冲中。FTMx_CnV位描述31-16:预留预留,只读,值为015-0:VAL通道值捕捉到的FTM计数器的值或输出比较输出匹配值6)计数器初始值寄存器(FTMx_CNTIN)该寄存器包括FTM计数器的初

26、始值,写该寄存器会将值装载到缓冲区中。FTMx_CNTIN位描述位描述31-16:预留预留15-0:INITFTM计数器的初始值7)捕捉和比较状态寄存器(FTMx_STATUS)该寄存器包括了对每个FTM通道的状态标志CHnF位的副本。通过读该寄存器可以得到所有通道的CHnF位的值。写0x00到该寄存器可以清掉所有的CHnF位的值。当通道上有事件发生时,硬件会使响应的通道标志置位。当CHnF被置位时,读该寄存器可以清CHF。写1到CHF无效。FTMx_STATUS位描述位描述31-8:预留预留,只读,值为07-0CHnF通道n标志位0 无事件发生1 有事件发生8)特性模式选择寄存器(FTMx_

27、MODE)这个寄存器包含用来配置出错中断和出错控制的控制位,捕捉测试模式,PWM同步化,写保护,通道输出初始化,和使FTM加强的特性。这些控制与该模块内的所有通道有联系。FTMx_MODE位描述位描述31-8预留该位为只读位而且其值总为0。7FAULTIE故障控制中断使能位0 禁用故障控制中断1 使能故障控制中断6-5FAULTM故障控制模式00 对所有的通道禁用故障控制。10 仅对0、2、4、6通道使能故障控制,手动清除故障10 对所有的通道使能故障控制,且手动清除故障11 对所有的通道使能故障控制,且自动清除故障4CAPTEST捕捉测试模式使能位0 禁用捕捉测试模式1 使能捕捉测试模式3P

28、WMSYNCPWM同步模式0 无限制,软件触发和硬件触发都可通过MOD、CnV、OUTMASK以及FTM计数器来同步化1 软件触发仅通过使用MOD和CnV同步化,硬件触发仅通过使用OUTMASK和FTM计数器同步2WAPDIS禁用写保护0 写保护允许 1 禁止写保护1INIT初始化通道输出写0到INIT,可以根据OUTINIT寄存器的相应位初始化通道输出,写1到INIT,无效。读INIT总是为00FTMENFTM使能位0 只有TPM兼容寄存器可用,FTM专用寄存器不可用1 所有的寄存器都可用6.3.3 FTM模块概要与编程要点本小节具体阐述FTM各个模块的特征,由于版面有限,这里只列举了常用的

29、几个模块。1.计数时钟源与分频FTM状态和控制寄存器(FTMx_SC)的CLKS1:0位用于选择FTM计数器的时钟源,CLKS1:0=00表示没有选择任何时钟,相当于关闭FTM计数器,CLKS1:0=01表示系统时钟源,CLKS1:0=10(固定频率时钟),CLKS1:0=11(外部时钟)。MCU复位后,CLKS1:0=00,关闭FTM计数器。选择的时钟源的分频因子由FTM状态和控制寄存器(FTMx_SC)的PS2:0位 决定,PS2:0=000 (1分频),PS2:0=001 (2分频),PS2:0=010 (4分频),PS2:0=011 (8分频),PS2:0=100 (16分频),PS2

30、:0=101 (32分频)。2.计数器FTM有一个16位计数器,供通道使用,计数器的操作主要有向上计数与向上向下计数。向上计数:当FTM正交解码控制和状态寄存器(FTMx_QDCTRL)的正交解码模式使能位QUADEN=0且FTM状态和控制寄存器(FTMx_SC)的中央对齐PWM选择位CPWMS=0时向上计数,CNTIN定义了计数起始值,MOD定义了计数的最终值。如图6-2所示,FTM计数器先加载CNTIN值,然后开始计数,直到达到MOD值,然后计数器重新加载CNTIN值,重复以上 步骤。如果CNTIN=0x0000,FTM计数和TPM向上计数一样,即向上无符号计数,如果 CNTIN15=1,

31、FTM是向上有符号计数,如果CNTIN (15) =0 且 CNTIN0x0000, FTM也是向上无符号计数。向上向下计数:当QUADEN=0且CPWMS=1时,向上向下计数。CNTIN定义了计数起始值,MOD定义了计数的最终值。同向上计数一样,FTM计数器先加载CNTIN值,然后开始计数,直到达到MOD值,但是不同于向上计数,此时计数器执行减数操作,直到它回到CNTIN值,上下计数重新开始。FTM模块除了以上操作外还可以有以下三个常用的模块。输入捕捉:输入捕捉功能主要用来监测外部的事件和输入信号。当外部事件发生或信号发生 变化时,在指定的输入捕捉引脚发生一个指定的沿跳变(由FTMx_CSC

32、寄存器的ELSnB和ELSnA域指定是上升沿还是下降沿,具体内容参见本章阅读资料)。定时器捕捉到特定的沿跳变后,会把计数寄存器当前的值锁存到通道寄存器。如果在输入捕捉控制寄存器中设定允许输入捕捉中断,系统会产生一次输入捕捉中断,利用中断处理软件可以得到事件发生的时刻或信号发生变化 的时刻。输出比较:输出比较的功能是用程序的方法在规定的时刻输出需要的电平,实现对外部电路 的控制。当定时器的某一通道用做输出比较功能时,通道寄存器的值和计数寄存器的值每隔一定时间比较一次。当两个值相等时,输出比较模块置定时器通道n状态和控制寄存器(FTMx_CnSC)的CHnF位为1,并且在该通道的引脚上输出预先规定

33、的电平。如果输出比较中断允许,还会产生一个中断。PWM:脉宽调制器(Pulse Width Modulator,PWM)产生一个在高电平和低电平之间重复交替的输出信号,这个信号被称为PWM信号,也叫脉宽调制波。通过指定所需的时钟周期和占空比来控制高电平和低电平的持续时间。通常定义占空比为信号处于高电平的时间(或时钟周期数) 占整个信号周期的百分比,方波的占空比为50%。脉冲宽度是指脉冲处于高电平的时间;PWM 分为以下三类。(1)边沿对齐PWM (Edge-Aligned PWM)。所有PWM信号的边沿在周期的开始对齐,如图6-3所示。EPWM周期period由MOD寄存器和CNTIN寄存器的

34、值决定(具体计算公式为MOD - CNTIN + 0x0001 ),脉冲宽度pulse width(占空比)由CnV寄存器和CNTIN寄存器的值决定(具体计算格式为CnV-CNTIN)。图6-3 边沿对齐PWM(2)中央对齐 PWM (Center-Aligned PWM)。如图6-4所示,CPWM周期由2*(MOD-CNTIN)决定,脉冲宽度(占空比)由2(CnV-CNTIN)决定,MOD必须在0x0001到0x7FFF内。图6-4 中央对齐PWM(3)通道合并模式。通道n(一个偶数通道)和通道n+l(相邻的奇数通道)合并到通道n输出一路PWM信号。周期由(MOD-CNTIN+OxOOOl)

35、决定,PWM脉冲宽度(占空比)由(C(n+l)V-C(n)V)的绝对值决定,其中C(n)V为通道n的CV寄存器值。3.信号描述FTM模块有六种用户访问信号线,具体描述见表6-1。表6-1 FTM用户访问信号线信 号描 述I/OEXTCLK外部时钟,用于驱动FTM计数器,外部时钟信号不能超过系统时钟频率的1/4ICHnFTM通道n,n为70,每个通道都可被配置为输入或者输出,通道的方向由模式决定I/OFAULTj故障输入j,j为30,如果FTMEN=1,FALUTM1:00,则使能故障控制。FTM有4种故障输入, FAULTnEN位使能故障输入n,FFLTRnEN位使能故障输入n滤波器,FFVA

36、L3:0位选抒每个故障输入 的滤波器的值IPH A如果FTMEN=1且QUADEN=1,选择正交解码器模式,正交解码器模式使用输入信号相A和相B控 制FTM计数器的增加和减少。通过PHAFLTREN位使能相A输入过滤器,且这个过滤器的值在FILTER0 寄存器的CH0FVAL3:0位定义IPHB正交解码器B相输入,控制FTM计数器增加或者减少的信号。通过PHBFLTREN位使能相B输入过 滤器,且这个过滤器的值在FILTER0寄存器的CH1FVAL3:0位定义I6.3.3 FTM构件设计及测试实例省略6.4 周期中断定时器PIT6.4.1 PIT的基础知识周期中断时器模块(Periodic I

37、nterrupt Timer,PIT)是一组可以用于产生中断和触发DMA通道的定时器。所有的中断都是可屏蔽的,每个定时器都有独立的溢出周期,此外,周期中断定时器模块没有外部引脚。图6-5为PIT模块的结构框图。图6-5 PIT模块的结构框图6.4.2 PIT模块寄存器在介绍可编程中断定时器PIT模块的编程方法之前,先简要介绍用于PIT模块的编程的几个寄存器:PIT模块控制寄存器(PIT_MCR),定时器加载值寄存器(PIT_LDVALn),当前定时器值寄存器(PIT_CVALn),定时器控制寄存器(PIT_TCTRLn)和定时器标志寄存器(PIT_TFLGn)。1)PIT模块控制寄存器(PIT

38、_MCR)这个寄存器控制定时器时钟是否使能和定时器是否运行在调试模式。PIT_MCR域描述域描述31-2预留这个只读位域是预留的,并且始终为0。1 MDIS模块禁止0 使能PIT定时器时钟。1 禁用PIT定时器时钟。0 FRZ冻结0 在调试模式下定时器继续运行。1 在调试模式下定时器停止。2) 定时器加载值寄存器(PIT_LDVALn)这些寄存器选择定时器中断的溢出周期。PIT_LDVALn域描述域描述31-0TSV定时器初始值字段这些位设置定时器开始值。定时器将会倒计数直到为0,然后产生一个中断后再加载这个寄存器的值。向这个寄存器写入新值不会重启定时器,相反在定时器到期后才会加载新值。为了取

39、消当前周期,以新值开始一个定时器周期,则必须先禁止定时器再使能定时器。3) 当前定时器值寄存器(PIT_CVALn)这些寄存器指示当前定时器的位置。PIT_CVALn域描述域描述31-0TVL当前定时器值如果使能了定时器,这些位就代表了当前定时器的值。如果定时器被禁止了,不要使用这些位域的值,因为这些值是不可靠的。4) 定时器控制寄存器(PIT_TCTRLn)这些寄存器包括了每个定时器的控制位。PIT_TCTRLn域描述域描述31-2预留这个只读位域是预留的,始终为0。1TIE定时器中断使能位。0 来自定时器n的中断请求被禁止1 不论TIF是否被设置,中断都会被请求0TEN定时器使能位0 定时

40、器n禁止1 定时器n有效5) 定时器标志寄存器(PIT_TFLGn)这些寄存器占有PIT中断标志。PIT_TFLGn域描述域描述31-1预留这个只读位域是预留的,始终为0。0TIF定时器中断标志0 超时不产生定时器中断。1 超时发生定时器中断。6.4.3 PIT模块概要与编程要点1.定时器如图6-5所示,每个定时器都先从PIT寄存器中加载初始值,然后递减计数直到为0,接着 再次加载初始值,重复以上步骤。每当定时器递减计数到0时,将产生一个脉冲触发并且置中断标志位。通过设置定时器控制寄存器TCTRL (Timer Control Register)的屮断使能标志位TIE位,可以开启或屏蔽定时器通

41、道中断。只有在旧中断被清除后,新中断才会产生。如果需要,可以通过当前定时器值寄存器CVAL读取定时器的当前计数器的值。重启计数周期时,先关闭定时器,然后置位TCTRL的定时器使能标志位TEN开启定时器,见图6-6。图6-6 停止和开始定时器如果要修改正在运行的定时器的计数周期,可以先关闭定时器,设置一个新的加载值,然后开启定时器来修改,见图6-7。图6-7 修改运行着的定时器周期此外,也可以不用重启定时器,而直接向定时器加载值寄存器LDVAL写入新值来改变计数周期。这个值将会在下一次触发事件后被加载,见图6-8。图6-8 动态设置新的加载值2.调试模式在调试模式中,通过置位PIT控制寄存器中的

42、FRZ位可以冻结定时器。这是为了在软件开发中,允许开发者停止定时器,查看系统的当前状态,然后继续操作。3.中断所有的定时器都支持中断。可以通过设置TIE位来使能定时器中断。在相关的定时器溢出中断发生时将置位定时器中断标志(TIF)。注意,中断处理除了要开定时器中断外还需要开对应的通道中断。6.4.3 PIT构件设计及测试实例省略6.5 低功耗定时器LPTMR省略6.6 载波调制发射器(CMT)省略6.7 实时时钟6.7.1 RTC基础知识1. RTC简介实时时钟(Real Time Clock, RTC)模块是一个独立供电的模块,在芯片掉电时由备用电源(VBAT)供电,确保RTC计时器正常运行

43、,保持RTC寄存器状态。RTC模块主要包含一个外部晶体振荡器、一个POR(Power-On Reset)块、RTC计时器以及自身的软件复位控制位。外部晶体振荡器为RTC计时器或其他外设提供32.768 kHz的时钟;POR块在RTC模块上电时产生一个上电复位信号,将所有的RTC寄存器初始化为默认状态;RTC计时器由一个具有报警功能的32位秒寄存器和一个具有补偿功能的16位预分频寄存器组成;RTC自身的软件复位控制位,也会初始化所有的RTC寄存器。注意,在VBAT掉电或POR中断时,不允许访问RTC的任何寄存器(除了控制寄存器),否则将产生总线错误。2.操作模式RTC模块拥有两种操作模式,即系统

44、掉电和系统上电。在系统掉电期间,RTC由备用电源供电,与其他模块电气隔离,此时如果计时器使能,则继 续计数,但是在此期间不可访问RTC寄存器。在系统上电期间,RTC仍然由备用电源供电。在此期间可访问RTC的所有寄存器,并且可 以为其他模块提供32.768 kHz的时钟。3.信号描述RTC模块共有三根信号线,其中一个作为输入,两个作为输出,具体描述见表6-3。表6-3 RTC信号描述信 号描 述I/OEXTAL3232.768 kHz的振荡器输入IXTAL3232.768 kHz的振荡器输出ORTCCLKOUT1 Hz方波输出O6.7.2 RTC模块寄存器介绍 RTC的寄存器绝对地址(十六进制)

45、寄存器名称访问4003_D000RTC定时器秒寄存器(RTC_TSR)R/W4003_D004RTC定时器预分频寄存器(RTC_TPR)R/W4003_D008RTC定时器报警寄存器(RTC_TAR)R/W4003_D00CRTC定时器补偿寄存器(RTC_TCR)R/W4003_D010RTC控制寄存器(RTC_CR)R/W4003_D014RTC状态寄存器(RTC_SR)R/W4003_D018RTC锁寄存器(RTC_LR)R/W4003_D01CRTC中断使能寄存器(RTC_IER)R/W4003_D800RTC写访问寄存器(RTC_WAR)R/W4003_D804RTC读访问寄存器(RT

46、C_RAR)R/W1)RTC定时器秒寄存器(RTC_TSR)域描述31-0 TSR如果使能计数器,只允许读TSR寄存器,此时只有不置位SRTOF或SRTIF,计时器才能执行加操作,如果置位SRTOF或SRTIF时,计数器为零。如果禁用计数器,允许读写TSR寄存器,写TSR寄存器将清零SRTOF或SRTIF位,不建议向TSR寄存器写0。 2) RTC定时器预分频器寄存器(RTC_TPR)域描述 31-16预留保留位,始终为零 15-0TPR如果使能计数器,只允许读访问TPR寄存器,计数器每隔32.768kHz个时钟周期加1,如果置位SRTOF 或SRTIFTPR,计数器清零。 如果禁用计数器,允

47、许读写TPR寄存器。3) RTC定时器报警寄存器(RTC_TAR)域描述 31-0 TAR如果使能计时器,不管TARTAR是否等于TSRTSR都会置位SRTAF,写 TAR 将清除 SRTAF。 4)RTC定时器补偿寄存器(RTC_TCR)域描述31-24CIC补偿间隔计数器,存放补偿间隔计数器的当前值 23-16TCV定时器补偿值,存放秒时间间隔补偿逻辑使用的当前值15-8CIR补偿间隔寄存器,用来配置补偿间隔为1256 7-0 TCR定时器补偿寄存器配置32.768kHz时钟周期的个数80h 每隔32896个时钟周期,定时器预分频寄存器溢出。 FFh 每隔32769个时钟周期,定时器预分频

48、寄存器溢出。00h 每隔32768个时钟周期,定时器预分频寄存器溢出。01h 每隔32767个时钟周期,定时器预分频寄存器溢出。 7Fh 每隔32641个时钟周期,定时器预分频寄存器溢出。5) RTC控制寄存器(RTC_CR)域描述31-15预留只读,始终为零14预留只允许写零,不允许读13-10分别为2pF、4pF、8pF、16pF振荡器的负载配置位,为0时,禁用负载,为1时,使能额外的负载9CLKO时钟输出0 32kHz的时钟输出到其他外设 1 32kHz的时钟不输出到其他外设8OSCE32.768kHz振荡器使能位0 禁用32.768kHz振荡器 1 使能32.768kHz振荡器7-4预

49、留只读,始终为零3UM模式更新位0 在状态寄存器被锁时,允许写SRTCE寄存器。 1 在状态寄存器被锁,并且置位SRTIF 或SRTOF,或者SRTCE清零时,仍然可以写SRTCE寄存器。2SUP监督访问0 不支持非监督写操作模式,否则将会产生总线错误 1 支持非监督写操作模式1WPE唤醒引脚使能位0 禁用唤醒引脚 1 使能唤醒引脚,如果RTC中断或者芯片掉电,那么唤醒引脚发生中断0SWR软件复位0 不起作用 1 除了SWR位、RTC_WAR寄存器与RTC_RAR寄存器外,复位所有的RTC寄存器。6) RTC状态寄存器(RTC_SR)域描述31-5预留 只读,始终为零4 TCE计数器使能位0

50、禁用计数器 1 使能计数器3预留 只读,始终为零2 TAF定时器报警标志位0 定时器不报警 1 定时器报警1 TOF定时器溢出标志0 定时器不会溢出 1 定时器溢出,计数器清零0 TIF定时器无效标志0 定时器有效 1 定时器无效,计数器清零7) RTC锁寄存器(RTC_LR)域描述:位317,位21预留且只允许读,除位7、位20为1外,其余都为0。位63分别为URL(锁定寄存器加锁位)、SRl(状态寄存器加锁位)、CRL(控制寄存器加锁位)与TCL(定时器补偿寄存器加锁位),为0时,相应的寄存器加锁,不允许对其进行写操作,为1时,允许对其进行写操作。8)RTC中断使能寄存器(RTC_IER)

51、域描述:位331预留用,位02,即TAIE、TOIE、TIIE,分别为定时器报警中断使能位、定时器溢出中断使位、定时器无效中断使能位,都是为0时禁用中断,为1时使能中断。9)RTC写访问寄存器(RTC_WAR)域描述:位318为预留,只读且始终为0。位70,即IERW、LRW、SRW、CRW、TCRW、TARW、TPRW、TSRW,分别为中断使能寄存器的写操作位、加锁寄存器的写操作位、状态寄存器的写操作位、控制寄存器的写操作位、定时器补偿寄存器的写操作位、报警寄存器的写操作位、定时器预分频寄存器的写操作位、定时器秒寄存器的写操作位,当它们为0时,不能进行写操作,为1时,可以进行写操作。10)

52、RTC读访问寄存器(RTC_RAR)域描述:位318为预留,只读且始终为0。位70,即IERR、LRR、SRR、CRR、TCRR、TARR、TPRR、TSRR,分别为中断使能寄存器的读操作位、加锁寄存器的读操作位、状态寄存器的读操作位、控制寄存器的读操作位、定时器补偿寄存器的读操作位、报警寄存器的读操作位、定时器预分频寄存器的读操作位、定时器秒寄存器的读操作位,当它们为0时,不能对寄存器进行读操作,为1时,可以进行读操作。6.7.3 RTC模块概要与编程要点1.电源、时钟和复位RTC模块是一个独立供电的模块,在芯片掉电时由备用电池(VBAT)供电,确保RTC寄存 器保持状态与RTC计时器正常运

53、行。RTC模块的时钟频率为32.768 kHz,该时钟是由一个外部晶体振荡器提供的。每当RTC模块上电时,其自身的模拟POR块产生一个上电复位信号,将所有的RTC寄存器初始化为默认状态;RTC自身的软件复位控制位,也会初始化所有的RTC寄存器。2.RTC振荡器RTC振荡器为RTC提供时钟源,其结构图如6-11所示。其中EXTAL32为振荡器输入信号,XTAL32为振荡器输出信号。该模块包含一个放大器(gm),为RTC振荡器提供负电阻。振幅探测器(Amplitude Detector)控制放大器的增益,达到优化功耗的目的。使用施密特触发器将振荡 器产生的正弦波转化为脉冲时钟输出,作为RTC的参考时钟。在EXTAL32与XTAL32之间连接一个约100的内部反馈电阻(Rf)。另外,在RTC 振荡器中还有两个可变电容C1与C2 (变化范围 为030pF), 可以作为振荡器的负载电容使用。注意,RTC振荡器没有复位状态,也不会产生任何中断。图6-11 RTC振荡器框图3.计时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论