arm9s440处理器的定时器原理_第1页
arm9s440处理器的定时器原理_第2页
arm9s440处理器的定时器原理_第3页
arm9s440处理器的定时器原理_第4页
arm9s440处理器的定时器原理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、一、定时器的工作原理在前面实验中,程序需要延时,我们是利用空循环语句来实现。这种方法的延时简单,但不是很精确。当需要精确延时时,就不能采用这种方法了。一般是利用定时器来实现。定时器的工作原理是在输入时钟MCLK勺作用下,采用倒计时方式对减1计数器预先编程设置的计数初始值不断减1,减到0时一次定时过程结束。所产生的定时时间等于计数初值乘以MCLK寸钟周期。二、S3c2440的时钟源在讲解之前,先介绍一下s3c2440时钟系统。一般来说,MCU的主时钟源主要是外部品振或外部时钟,而用的最多的是外部品振。在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。由于外部时钟源的频率一般不能

2、满足系统所需要的高频条件,所以往往需要PLL(锁相环)进行倍频处理。在s3c2440中,有2个不同的PLL,一个是MPLL另一个是UPLLUPLL是给US限供48MHz在这里,我们主要介绍MPLL外部时钟源经过MPLL处理后能够得到三个不同的系统时钟:FCLKHCLQ口PCLK?FCLK主频日钟,400MHz,用于ARM920呐核;?HCLKffi于AHB总线设备,100MHz如ARM920T内存控制,中断控制,LCD空制,DMAa及USB主模块;?PCLKffl于APB总线设备,50MHz,如外围设备的看门狗,IIS,I2C,PWMMMd口,ADCUARTGPIQRTC以及SPI。这三个系统

3、时钟(FCLKHCL标口PCLK是有一定的比例关系,这种关系是通过寄存器CLKDIVN中的HDIVN位和PDIVN位来控制的,因此我们只要知道了FCLK再通过这两位的控制,就能确定HCLK口PCLK而FCLe如何得到的呢?它是通过输入时钟(即外部时钟源)的频率,经过一个计算公式得到的,这个计算公式还需要三个参数(MDIVPDIV、SDIV),而这三个参数是经过寄存器MPLLCON配置得到的。MPLLWmSMpll=(2xmxFin)/(px2s)m=(MDIV+8),p=(PDIV+2),s=SDIV假如我们想让FCLK=400MHz那么这三个参数该如何取值呢?MDIV=92PDIV=1SDI

4、V=1经过下面的计算得出:m=(MDIV+8)=92+8=100p=(PDIV+2)=1+2=3s=SDIV=1FCLK=(2*m*Fin)/(p*2s)=(2*100*12)/(3*2)=400MPLLfiSISffS(MPLLCON和UPLLCON)R/W提位值MPLLCON0x4C000004RM/MPLL配置寄存器0x00090030UPLLCON0x4G000008R/WUPLL配宜寄存器0x0004d030PLLCON位初始状态MDIV19:12主领梅湖0x96i0x4dPDIV区4预分频器控制0x03/0x03SDIV10后分频器控制0x0/0x0从上面这个图我们可以发现,MDI

5、V、PDIV、SDIV这三个倍频因子,分别位于MPLLCON寄存器的19:12,9:4,1:0,配合上面的经典值。rMPLLCON=(92<<12)|(1<<4)(1<<0);/92的十六进制是5cPLL值蝌表输入脾输出频率MDIVPDIVSDIV12,0000MHz48.00MHz,注尔56(0x38)2212.0000MHz96.00MHz'注目56(0x38)211Z0000MHz271.50MHz173(0xAD)2212.0000MHz304.00MH268(0x44)1112.0000MHz405.00MHz127(0x7f)211200

6、00MHz532.00MHzl25(0x7d)1116,9344MHz47.98MH小注制S0(0x3C)4216.9344MH295.96MHz,注词6D(Ox3C)4116.9344MHz266.72MHl110(0x76)2216.9344MHz296.35MHz97(0x61)1216,9344MHz399.65MHz110(0x6E)3116.9344MHz530.61MHz86(0x56)1116.9344MH2533.43MH/118(Qx76)11注释:48.00MHz和96.00MHz输出是用于UPLLCQN寄存着.从上面这个图上我们可以发现,三星公司建议的一些经典的参数值,

7、我们看至U当InputFrequency取12MHz的时候,OutputFrequency输出405MHz(接近400MHz),止匕时MDIV取0X7F,PDIV取0X02,SDIV取0x1。即rMPLLCON=(0x7f<<12)|(2<<4)(1<<0);这样FCLK=405MHz就设置好啦。除了FCLK我们还经常用到HCLK、PCLK这二个时钟,我们该如何由FCLK获得这二个时钟频率呢,那就是通过CLKDIVN和CAMDIVN分频寄存器的设置啦。(CLKDIVN)mtR/W描述位值CLKDIVN0X4C000014R/W时钟分频控制寄存器禽000000

8、04CLKDIVN位初始状忠DIVNUPLL冏UCLK选择寄存器(UCLK必须为48MHzUSB)0:UCLK=UPLL1:UCLK=UPLL12当UPLL时钟被设置为48MHz时,设置为0当UPLL时钟被设置为96MHz时r设置为10HDIVN2100:HCLK=FCLK/101:HCLK=FCLK/210:HCLK=FCLK/4当CAMDIVN9=0时HCLK=FCLK/8当CAMDIVN9=1时11:HCLK=FCLK/3当CAMOIVN8=0时HCLK=FCLK/6当CAMDIVN8=1时00PDIVN00:PCLK是和HCLK/1相同的时神1:PCLK是和HCLK/2相同的时钟。睢a

9、«映时钟分删(CAMDIVN)寄存器witR/WIrT8,mACAMDIVN0x4C0M01SR/W摄像头时钟分赖寄存器0x00000000CAMDIVN位3DVSEN0:£5DVSARM内辕将正常运行在FCLK(MPLL输出)1:开启DVSARM内核将运行在与系统时坪的时钟fHCLK)0保留nn保留0P保苗1O保留0HCLKJ|_HALF网当CLKDIVN2:1=l0b时HDIVN分频率改变位0:HCLK-FCLK/4H二HCLK=FCLK/8参考CLKDIV寄存器0HCLK3_HALFB当CLKDlVN(2:1)=11b时H口卬附分.烦率改变位0:HCLK»F

10、CLK/31:HCLK-R;|,K?8参考CLKDIV寄存器0CAMCLK_SEL(4|0二簸UPLL输出作为CAMCLK(CAMCLK=UPLL输出)1:CAMCLKD卬的值分频得到CRMCLK0CAMCLK_DIV口切CAMCLK分频因子设置寄存器10至15)摄像头硼=UPLL/KCAMCLK_DIV*1)ot2此位在CAWCLK_SEL=1时有/0从上面二个图中我们可以发现,如果我们想要FCLK:HCLK:PCLK=1:4:8的话,若主频FCLK是400MHz,如果按照1:4:8的设置,可以先设置CLKDIVN为0101,然后设置CAMDIVN的第9位为0(不设置的时候该位默认为0),此

11、时HCLK是100MHz,PCLK是50MHz。FCLKHCLKPCLK设置比例HDIVNPDIVNHCLK3_HALF/HCLK4_HALFFLCKHCLKPCLK分频比00-FLCKFLCKFLCK1:1:101.FLCKFflckFLCK/2Fl:1:210.FLCKFLCK/2FLCK/21:2:2r11FLCKFLCK/2FLCK/4F1:2:4300/0FLCKFLCK/3FLCK/31:3:3310/0FLCKFLCK/3FLCK/61:3:6301/0FLCKFFLCK/6FLCK/61:6:613LvoFLCKFLCK/6FLCK/121:6:1220/0FLCKFFLCK/

12、4FLCK/41:4:421I0/0FLCKFLCK/4FLCK/81:4:8200/1FLCKFLCK/8FLCK/81:8:8210/1FLCKFLCK/8FLCK/161:8:16最后,我们用最清晰的线路来绘制一下时钟的产生过程:外部时钟源通过寄存器MPLLCON到FCLQ再通过寄存器CLKDIVN导至UHCLKF口PCLK三、S3c2440定时器S3c2440处理器内部集成了定时器0-定时器4共5个16位的定时器,每个可选择中断或DMAT式工作。5个定时器的主要区别在于:定时器03有脉宽调制功能(PWM;定时器4是一个内部定时器,没有输出引脚;定时器0和定时器1有一个用于大电流设备的死

13、区(DEADZONE产生器,用于电机等感性负载。其它功能是相同的。可编程定时器的主要作用是对频率高的输入时钟进行分频来获得频率较低的输出信号,弁且利用输出信号每个周期的边界触发中断,实现处理器的定时事件处理功能。S3c2440的各定时器通过三级分频结构实现对输入时钟的分频。TCMPB0东统平台时钟输入定时器0和定时黯1共用的预分第iDMSer定时/正1共用的时钟分颊耨的时钟分顼噩一oun2比较辗存寄存器3和计器羲存寄存器34ToeT2TCffTEJ定时器3计数提存寄存据4“CHTB4定时器4*tlQPr(1)首先经过的是一个8位的预分频器,可设置的最大分频值为28,通过定时器配置寄存器TCFG

14、0a行设置。但定时系统只有两个预分频器,其中定时器0和1共享一个8位的预分频器,定时器2、3、4共享另一个8位预分频器。经过该分频器后的输出信号将作为第二级分频器的输入时钟信号。R/W描述warnTCFGOOxSiWOCMXJRAW配制两个$位至分频器0x00000000TCFGO位械初始状有保留31:240x0。死区氏度(23d0谙H位决定了死区段.死区段特坎为1的时间蜉于定时弱。持摸为士的时间.0x00Prescaler1i丽塘B位决定了定时器2,3和4的硕分蜘H0比0。Pr&sealar。70濠B位决定了定时源。和1的预分施值0x00(2)第二级分频器是一个进行粗粒度分频的电路,

15、称为粗分频器,同样是每2组或3组共用一个,具有1/2、1/4、1/8、1/164个可选的分频值,具体可通过对定时器配置寄存器1进行选择设置。该级的输出信号作为第三级的输入时钟。此级的TCLK0和TCLK1为外部输入时钟,当选择是外部时钟时,8位的预分频器和粗分频器失效。定时船配制由TSS1(TCFG1)R/WTCFG1CIXS1OOMO4RAV5踏/®ffiWW和口MA牖甑逃耀得存胖OxOOOOOOOOTCFG1描建加帕状态保留i31:24OODOOOOODMAfflia:23:20选择DMAiW求通道0000-Xi£»(布,中环)OQOl度时醵0W10运时“10

16、011厘时I,2。应时“劣G1O1-4011。保防OQOCMUX4|W:1S选撵PWM定时的4的选通幡入00001/3CM3011/40010*1/000111/10O1XX-外幽TCLK,ooooMUX3ns:12)选择PWM定时«|3的选通蛹入qga=igpogi=i/4gm=nQm=izitiOlKXTCLK10OQ0MUX21i1=8)选择PWM定时附2的通输人ooacncradi-i/4O0id'aiamiivi6Ipw*TCLK1CHMOMUX1p:-t选捍PWM理时m1的造通输入0000-1/200Q1.1/40G101/89011=1/lflOlKX»

17、;外部TGLKlOTOOMUX013:0】选择PWM延时00的选8W=1/3中g=V40G10m1/0白tMT-1/1601Hx-5f3CTCLX10000(3)第三级的分频器是由每个定时器都具有的细粒度16位计数缓冲寄存器TCNTBn(也称为分频初值寄存器)以及一个具体完成分频操作的16位减1计数器TCNT中勾成。计数缓冲寄存器TCNTBn放的是用户设置的分频初值(也就是倒计时值),在定时器开始工作时需要将用户设置的分频初值传送到减1计数器TCNTn粗分频器产生的每个输出时钟周期会使其减1。当其值减到0时,将完成一次定时过程并产生定时器中断请求,以通过CPUS时时间到。计数缓冲寄存器TCNT

18、Bn?放的是计数初值,在定时器开始工作时需要将计数初值传送到减1计数器TCNTn此时必须是手动更新方式向TCNTri专车TCNTBrU勺内容,具体操作是利用程序将定时器控制寄存器TCOMJ对应的位设置为1。当减1计数器TCNT咕勺内容减到0后,一次定时过程结束,如果不再进行新的定时计数过程,称为单触发定时模式;一次定时过程结束后,允许继续进行新一轮的定时计数过程而且周而复始,这种方式成为周期定时模式。对于周期定时模式,可以通过设置自动重载方式使得计数缓冲寄存器TCNTBrU动将其初始值传送到减1计数器TCNT呐,以实现连续不断的循环定时器计数操作。通过设置定时器控制寄存器TCOMJ对应白勺位为

19、1即可选择周期模式(自动重载模式),为0即可选择单触发模式。如果在定时器计数工作过程中,定时器控制寄存器TCON的的定时器工作允许位设置为1即正常工作,但通过清除定时器控制寄存器TCON仙的定时器工作允许位使定时器停止工作后,计数缓冲寄存器TCNTBn各会停止将其初始值拷贝到减1计数器TCNTn的操作。(RWaWW*»1(TC0N)咄RJWMaiTCONDx5100000SFVWOxODOOCXXX)TCON粒0mtw审海自谈皂Jf.,美22J决定定时器4的自动堂裁开后或关闭Q,事修芯.咖慢式直考程)0钊手就史啬/,(211决定定时器4的手动更新0-刑怦1-更新TCMTB40钊*山如

20、亭止20决定定时器4的启动战停止”1-序幄阳重”Q尚惺3县选篇JT美19决定定时器3的自动重载开启或关闭0*1同*慢武1台汕端)0亩!偈3吟之爱g关网决定定时器3的蒙出变相开启或关闭0:关迸变相l-TOuTlSgWrfe0SUS3手动变的巾17决定定时器3的手动更新口对怦一堂旁TCMTB:!扣TCRB30公握3总珈停It16决定定时簿3的启动或停止0*停止申1器31*SS版时区3Q自碇防'美口5】决定蜜时第2的自动正载开启业关闭0-舞鼻芭1-l»«X1台惹技»0哥金晞比更福加共(14|法定定时耦2的看出变相开后或关闭,0>关瑚tfB1TOUT2变爱班

21、性0去动克花巾决定定时器2的手动更新0制K1更新TCMTB2和TCIUPB2Q瑟演2一事止口引决定定时第2的启动或停止口母止定时盘?,居丈审擢2Q这时中目动网防关11J决定定时噩T的自动型篇开后或共闭Q*腼1*>D的工曜比堂相并'关(10|决定定时8S1的看曲蜜唱开启BE矢闭0-美前相1-TDUT1受揍顿性0手动更新冏决定定时器1的手就更新0-无慢性1*克新TCMTB1NTCW*B10事情M官的“止8决定定时露1的启动或停止0-停止定能HIT1-10以此可以看出,定时器最初的输入时钟来自处理器的内部时钟PCLK经过8位的预分频器后,再经过1/N的粗分频,然后送到16位减1计数器T

22、CNTniS行最大可达216的细分频,最终产生输出时钟频率。公式:定时器输出时钟频率=PCLK+(8位的预分频器的值+1)*粗分频的值+16位计数缓冲寄存器其中8位的预分频器的值由TCFG缺定,粗分频的值由TCFG缺定,16位计数缓冲寄存器是由TCNTB快定。比如已知PCLK为50MHz可以使8位的预分频器的值等于249,粗分频的值等于1/8,例如我们想要得到1秒钟的延时,可以使TCNTBM25000即可。50000000+(249+1)*1/8-25000=1HZ定时器采用双缓冲机制,在周期定时模式中,不修改计数初值,定时器输出将产生等周期的输出信号,若在周期定时模式中修改了计数初值,则要在

23、本次定时计数结束后按新的定时计数初值计数。WriteWntftTChlTBn-100TCNTBn-200lEerrupt本实验通过定时器4实现每隔2秒,跑马灯轮流点亮,弁在数码管上输出数据。编程过程:1、在原先的外部中断3修改为定时器4中断2 、设置定时器配置寄存器TCFGd已置8位的预分频值;3、设置定时器配置寄存器TCFGim分频的值4 、设置计数缓冲寄存器TCNTB4勺初始值5 、设置TCONT存器,设置为手工方式加载;6、启动定时器,并设置为自动装载。四、脉宽调制PWM通过设置预分频值、粗分频值及计数初值等三级分频值可以产生具有不同周期(频率)的输出信号Fcnt,但无论输出信号的周期时

24、间如何变化,变化的部分仅仅在于低电平部分,其中高电平都只有一个输入时钟周期的宽度,即得到的是一个窄脉冲信号。为了得到具有不同占空比(占空比是指高电平在一个周期之内所占的时间比率)的输出信号,S3c2440定时器还设置了脉宽调制PWMS辑部分。PW就是一个占空比可以根据设置值自动调整的功能单元,具有通过调整一个周期中高电平的宽度就可以向被控对象提供不同的功率的特点。最典型的应用就是控制电机的运转方式,一个输出信号周期内高电平越宽,电机旋转越快。为了实现PWM勺功能,每个定时器单元内部除了用于分频的逻辑部件外,还设置了PW睡路、一个定时比较缓存寄存器TCMPB和一个定时比较寄存器TCMPn定时比较

25、缓存寄存器TCMPBiffl于设置一个一个小于计数缓冲寄存器TCNTBn勺初始设置值,该值被自动拷贝到定时比较寄存器TCMP亦J,并用于和减1计数器TCNTnW内容进行比较,当减1计数器TCNTnW值减少到与定时比较寄存器TCMPrrt的值相同时,PW嘛宽调制电路立刻将输出由低电平变为高电平,并维持到减1计数器TCNTnW值减少到0,从而获得不同占空比的输出信号。1/2 IM 1/8 1/16 1/32PWM定时器 控制逻辑定时隅输入频率TOUTn=MCLK/预分频值/隐数器除数TCNTBnTCMPBn路转换器/肘仲除法整TimerO(/部逻辑佟ITCMPB0TCSTOOTCNTr为观察寄存器

26、,作用是当需要读取减1计数器TCNTn的当前值时缓存其当前值。因为减1计数器TCNTn的值是随输入时钟不断变化的,所以不能直接对其进行读操作,而需要先将某时刻采样到TCNTrnW值锁存在观察寄存器TCNTn中再读取。五、PWhfe平反转原理定时器启动后,输出引脚输出低电平,TCNTrW始减一计数,当TCNTn的值和TCMPn勺值相同时,定时器n有一个反转,将输出一个高电平,然后TCNTrffi续减1,直至为0,再发生一次反转,将输出一个低电平,这样就实现了高低电平的反转,减为0时会触发中断。若TCONS为自动加载,TNCTn/TCMPNn勺值被重装。(变相器开关决定了起始输出为高电平还是低电平

27、)WriteWnteWrtt«TCMPBn-MTCMPBn=3。TCMPSnNextPWMValue当由TCNTBn选定的频率值保持不变时,PW喻出信号的占空比可以通过设置TCMPBn调节,为了得到较窄的高电平输出(占空比较小),可减少TCMPB的值,反之要得到较宽的高电平输出(占空比较大)就应增加TCMPBn勺值。双缓冲功能允许对于下个PWM周期在当前PW的期任意时间点由ISR或其他程序改写TCMPBn.六、PW棉制蜂鸣器本实验通过PW臃制器控制蜂口$器的发声,JXARM9-241徵学实验系统的蜂鸣器脉冲输入端口连接到S3c2440的TOUT渊口,即定时器0的脉冲输出端口,S3C2

28、440的TOUT渊口在B组控制寄存器里1:0。PBCONBit推逑GPB1021;2000=Input01=CutpuL10=nXDRECMJ11=便例GPB919:1同00=Input01=Output10=nXDACK0二保跑GPB817:16)00=Input01=Output10=nXDREQI11=保丽GPB715:1400-Input10=01=OutputnXDACKl11=保的GPB613:1200=Input10=01=OutputnXBREQ11;保留GPB511:1000=Input10=01=CutpuLnXBACK11=保例GPB49600=Input01=Outpu

29、t10-TCLK011=保留GPB317同00=Input01=Output10=TOUT311=保刚GPB25400=Input01-Output10=TOUT2111=保南GPB1(3200=Input01=Output10-TOUT111=保留GPB01刈00=Input01=OutpuL10=TOUTO11=保前在我们搭建好2440的硬件平台后,我们在调试硬件的时候,通常需要将系统的时钟测试引脚引出来测试,以确认系统是否达到设计的要求。若主频FLC400MHz如果按照1:4:8的设置,可以先设置CLKDIVN101,然后设置CAMDIVN勺第9位为0(不设置的时候该位默认为0),此时H

30、LC曙100MHzPLCK50MHz2440提供了CLKOUT卸CLKOUT时钟信号输出,用于在H组控制寄存器里19:18和21:20进行配置,将PCLKM射到CLKOUT0引脚,对其测试验证。GPHCONBit插逮GPH10(21:20OO=InpuL10=GLKOUT101=Output11-他留GPH919:1800=Input10=CLKOUTO01=Output11=保留GPH8(17:1即00=Inpul10=UEXTCLK01=Output11=保留GPH715:1400=Input10=RXD201=Output11=nCTSlGPH613:1200=Input10-TXD20

31、1=Output11=nRTS1GPH5(11:1000=Input10=RXD101=Output11=保留GPH49:S00=Input10=TXD101=Output11=保留GPH3【了划00=Input10=RXD001=Output11=保留GPH25400-Input10-TXD001=Output11=保留GPH13闾00=Input10=nRTSO01=Output11=保留GPHO1。DO-Inpul10-nCTSO01=Output11=保留1、本实验通过定时器0的PW臃制器控制蜂鸣器的发声,编写程序设置输出频率为8000Hz,占空比为2/3的数字信号;通过修改rTCNTB0和rTCMPB原设置初始值和占空比。rTCNTB0用于设置初始计数值,其值的计算公式如下:div=PCLK/prescalervalue+1/dividervalue/freqprescalervalue=0-255由rTCFG0设定divid

温馨提示

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

评论

0/150

提交评论