《基于ARM7TDMI的S3C44B0X嵌入式微处理器技术课件课件第9章.ppt》由会员分享,可在线阅读,更多相关《基于ARM7TDMI的S3C44B0X嵌入式微处理器技术课件课件第9章.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第9章 PWM定时器本章重点本章重点:脉宽调制PWM定时器的组成,包括预分频和时钟分频;定时器基本操作、自动重载和双缓冲、手动更新;脉宽调制方法;输出电平控制、死区产生;定时结束产生中断请求或DMA请求;特殊功能寄存器的含义。9.1 概 述 参考图9.1,S3C44B0X有6个16位的定时器,每个定时器能够以基于中断或基于DMA方式进行操作。定时器0、1、2、3和4有脉宽调制(Pulse Width Modulation,PWM)功能。定时器5仅仅作为内部定时器,不连接到芯片引脚。定时器0有死区(dead_zone)发生器,可以用于大电流设备。图9.1 16位PWM定时器模块示意图(P251)
2、(1)预分频器(prescaler)(2)时钟分频器(clock_divider)(3)TCLK输入信号(4)EXTCLK输入信号(5)定时器计数缓冲寄存器(TCNTBn)(6)倒计数器(down conter)(7)比较缓冲寄存器(TCMPBn)(8)比较寄存器(TCMPn)(9)占空比(duty ratio)(10)定时器中断请求(11)脉宽调制 9.2 PWM定时器操作9.2.1 定时器基本操作定时器基本操作见图9.2。除了定时器5,其他定时器有TCNTBn、TCNTn、TCMPBn、TCMPn和TCNTOn寄存器。当一个定时器计数到0时,如果自动重载位(Auto_reload=1)允许
3、,则TCNTBn的值送TCNTn,TCMPBn的值送TCMPn。当TCNTn计数到0时,如果允许中断,将出现中断请求。TCNTn和TCMPn是内部寄存器名,TCNTn寄存器的值能够由观察寄存器TCNTOn中读出。9.2.2 自动重载和双缓冲 PWM定时器有双缓冲特点,这个特点使得它能够改变用于下一次定时器操作的重载值,而不必停止当前定时器操作。因此,虽然新的定时器值被设定,但当前定时器操作仍然能成功地完成。定时器值能被写入TCNTBn(timer counter buffer register),定时器当前计数值能被从TCNTOn(timer count observation registe
4、r)读出。如果读TCNTBn,读入值不是计数器当前状态,而是下一次定时期间用的重载值。自动重载位auto_reload为1时,当TCNTn到达0时,将TCNTBn值送TCNTn,TCMPBn值送TCMPn。当auto_reload为0时,在TCNTn到达0时,不出现重载操作,见图9.3。9.2.3 定时器初始使用手动更新位 虽然在运行过程中当倒计数器值达到0时,由于自动重载的操作,能给TCNTn和TCMPn从TCNTBn和TCMPBn装入新值,但是在最初,TCNTn开始值没有定义,在这种情况下,必须设定手动更新位,装入开始值。启动一个定时器次序如下:写初值到TCNTBn和TCMPBn。设置对应
5、定时器手动更新位。推荐配置反相器onoff位。设置对应定时器启动位,启动定时器工作(同时,清除手动更新位)。同样,如果定时器被强制停止,TCNTn保留了计数值,不从TCNTBn重载,如果要设定新的值,必须通过手动更新完成。9.2.4 定时器操作示例 定时器操作示例如图9.4所示。(P253)9.2.5 脉宽调制 通过使用TCMPBn能够实现脉宽调制PWM特性。为TCNTBn设置不同的值能够确定PWM不同的频率,而PWM的值取决于TCMPBn的值,如图9.5所示。(P254)为了得到一个更低的PWM输出值,即低电平时间更长,高电平时间更短,应该减少TCMPBn的值。为了得到一个更高的PWM输出值
6、,即低电平时间更短,高电平时间更长,应该增加TCMPBn的值。通过设置定时器控制寄存器TCON中的对应位,如果使输出反相器on,那么上述TCMPBn的值,增加减少应该反过来。由于双缓冲特性,用于下一个PWM周期的TCMPBn,在当前PWM周期任意点能够被写入,可以通过ISR或其他程序写入。9.2.6 输出电平控制 如图9.6,反相器设定为关(off)或开(on),TOUTn输出波形正好相反。(P254)使用如下方法,可以维持TOUTn为高或低电平(假定反相器是off)。自动重载位设为off,然后在TCNTn达到0后,TOUTn为高电平,定时器停止,推荐使用这种方法。通过清除TCON定时器控制寄
7、存器中的定时器startstop位为0,使定时器停止。如果TCNTnTCMPn,输出电平为高;如果TCNTnTCMPn,输出电平为低。当写入TCMPBn一个值,比写入TCNTBn的值更大,这样就禁止了TOUTn变为高电平,因为TCMPn不会与TCNTn有相同值。通过在TCON定时器控制寄存器中设定反相器位为onoff,TOUTn输出电平能够被反相。9.2.7 死区产生 允许死区产生的波形示例见图9.7。(P255)死区特性用于对大功率设备进行PWM控制。这个特性被用于在一个开关设备断开和另一个开关设备闭合之间插入1个时间间隙,这个间隙禁止两个开关设备同时闭合,即使非常短的时间也不允许。9.2.
8、8 DMA请求模式 PWM定时器能够在每段指定时间后产生DMA请求。只能选择6个定时器中的1个产生1个DMA请求。DMA模式配置及时序,见表9.1和图9.8。(P255-256)9.3 PWM定时器特殊功能寄存器 定时器配置寄存器0 定时器配置寄存器0,即TCFG0,地址为0 x01D50000,可读写,Reset值为0 x00000000,具体含义见表9.2。(P256)定时器输入时钟频率 =MCLK/(prescaler值+1)/(divider值)(prescaler值)=0255。prescaler值即图9.1中8位预分频器值。(divider值)=2、4、8、16、32。divide
9、r值即图9.1中时钟分频器值。定时器配置寄存器1 定时器配置寄存器1,即TCFG1,地址为0 x01D50004,可读写,Reset值为0 x00000000,具体含义见表9.3。(P256)定时器控制寄存器 定时器控制寄存器TCON地址为0 x01D50008,可读写,Reset值为0 x00000000,具体含义见表9.4。(P257)TCNTBn、TCMPBn、TCNTOn寄存器 定时器0定时器5 都有计数缓冲寄存器TCNTBn和计数观察寄存器TCNTOn,定时器5没有比较缓冲寄存器,其他定时器有比较缓冲寄存器TCMPBn。除了地址不同以外,各寄存器的含义相同,见表9.5和9.6。(P258-259)寄存器使用举例【例9.1】下面给出了使用C语言编写的对定时器0/1/2/3/4测试的程序片段,假定程序中用到的寄存器地址在别的程序中已经定义过,定时器产生中断后的处理程序这里没有列出。(P259)END