1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1,第4讲s3c2410中定时器,孙成富,第1页,主要内容,概述,结构,存放器,应用举例,第2页,第3页,一、概 述,1、S3C2410X定时器主要特征,5个16位定时器;,2个8位预分频器和2个4位分频器;,可编程PWM输出占空比;,含有初值自动重装连续输出模式和单脉冲输出模式;,含有死区生成器。,S3C2410有5个16位定时器,,定时器03含有PWM(脉宽调制)功效。定时器4是一个内部定时器,没有输出引脚,供内部使用。定时器0有死区产生器,通惯用于大电流设备控制。,有2个8位预分频器和2个4位分频器,。定时器0 和定时器1 分享同
2、一个8 位预分频器和分频器,定时器2、3、4 分享另一个预分频器和分频器,分频器有1/2、1/4、1/8、1/16这4种分频值。定时器从分频器接收自己时钟信号,时钟分频器从对应预分频器接收时钟信号。,第4页,2、PWM(脉宽调制)概念,PWM(脉宽调制):,就是只对一方波序列信号占空比按照要求进行调制,而不改变方波信号其它参数,即不改变幅度和周期,所以脉宽调制信号产生和传输,都是数字式。,用脉宽调制技术能够实现模拟信号:,假如调制信号频率远远大于信号接收者分辨率,则接收者取得是信号平均效果,不能感知数字信号0和1,其信号大小平均值与信号占空比相关,信号占空比越大,平均信号越强,其平均值与占空比
3、成正比。只要带宽足够(频率足够高或周期足够短),任何模拟信号都能够使用PWM 来实现。,PWM技术应用:,借助于微处理器,使用脉宽调制方法实现模拟信号是一个非常有效技术,广泛应用在从测量、通信到功率控制与变换许多领域中。,第5页,二、结构与工作原理,1、定时器结构,(1)时钟控制:,系统为每个定时器设置有:预分频器、分频器。,(2)定时器组成(5部分):,减法计数器、初值存放器、比较存放器、观察存放器、控制逻辑等部分组成。,第6页,定时器结构图,预分频器,8位,分频器,1/2,1/4,1/8,1/16,TCLK0/1,计数器,观,察,寄,存,器,比较存放器,PCLK,五,选,一,开,关,初,值
4、寄,存,器,控,制,逻,辑,TOUT,中止,第7页,2、工作原理,(1)定时器工作过程,装入初值、开启计数,计数结束产生中止请求,而且能够重装初值连续计数。以下列图所表示。,第8页,(2)初值自动重装、手动装载和双缓冲,初值自动重装功效:,5个定时器都含有此功效。当计数器中值减到0后,若设置了自动重装功效,则在下一计数周期开始前将初值装入计数器重新计数。,初值手动装载功效:,在开启计数前,必须使用手动装载功效将初值装入计数器,而初值自动重装仅是一次计数结束后重新装入初值。,双缓冲功效:,假如定时器正在工作,此时写入新数据到TCNTBn、或者到TCMPBn,该写入数据不影响此次定时器操作。当定
5、时器抵达0后下一次运行定时器时,新写入TCNTBn、或者TCMPBn才生效。,第9页,(3)PWM输出,存放器TCMPB作用:当计数器TCNT中值减到与TCMPB值相同时,TOUT输出值取反。,改变TCMPB值,便改变了输出方波占空比,。,TOUT输出能够设置为反相输出,以下列图所表示。,第10页,第11页,(4)死区产生器,死区概念:是一小段时间间隔,在这个时间间隔内,禁止两个开关同时处于开启状态。死区是在功率设备控制中常采取一个技术,预防两个开关同时打开起反作用。,S3C2410timer0含有死区发生器功效,可用于控制大功率设备。,第12页,死区发生器开启前后输出波形对比,第13页,(5
6、DMA请求模式,S3C2410中定时器DMA功效:,系统中5个定时器都有DMA请求功效,不过在同一时刻只能设置一个使用DMA功效,经过设置其DMA模式位来实现。,DMA请求过程:,定时器能够在任意时间产生DMA请求,而且保持DMA请求信号(nDMA_REQ)为低直到定时器收到ACK信号。当定时器收到ACK信号时,它使请求信号变得无效。,DMA请求与中止关系:,假如一个定时器被配置为DMA模式,该定时器不会产生中止请求了。其它定时器会正常产生中止。,第14页,3、计数时钟和输出计算,1)定时器输入时钟频率,f,T,clk,(即计数时钟频率),:,f,T,clk,=,f,pclk,(Presca
7、ler+1),分频值,式中:Prescaler,预分频值,0-255;分频值为1/2、1/4、1/8、1/16。,2)PWM输出时钟频率:,PWM输出时钟频率=,f,T,clk,TCNTBn,3)PWM输出信号占空比,(即高电平连续时间所占信号周期百分比),:,PWM输出信号占空比=TCMPBn,TCNTBn,第15页,定时器最大、最小输出周期,设PCLK频率为50MHz,经过预分频和分频器后,送给定时器可能计数时钟频率由表4-7-1给出。,第16页,表4-7-1 定时器最大、最小输出周期,分频值,最小输出周期,(预分频器=0、,TCNTBn=1),最大输出周期,(预分频器=255、,TCNT
8、Bn=65535),最小输出周期,(预分频器=0、,TCNTBn=65535),最小输出周期,(预分频器=0、,TCNTBn=255),1/2,25.00MHz(0.04,s),0.6710s,381Hz,97656,1/4,12.50MHz(0.08,s),1.3421s,191Hz,48828,1/8,6.250MHz(0.16,s),2.6843s,95Hz,24414,1/16,3.125MHz(0.32,s),5.3686s,48Hz,12207,第17页,三、定时器专用存放器,共有6种、17个存放器,TCNTBn-Timern计数初值存放器(计数缓冲存放器),16位,TCMPBn-
9、Timern,比较存放器(比较缓,冲存放器,),,16位,TCNTOn-,Timern计数读出存放器,16位,Register,Address,R/W,Description,Reset Value,TCFG0,0 x51000000,R/W,配置存放器 0,0 x00000000,TCFG1,0 x51000004,R/W,配置存放器 1,0 x00000000,TCON,0 x51000008,R/W,控制存放器,0 x00000000,TCNTBn,0 x510000 xx,R/W,计数初值存放器(5个),0 x0000,TCMPBn,0 x510000 xx,R/W,比较存放器(4个)
10、0 x0000,TCNTOn,0 x510000 xx,R,观察存放器(5个),0 x0000,第18页,Dead zone length-死区宽度设置位,其值N为:0255,以timer0定时时间为单位,死区宽度为:(N+1),timer0定时时间,Prescaler1-timer2、3、4预分频值,其值N为:0255,输出频率为:PCLK,(N+1),Prescaler0-timer0、1预分频值,其值N为:0255,输出频率为:PCLK,(N+1),1、TCFG0-预分频器配置存放器,31,24,23,16,15,8,7,0,保留(为0),Dead zone length,Presca
11、ler1,Prescaler0,第19页,2、TCFG1-DMA模式与分频选择存放器,DMA mode-DMA通道选择设置位,0000:不使用DMA方式,全部通道都用中止方式,0001:选择timer00010,:,选择timer1,0011:选择timer20100,:,选择timer3,0101:选择timer4011X,:,保留,MUX4 MUX0-timer4timer0,分频值选择,0000:1/20001:1/40010,:,1/8 0011:1/16,01XX:选择外部TCLK0、1(对timer0、1是选TCLK0,对timer4、3、2是选TCLK1),31 24,23 20
12、1916,1512,118,7 4,3 0,保留(为0),DMA mode,MUX4,MUX3,MUX2,MUX1,MUX0,第20页,TL4TL0-计数初值自动重装控制位,0:单次计数,1:计数器值减到0时,自动重新装入初值连续计数。,TUP4TUP0-计数初值手动装载控制位。,0:不操作1:马上将TCNTBn中计数初值装载到计数存放器TCNTn中。,说明:,假如没有执行手动装载初值,则计数器开启时无初值。,12,11,10,9,8,75,4,3,2,1,0,TR2,TL1,TO1,TUP1,TR1,保留,DZE,TL0,TO0,TUP0,TR0,3、TCON-定时器控制存放器,31,23
13、22,21,20,19,18,17,16,15,14,13,保留,TL4,TUP4,TR4,TL3,TO3,TUP3,TR3,TL2,TO2,TUP2,第21页,TR4TR0-TIMER4TIMER0运行控制位,0:停顿1:开启对应TIMER,TO3TO0-TIMER4TIMER0输出控制位,0:正相输出1:反相输出,DZE-TIMER0死区操作控制位,0:禁止死区操作1:使能死区操作,12,11,10,9,8,75,4,3,2,1,0,TR2,TL1,TO1,TUP1,TR1,保留,DZE,TL0,TO0,TUP0,TR0,3、TCON-定时器控制存放器(续),31,23,22,21,20
14、19,18,17,16,15,14,13,保留,TL4,TUP4,TR4,TL3,TO3,TUP3,TR3,TL2,TO2,TUP2,第22页,四、定时器使用,1、定时器初始化方法,(1)写TCFG0,设置计数时钟预分频值和Timer0死区宽度;,(2)写TCFG1,选择各个定时器分频值和DMA、中止服务;,(3)对TCNTBn和TCMPBn分别写入计数初值和比较初值;,(4)写TCON,设置计数初值自动重装、手动装载初值、设置反相输出;,(5)再写TCON,去除手动装载初值位、设置正相输出、开启计数。,2、定时器停顿运行方法,写TCON,禁止计数初值自动重装。(普通不使用运行控制位停顿运行
15、第23页,3、定时器操作例子,(1),按照前面初始化定时器;设置TCNTBn=160(50+110),TCMPBn=110;手动装入初值后,又重设TCNTBn=80,TCMPBn=40;,(2),开启定时器,按第一个初值计数;,(3)与第一个比较值相同,输出取反;,(4)第一次计数结束,自动重装初值80、40;,(5),在第一次中止处理程序又重设TCMPBn=60;,(8),在第二次中止处理程序禁止自动重装初值,准备结束计数;,(10)第三次计数结束,不再计数。,50 110 40 40 20 60,1 2,3 4 6 7 9 10,5,8,TOUTn,第24页,代码分析,第25页,参考资料:,嵌入式系统设计与实例开发,ARM9嵌入式系统设计基础教程,嵌入式系统开发原理与实践,ARM体系结构与编程,ARM程序分析与设计,第26页,






