ARM脉宽调制的学习课件_第1页
ARM脉宽调制的学习课件_第2页
ARM脉宽调制的学习课件_第3页
ARM脉宽调制的学习课件_第4页
ARM脉宽调制的学习课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

ARM脉宽调制的学习课件第1页/共21页第2页/共21页每个定时器模块都从时钟分频器接收它自己的时钟信号,时钟分频器接收的时钟信号来自于8位预分频器。可编程8位预分频器根据存储在TCFG0和TCFG1中的数据对PCLK进行预分频。分频器功能见表11-1。当时钟被允许后,定时器计数缓冲寄存器(CTNTBn)把计数初值下载到减法计数器中。定时器比较缓冲寄存器(CMPBn)把初始值下载到比较寄存器中,来和减法计数器的值比较。这种CTNTBn和CMPBn双缓冲寄存器特性能使定时器产生稳定的输出,且占空比可变。第3页/共21页每一个定时器都有一个自己的用定时器时钟驱动的16位减法计数器。当减法计数器减到0时,就会产生一个定时器中断来通知CPU,定时器操作完成。当定时器减法计数器减到0时,相应的TCNTBn的值被自动重载到减法计数器中继续下次操作。然而,如果定时器停止了,比如在运行时通过清除TCON中定时器使能位来中止定时器的运行,则TCNTBn的值不会被重载到减法计数器中。TCMPBn的值用于脉冲宽度调制(PWM)。当定时器的减法计数器的值和TCMPBn的值相匹配时,定时器输出改变输出电平。因此,比较寄存器决定了PWM输出的开关时间。定时器具体操作时序如图11-2所示。第4页/共21页第5页/共21页11.1.1S3C2410定时器特性:.5个16位定时器;.2个8位预分频器和2个4位分频器;.可编程PWM输出占空比;.自动重载模式或者单个脉冲输出模式;.具有死区生成器;.自动重载与双缓冲。S3C2410定时器具有双缓冲功能,能在不中止当前定时器运行的情况下,重载下次定时器运行参数,所以尽管新的定时器的值被设置好了。当前操作仍能成功完成。定时器值可以被写入定时器计数缓冲寄存器(TCNTBn),当前计数器的值可以从定时器计数观察寄存器(TCNTOn)读出。读出的TCNTBn值并不是当前计数器的值,而是下次重载的计数器值。TCNTn的值等于0时,自动重载操作,把TCNTBn的值装人TCNTn,只有当自动重载允许并且TCNTn的值等于1时才会自动重载。如果TCNTn=0,自动重载禁止,.则定时器停止运行,具体如图11-3所示。第6页/共21页使用手动更新完成定时器的初始化和倒相位:当计数器的值减到0时会发生自动重载操作,所以TCNTn的初始值必须由用户提前定义好,在这种情况下就需要手动更新启动值。以下几个步骤给出了更新过程:第7页/共21页.向TCNTBn和TCMPBn写入初始值。.置位相应定时器的手动更新位,不管是否使用倒相功能,推荐设置倒相位.启动定时器,清除手动更新位。注意:如果定时器被强制停止,TCNTn保持原来的值;如果要设置一个新的值,必须使用手动更新位。另外,手动更新位要在定时器启动后清除,否则不能正常运行。只要TOUT的倒相位改变,不管定时器是否处于运行状态,TOUT都会倒相,因此在手动更新时需要设置倒相位。第8页/共21页11.1.2定时器操作示例定时器操作示例如图11-4所示。第9页/共21页1:允许自动重载功能,设置TCNTBn=160(50十110),TCMPBn=110。设置手动更新位和配置倒相位(开/关),手动更新位被设置后,TCNTBn和TCMP'Bn的值被自动装人了TCNTn和TCMPn。然后,设置TCNTBn和TCMPBn分别等于80(40+40)和40。2:设置开始位将定时器清零并且手动更新位,取消倒相功能,允许自动重载,定时器开始启动减法计数。

3:当TCNTn和TCMPn的值相等时,TOUT输出电平由低变高。4:当TCNTn的值等于0时产生中断,并在下一个时钟到来时把TCNTBn的值装人暂存器中。第10页/共21页5:在中断服务子程序中,把80(20+60)和60分别装入TCNTBn和TCMPBn。6:当TCNTn和TCMPn的值相等时,TOUTn输出电平由低变高。7:当TCNTn=0时,把TCNTBn和TCMPBn的值分别自动装入TCNTn和TCMPn,并触发中断。8:在中断服务子程序中,禁止使用自动重载和中断请求来中止定时器运行。9:当TCNTn和TCMPn的值相等时,TOUTn输出电平由低变高。10:尽管TCNTn=0,但是定时器停止运行,也不再发生自动重载操作,这是因为定时器自动重载功能被禁止。11:不再产生新的中断。第11页/共21页11.1.3死区生成器当PWM控制用于电源设备时需要用到死区功能。这个功能允许在一个没备关闭和另一个设备开启之间插入一个时间间隔。这个时间间隔可以防止两个设备同时被启动。TOUT0是定时器0的PWM输出,nTOUT0是TOUT0的倒相信号。如果死区功能被允许,TOUT0和nTOUT0的输出波形就变成了TOUT0_DZ和Ntout0_DZ。如图11-5所示。nTOUT0_DZ在TOUT1脚上产生。在死区间隔内,TOUT0_DZ和nTOUT0_DZ就不会同时是高电平了。第12页/共21页11.2PWM定时器控制寄存器11.2.1定时器配置寄存器0第13页/共21页定时器配置寄存器0(TCFG0),地址:0x51000000,如表11-2所列。定时器输入时钟频率:fTCLK=[fPCLK/(Prescaler+1)]/分配器分频值其中,Prescaler为预分频值(0~255);分配器的分频值为2、4、8和16。第14页/共21页11.2.2定时器配置寄存器1定时器配置寄存器1(TCFG1)地址:0x51000004,如表11-3所列。第15页/共21页11.2.3定时器减法缓冲寄存器(TCNTBn)和比较缓冲寄存器(TCMPBn)定时器减法缓冲寄存器(TCNTBn)和比较缓冲寄存器(TCMPBn)定义如表11-4所列第16页/共21页11.2.4定时器控制寄存器定时器控制寄存器(TCON)地址:0x51000008,如表11-5所列。表11-5定时器控制寄存器(TCON)定义第17页/共21页11.2.5定时器观察寄存器定时器观察寄存器(TCNTOn)地址:0x5100000C~0x5100003C,其具体描述如表11-6所列。表11-6定时器观察寄存器11.3PWM定时器软件编程11.3.1编程步骤。设定PWM的输出频率freq和占空比rate,rTCNTB0用于输出频率,rTCNTB0寄存器值div计算如下:

div=PCLK/(预分频值+1)/时钟驱动器取值/freq其中预分频值=0~255,由rTCFG0决定。。通过设置rTCMPB0寄存器调正占空比rate,该寄存器值value计算如下:

value=div×rate。第18页/共21页11.3.2编程示例

。编程改变输出频率

rRTCFG0=0xff;//设置预分频器分频值,TIME0/1=255,TIME2/3/4=0 rRTCFG1=0x1;//S设置定时器中断工作模式for(freq=4000;freq<14000;freq+=1000)//频率从4000~14000HZ变化

div=(PCLK/256/4)/freq;rTCON=0x0;rTCNTB0=div;rTCMPB0=(2*div)/3;rTCON=0xa;//手动装定时器的计数值rTCON=0x9;//启动定时器for(index=0;index<10000;index++);rTCON=0x0;//停止定时器第19页/共21页。编程改变输出占空比div=(PCLK/256/4)/8000;//输出频率8000HZ,使用1%~95%的占空比for(freq=1;freq<50;freq+=5)/rTCNTB0=div;rTC

温馨提示

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

评论

0/150

提交评论