《S3C2410PWM定时器分析》由会员分享,可在线阅读,更多相关《S3C2410PWM定时器分析(24页珍藏版)》请在金锄头文库上搜索。
1、S3C2410-PWMS3C2410-PWM定时器分析定时器分析12.2S3C2410 PWMS3C2410 PWM定时器定时器nS3C2410S3C2410 PWMPWM定时器概述;定时器概述;nS3C2410 PWMS3C2410 PWM定时器的操作;定时器的操作;nS3C2410 PWMS3C2410 PWM定时器相关的寄存器;定时器相关的寄存器;nS3C2410 PWMS3C2410 PWM定时器的应用编程。定时器的应用编程。12.3教学要求教学要求n了解了解PWMPWM及死区的作用及死区的作用n掌握掌握S3C2410S3C2410 PWM TimerPWM Timer工作原理工作原理
2、n掌握利用掌握利用S3C2410S3C2410 PWMPWM TimerTimer输出输出PWMPWM波形波形的操作方法与编程步骤的操作方法与编程步骤12.4PWMPWM脉冲的作用脉冲的作用n现在有这样个问题:让你设计一个电路能够现在有这样个问题:让你设计一个电路能够任意调节灯泡的亮度,该怎样做呢?任意调节灯泡的亮度,该怎样做呢?12.5脉冲宽度调制脉冲宽度调制(PWM)(PWM)n脉冲宽度调制脉冲宽度调制(PWM)(PWM),是英文,是英文“Pulse Width Pulse Width Modulation”Modulation”的缩写,简称脉宽调制,是利的缩写,简称脉宽调制,是利用微处理
3、器的数字输出来对模拟电路进行控用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。量、通信到功率控制与变换的许多领域中。12.6S3C2410 TimerS3C2410 Timer部件概述部件概述nS3C2410S3C2410芯片内部拥有芯片内部拥有5 5个个1616位的位的TimerTimer部件部件Timer0Timer0、Timer1Timer1、Timer2Timer2、Timer3Timer3具有脉宽调制(具有脉宽调制(pwmpwm)功能,)功能,具有具有PWMPWM脉冲输出引脚;脉冲
4、输出引脚;Timer4Timer4仅作定时器用,不具有仅作定时器用,不具有PWMPWM功能,没有输出引脚;功能,没有输出引脚;Timer0Timer0有一个死区(有一个死区(dead zonedead zone)发生器。)发生器。n每个每个TimerTimer部件所需的计数时钟信号均需系统提供的部件所需的计数时钟信号均需系统提供的pclkpclk时钟两次时钟两次“变速变速”(预分频和再分频)所得。(预分频和再分频)所得。Timer0Timer0、Timer1Timer1共享一个共享一个8 8位的预分频器,共享一个位的预分频器,共享一个4 4位的再位的再分频器;分频器;Timer2Timer2、
5、Timer3Timer3、Timer4Timer4共享另一个共享另一个8 8位预分频器,共享另外位预分频器,共享另外一个一个4 4位的再分频器;位的再分频器;详见S3C2410 datasheet12.7S3C2410 TimerS3C2410 Timer部件概述部件概述n5 5个个TimeTime部件最核心的东西仍然是一个脉冲部件最核心的东西仍然是一个脉冲减一计数器:减一计数器:TCNTnTCMPnTCNTBnTCMPBnToutn周期宽度输出的脉冲的宽度输出的脉冲的宽度可以调节,所以称可以调节,所以称为为PWM脉冲脉冲TCMPBn*比较器比较器TCNTBn*计数时钟周期计数时钟周期n=0,
6、1,2,3黄颜色部分为黄颜色部分为Timer4的模块,的模块,因为其没有脉冲输出,仅仅因为其没有脉冲输出,仅仅是一个普通的定时器而已是一个普通的定时器而已定时中断定时中断12.8S3C2410 TimerS3C2410 Timer部件的操作部件的操作nTime4Time4因为没有脉冲输出,所以其操作比较简单:因为没有脉冲输出,所以其操作比较简单: 减一计数器减一计数器TCNT4TCNT4溢出时产生定时中断,同时溢出时产生定时中断,同时TCNTB4TCNTB4中中的值会复制到的值会复制到TCNT4TCNT4中开始下一轮计数。中开始下一轮计数。初始化;初始化;while(1)脉冲计数;脉冲计数;
7、if(TCNTn=TCMPn)Toutn=Toutn;if(TCNTn=0)发定时中断请求;发定时中断请求;if(TCNT=-1) Toutn=Toutn; TCNTn=TCNTBn; TCMPn=TCMPBn;n=0,1,2,3,n=0,1,2,3,右图为工右图为工作原理的伪代码描述作原理的伪代码描述12.9S3C2410 TimerS3C2410 Timer部件的操作部件的操作n下图:为下图:为s3c2410s3c2410定时器的操作图(定时器的操作图(Figure 10.2 Figure 10.2 Timer operationsTimer operations)n“开始位开始位=1=1
8、”表示启动定时器开始计数;表示启动定时器开始计数;n“手动更新位手动更新位=1=1”表示将计数缓冲寄存器表示将计数缓冲寄存器TCNTBnTCNTBn中的中的内容复制到计数寄存器内容复制到计数寄存器TCNTnTCNTn,比较缓冲寄存器,比较缓冲寄存器TCMPBnTCMPBn中的内容复制到比较寄存器中的内容复制到比较寄存器TCMPnTCMPnn“自动重载自动重载=1”=1”表示计数器溢出时会自动将计数缓冲表示计数器溢出时会自动将计数缓冲寄存器寄存器TCNTBnTCNTBn中的内容复制到计数寄存器中的内容复制到计数寄存器TCNTnTCNTn,比较,比较缓冲寄存器缓冲寄存器TCMPBnTCMPBn中的
9、内容复制到比较寄存器中的内容复制到比较寄存器TCMPnTCMPn12.10S3C2410 TimerS3C2410 Timer部件的操作部件的操作12.11S3C2410 TimerS3C2410 Timer部件的操作部件的操作n注意:程序不能直接对注意:程序不能直接对TCNTnTCNTn进行读写,若但一定要读其中的数据,进行读写,若但一定要读其中的数据,可以读可以读TCNTOnTCNTOnn在程序中,在程序中,TCNTnTCNTn和和TCMPnTCMPn的值可以在初始化时(定时器开启前)的值可以在初始化时(定时器开启前)手动更新(手动更新位置手动更新(手动更新位置1 1);在溢出时自动重载(
10、自动重载位置);在溢出时自动重载(自动重载位置1 1)n反转器位关闭时,反转器位关闭时,ToutnToutn的初始电平为高电平;反之则反之。的初始电平为高电平;反之则反之。反转位一旦变化,反转位一旦变化,TOUT电平立即发生变化电平立即发生变化12.12S3C2410 TimerS3C2410 Timer部件的操作部件的操作nTimer0Timer0死区功能开启时的效果是死区功能开启时的效果是Tout0Tout0和和nTout0nTout0不会同不会同时出现高电平,如果时出现高电平,如果Tout0Tout0和和nTout0nTout0用于控制两个不能用于控制两个不能同时开关器件,则这两个电器不
11、会同时开闭。同时开关器件,则这两个电器不会同时开闭。12.13Timer Timer 寄存器共有寄存器共有6 6种、种、1717个寄存器个寄存器TCNTBn-Timern计数初值寄存器(计数缓冲寄存器),计数初值寄存器(计数缓冲寄存器),16位位TCMPBn-Timern比较寄存器(比较缓比较寄存器(比较缓冲寄存器冲寄存器),),16位位TCNTOn-Timern计数读出寄存器,计数读出寄存器,16位位Register Register Address Address R/W R/W Description Description Reset Value Reset Value TCFG0TC
12、FG00x51000000 0x51000000 R/W R/W 配置寄存器配置寄存器 0 00x00000000 0x00000000 TCFG1TCFG10x51000004 0x51000004 R/W R/W 配置寄存器配置寄存器 1 10x00000000 0x00000000 TCON TCON 0x51000008 0x51000008 R/W R/W 控制寄存器控制寄存器0x000000000x00000000TCNTBnTCNTBn0x510000xx 0x510000xx R/W R/W 计数初数初值寄存器寄存器(5(5个个) )0x00000x0000TCMPBnTCMP
13、Bn0x510000xx0x510000xxR/WR/W比比较寄存器寄存器(4(4个个) )0x00000x0000TCNTOnTCNTOn0x510000xx0x510000xxR R观察寄存器察寄存器(5(5个个) )0x00000x0000S3C2410 TimerS3C2410 Timer相关的寄存器相关的寄存器12.14Dead zone length-Dead zone length-死区宽度设置位死区宽度设置位其值其值N N为:为: 02550255,以,以timer0timer0的工作时钟为单位的工作时钟为单位死区宽度为:(死区宽度为:(N+1N+1)timer0timer0的
14、的1 1次计数时间次计数时间Prescaler1-timer2Prescaler1-timer2、3 3、4 4的预分频值的预分频值其值其值N N为:为: 02550255输出频率为:输出频率为:PCLK PCLK (N+1N+1)Prescaler0- timer0Prescaler0- timer0、1 1的预分频值的预分频值其值其值N N为:为: 02550255输出频率为:输出频率为:PCLK PCLK (N+1N+1)TCFG0-TCFG0-预分频器配置寄存器预分频器配置寄存器31312424 2323161615158 87 70 0保留(为保留(为0 0)Dead zone le
15、ngthDead zone lengthPrescaler1Prescaler1Prescaler0Prescaler012.15TCFG1-DMATCFG1-DMA模式与分频选择寄存器模式与分频选择寄存器DMA mode-DMADMA mode-DMA通道选择设置位通道选择设置位00000000:不使用:不使用DMADMA方式,所有通道都用中断方式方式,所有通道都用中断方式00010001:选择:选择timer0timer000100010:选择:选择timer1timer100110011:选择:选择timer2timer201000100:选择:选择timer3timer30101010
16、1:选择:选择timer4timer4011X011X:保留:保留MUX4 MUX0-timer4timer0MUX4 MUX0-timer4timer0分频值选择分频值选择00000000:1/21/200010001:1/41/400100010:1/8 1/8 00110011:1/161/1601XX01XX:选择外部:选择外部TCLK0TCLK0、1 1(对(对timer0timer0、1 1是选是选TCLK0TCLK0,对,对timer4timer4、3 3、2 2是选是选TCLK1TCLK1)31 2431 2423 2023 20 19161916151215121181187
17、 47 43 03 0保留(为保留(为0 0)DMA modeDMA modeMUX4MUX4MUX3MUX3MUX2MUX2MUX1MUX1MUX0MUX012.16TL4TL0-TL4TL0-计数初值自动重装控制位计数初值自动重装控制位 0 0:单次计数:单次计数1 1:计数器值减到:计数器值减到0 0时,自动重新装入初值连续计数。时,自动重新装入初值连续计数。TUP4TUP0-TUP4TUP0-计数初值手动装载控制位。计数初值手动装载控制位。0 0:不操作:不操作1 1:立即将:立即将TCNTBnTCNTBn中的中的计数初值装载到计数寄存器计数初值装载到计数寄存器TCNTnTCNTn中。
18、中。说明:说明:如果没有执行手动装载初值,则计数器启动时无如果没有执行手动装载初值,则计数器启动时无初值。初值。1212111110109 98 875754 43 32 21 10 0TR2TR2TL1TL1TO1TO1TUP1TUP1TR1TR1保留保留DZEDZETL0TL0TO0TO0TUP0TUP0TR0TR0TCON-TCON-定时器控制寄存器定时器控制寄存器312331232222212120201919181817171616151514141313保留保留TL4TL4TUP4TUP4TR4TR4TL3TL3TO3TO3TUP3TUP3TR3TR3TL2TL2TO2TO2TUP
19、2TUP212.17TR4TR0-TIMER4TIMER0运行控制位运行控制位0:停止:停止1:启动对应的:启动对应的TIMERTO3TO0- TIMER4TIMER0输出控制位输出控制位0:正相输出:正相输出1:反相输出:反相输出DZE-TIMER0死区操作控制位死区操作控制位0:禁止死区操作:禁止死区操作1:使能死区操作:使能死区操作1212111110109 98 875754 43 32 21 10 0TR2TR2TL1TL1TO1TO1TUP1TUP1TR1TR1保留保留DZEDZETL0TL0TO0TO0TUP0TUP0TR0TR0TCONTCON定时器控制寄存器(续)定时器控制寄
20、存器(续)312331232222212120201919181817171616151514141313保留保留TL4TL4TUP4TUP4TR4TR4TL3TL3TO3TO3TUP3TUP3TR3TR3TL2TL2TO2TO2TUP2TUP212.18(1 1)按照前面初始化定时器;设置按照前面初始化定时器;设置TCNTBn=160(50+110)TCNTBn=160(50+110),TCMPBn=110TCMPBn=110;手;手动装入初值后,又重设动装入初值后,又重设TCNTBn=80TCNTBn=80,TCMPBn=40TCMPBn=40,自动重装初值开启;,自动重装初值开启;(2
21、2)启动定时器启动定时器, ,按第一个初值计数;按第一个初值计数;(3 3)与第一个比较值相同,输出取反;)与第一个比较值相同,输出取反;(4 4)第一次计数结束,自动重装初值)第一次计数结束,自动重装初值8080、4040;(5 5)在第一次中断处理程序又重设在第一次中断处理程序又重设TCMPBn=60TCMPBn=60;(6 6)与第二个比较值相同,输出取反;)与第二个比较值相同,输出取反;(7 7)第二次计数结束,自动重装初值)第二次计数结束,自动重装初值8080、6060;(8 8)在第二次中断处理程序禁止自动重装初值,准备结束计数;在第二次中断处理程序禁止自动重装初值,准备结束计数;
22、(9 9)与第三个比较值相同,输出取反;)与第三个比较值相同,输出取反;(1010)第三次计数结束,不再计数。)第三次计数结束,不再计数。50 110 40 40 20 60 1 2 3 4 6 7 9 105 TOUTn 8定时器产生定时器产生PWMPWM操作例子操作例子12.19S3C2410S3C2410的定时器控制器编程举例的定时器控制器编程举例n例:编写一程序,利用例:编写一程序,利用S3C2410S3C2410定时器产生定时器产生PWMPWM信号,驱动实验板上蜂鸣器鸣叫。设信号,驱动实验板上蜂鸣器鸣叫。设S3C2410S3C2410的的PCLKPCLK为为50MHz50MHz。n见
23、参考代码见参考代码 PWMTIMERPWMTIMER12.20 小小 结结(1 1)写)写TCFG0TCFG0,设置计数时钟的,设置计数时钟的预分频值预分频值和和Timer0Timer0死区宽度死区宽度;(2 2)写)写TCFG1TCFG1,选择各个定时器的,选择各个定时器的分频值分频值和和DMADMA、中断服务、中断服务;(3 3)对)对TCNTBnTCNTBn和和TCMPBnTCMPBn分别写入计数初值和比较值分别写入计数初值和比较值(4 4)写)写TCONTCON,设置计数初值自动重装和手动装载,设置计数初值自动重装和手动装载(5 5)再写)再写TCONTCON,清除手动装载初值位、设置
24、输出反转位、启动,清除手动装载初值位、设置输出反转位、启动计数。计数。PWMPWM定时器初始化方法定时器初始化方法2012.21思考题思考题1. PWM1. PWM及死区的作用?及死区的作用?2. S3C24102. S3C2410定时器工作原理?定时器工作原理?3. S3C24103. S3C2410定时器计数器和比较器,是由哪个定时器计数器和比较器,是由哪个寄存器实现重载?以及重载的方法有哪些?寄存器实现重载?以及重载的方法有哪些?12.22本周小课预习内容本周小课预习内容n如何使用单片机凑音乐,自我网上学习音乐简谱知识,什如何使用单片机凑音乐,自我网上学习音乐简谱知识,什么是音符、音长及
25、相关符号的含义,能基本会看简谱?么是音符、音长及相关符号的含义,能基本会看简谱?n实验板上蜂鸣器控制端口对应的是哪个定时器的实验板上蜂鸣器控制端口对应的是哪个定时器的PWMPWM信号输信号输出?出?nS3C2410 PWMS3C2410 PWM定时器如何开启(即回答哪个位让它开始定时定时器如何开启(即回答哪个位让它开始定时计数),自动更新位和手动更新位是哪个寄存器的第几位计数),自动更新位和手动更新位是哪个寄存器的第几位以及他们作用是什么?以及他们作用是什么?nS3C2410 PWMS3C2410 PWM定时器计数器和比较器的重载寄存器分别是?定时器计数器和比较器的重载寄存器分别是?n设设PCLKPCLK为为50MHz50MHz,则如何设置可使,则如何设置可使S3C2410S3C2410的的PWMPWM定时器工作定时器工作时钟频率约为时钟频率约为MHMH?在此时钟频率下让?在此时钟频率下让PWMPWM定时器产生定时器产生987Hz987Hz的的PWMPWM信号,又如何设置呢?信号,又如何设置呢?12.23下周大课预习内容下周大课预习内容nS3C2410 S3C2410 实时时钟实时时钟RTC(REAL TIME CLOCK)RTC(REAL TIME CLOCK)数据手册数据手册S3C2410.PDFS3C2410.PDF第第1717章章RTCRTC结束结束