




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ARM的
嵌入式系统原理及应用
刘彦文编著
2017年2月
第8章脉宽调制定时器、实时时钟
及看门狗定时器高等院校信息技术规划教材本课件的配套教材《基于ARM的嵌入式系统原理及应用》
刘彦文清华大学出版社2017/2
第8章脉宽调制定时器、
实时时钟
及看门狗定时器
8.1脉宽调制定时器8.1.1S3C2440A/S3C2410A
脉宽调制定时器概述⒈定时器模块参见图8.1,S3C2440A/S3C2410A有5个16位的定时器。定时器0~3带有脉宽调制(PulseWidthModulation,PWM)功能,这4个定时器的输出信号连接到芯片的TOUT0~TOUT3输出引脚,输出波形的频率和占空比可编程控制。定时器4是一个内部定时器,没有PWM功能,输出信号不连接到芯片引脚。定时器0有一个死区发生器(deadzonegenerator),能够用于对大电流设备进行控制。定时器0和1共用一个8位预分频器(prescaler),定时器2~4共用另一个8位预分频器。定时器计数时钟信号来源于时钟分频器(clockdivider),通过编程能够选择时钟分频器的1/2、1/4、1/8、1/16分频信号或选择使用TCLK0、TCLK1。8位预分频器是可编程的,根据保存在定时器配置寄存器TCFG0中的预分频值,对PCLK分频。定时器配置寄存器TCFG1为每个定时器选择时钟分频信号(1/2、1/4、1/8、1/16)或选择TCLK0、TCLK1。S3C2440A/S3C2410A片内定时器,支持自动重装模式(一次定时结束,以重装值开始下一次定时)或一次脉冲模式(一次定时结束,停止定时器)。定时器模块图见图8.1。
⒉定时器寄存器组成和定时器主要操作过程参见图8.2,除了定时器4,定时器0~3中每个定时器内部,都有下述寄存器。⑴定时器计数缓冲器寄存器TCNTBn,程序可读写,用于保存定时器计数初值。在手动更新(manualupdate)允许时,将这个初值送到定时器计数寄存器TCNTn,在TCNTn中进行递减计数操作。当自动重装(autoreload)允许时,一次计数结束(TCNTn递减计数达到0时),自动将TCNTBn的值装到TCNTn。TCNTBn值的不同,决定了输出信号TOUTn频率的不同。
⑵定时器比较缓冲器寄存器TCMPBn,程序可读写,用于保存定时器比较初值。在手动更新允许时,将这个初值送到定时器比较寄存器TCMPn。当执行计数的TCNTn的值与TCMPn的值相等时,计数器输出信号TOUTn电平由低变高。当自动重装允许时,一次计数结束(TCNTn递减计数达到0时),自动将TCMPBn的值装到TCMPn。TCMPBn的值,被用作脉宽调制,即在输出信号TOUTn频率不变时,对每个输出脉冲低电平、高电平占用时间的调制,也称为输出信号占空比的调制。⑶定时器计数寄存器TCNTn,是内部寄存器,程序不可读写。TCNTn也称为减法计数器、倒计数器或递减计数器。定时器的计数操作在TCNTn中执行。TCNTn计数时钟信号来源于时钟分频器。当TCNTn一次计数结束,或产生DMA请求,或产生中断请求,由编程决定。当一次计数结束,如果自动重装允许时,TCNTBn值送TCNTn、TCMPBn值送TCMPn,开始下一次计数;如果自动重装禁止,则计数器停止。⑷定时器比较寄存器TCMPn,是内部寄存器,程序不可读写。在计数过程中,一旦TCNTn的值与TCMPn的值相等,计数器输出TOUTn电平由低变高。
⑸定时器计数观察寄存器TCNTOn,程序可读写。在计数过程中,如果希望读出TCNTn的值,只能通过读出TCNTOn实现,不能直接读TCNTn的值。要使定时器0~3运行,主要操作包括:
通过编程先送出计数值到TCNTBn,送出比较值(脉宽调制值)到TCMPBn。当设置为手动更新允许时,定时器自动将TCNTBn、TCMPBn的内容送TCNTn、TCMPn。然后设置启动定时器(TCON寄存器对应的start/stop位为1),则TCNTn开始递减计数。计数过程中当TCNTn的值与TCMPn的值相等时,输出信号TOUTn的电平由低变高。如果允许自动重装,当TCNTn计数达到0时,进行重装,同时产生中断请求或DMA请求,再开始下一次定时。如果不允许自动重装,则定时器停止。在计数过程中,可以给TCNTBn和TCMPBn装入一个新的值,在自动重装方式,新的值只能用于下一次定时,对当前正在进行的定时操作,不产生影响。定时器4除了没有TCMPB4和TCMP4寄存器外,其他寄存器与定时器0~3相同。定时器4不能进行脉宽调制,只能通过对TCNTB4设置不同的值,改变输出信号的频率。⒊PWM定时器用到的S3C2410A引脚信号PWM定时器输出信号,作为S3C2440A/S3C2410A的TOUT0~TOUT3引脚信号。可以将S3C2440A/S3C2410A引脚引入的时钟源TCLK1、TCLK0,作为定时器的时钟信号。
8.1.2S3C2440A/S3C2410A脉宽调制定时器操作⒈基本定时操作基本定时操作见图8.3(P321)。⒉自动重装与双缓冲S3C2440A/S3C2410APWM定时器有双缓冲功能,也就是说有两个缓冲器,定时器计数缓冲器寄存器TCNTBn和定时器比较缓冲器寄存器TCMPBn。图8.4(P322)是双缓冲功能的一个举例,图中省略了TCMPBn寄存器的值。
⒊定时器初始使用手动更新位和反相器位当TCNTn在递减计数过程中,一旦达到0时,如果定时器控制寄存器TCON允许该定时器自动重装,会出现自动重装操作。而TCNTn和TCMPn的初值,必须由用户(程序)事先设置,在这种情况下,通过设置定时器控制寄存器TCON中某一定时器的手动更新位为1,初值从TCNTBn、TCMPBn装到TCNTn、TCMPn。以下步骤描述了如何启动定时器开始定时:⑴写初值到TCNTBn和TCMPBn。⑵在定时器控制寄存器TCON中,设置对应定时器的手动更新位为1,之后定时器自动将TCNTBn和TCMPBn值送TCNTn和TCMPn。推荐同时配置反相器on/off位,决定输出TOUTn是否经过反相器。⑶在定时器控制寄存器TCON中设置对应定时器的start/stop位为1,启动该定时器开始定时;同时要清0手动更新位。⒋定时器操作举例定时器操作举例见图8.5(P323)。⒌脉宽调制脉宽调制(PulseWidthModulation,PWM)功能通过使用TCMPBn寄存器来实现,而PWM的频率由TCNTBn寄存器的值确定。图8.6(P324)通过举例,表明了TCMPBn的值越小,TOUTn输出高电平的时间越短,输出低电平的时间越长;而TCMPBn的值越大,TOUTn输出高电平的时间越长,输出低电平的时间越短。
⒍输出电平控制如图8.7(P324)所示,反相器设定为off或on,其输出信号TOUTn的波形高低电平正好相反。⒎死区发生器(deadzonegenerator)使用PWM对大电流设备进行控制时,常用到死区(deadzone)功能。死区功能在切断一个开关设备和接通另一个开关设备之间,允许插入一个时间间隙。在这个时间间隙,禁止两个开关设备同时被接通,即使接通非常短的时间也不允许。当定时器死区功能被允许时,输出波形见图8.8(P325)。⒏DMA请求模式定时器在每段指定时间后(一次定时结束)能够产生DMA请求信号。DMA模式配置和DMA/中断操作见P325表8-1。图8.9(P326)表明,定时器2一旦设置为DMA模式,将不产生中断请求。定时器2的DMA请求和响应时间关系,也在图8.9中给出。
8.1.3
S3C2440A/S3C2410A脉宽调制
定时器特殊功能寄存器⒈定时器配置寄存器0、定时器配置寄存器1和定时器控制寄存器定时器配置寄存器0、定时器配置寄存器1和定时器控制寄存器,寄存器名、地址、R/W、描述及Reset值如表8-2所示,各寄存器具体含义见P326-327表8-3、表8-4和表8-5。定时器输入时钟频率=PCLK/{prescaler值+1}/{divider值}{prescaler值}=0~255{divider值}=2、4、8、162.定时器计数缓冲器寄存器、比较缓冲器寄存器和计数观察寄存器定时器0~4都有计数缓冲器寄存器TCNTBn和计数观察寄存器TCNTOn,定时器4没有比较缓冲器寄存器,定时器0~3有比较缓冲器寄存器TCMPBn。除了地址不同以外,各定时器对应的寄存器含义相同,如P328表8-6和表8-7所示。8.1.4S3C2410A脉宽调制定时器应用举例【例8.1】当PCLK=66.5MHz时,选择不同的时钟分频(1/2、1/4、1/8、1/16)输入,分别计算定时器最小分辨率、最大分辨率及最大定时区间。参见8.1.3节中定时器配置寄存器TCFG0的内容,根据定时器输入时钟频率计算式,计算结果见P328表8-8。⑴最小分辨率:定时器输入时钟的频率=PCLK/{prescaler值+1}/{divider值}=66.5(MHz)/{0+1}/{2}=33.2500(MHz)一个计数脉冲的时间
=1/33.2500(MHz)=0.0300(µs)⑵最大分辨率:定时器输入时钟的频率=PCLK/{255+1}/{2}=66.5(MHz)/256/2=129.8828(KHz)一个计数脉冲的时间=1/129.8828(KHz)=7.6992(µs)⑶最大定时区间:由于TCNTBn=65535,计数到0共65536个计数脉冲,所以65536×7.6992(µs)=0.5045(sec)。【例8.2】下面给出了使用C语言编写的,对定时器0/1/2/3测试的程序片段,假定程序中用到的寄存器地址在别的程序中已定义过,定时器产生中断后的处理程序这里没有列出。
(见P329-331)
8.1.5S3C44B0X脉宽调制定时器S3C44B0X脉宽调制定时器的功能与S3C2440A/S3C2410A脉宽调制定时器的功能相同,组成上主要区别是S3C44B0X多了一个脉宽调制定时器。S3C44B0X有6个16位的定时器,定时器0~4带有脉宽调制功能,定时器5是一个内部定时器。8.2实时时钟8.2.1S3C2440A/S3C2410A实时时钟概述S3C2440A/S3C2410A芯片内部有一个实时时钟(RealTimeClock,RTC)模块,当系统电源闭合时,使用系统提供的电源,当系统电源切断时,由后备电池为RTC模块供电。无论系统加电或切断电源,RTC都在运行;可以对RTC设定报警时间。使用STRB/LDRB指令,可以在RTC和CPU之间传送8位BCD码的数据,包括秒、分、时、日、星期、月、年。RTC模块使用32.768KHz的外部晶振工作。
RTC作为系统时钟使用,也能够执行报警功能、产生节拍时间中断。主要特点有:·
使用BCD码表示秒、分、时、日、星期、月、年;·
有闰年产生器;·
报警功能:有报警中断或从Power_OFF模式中唤醒功能;·
解决了2000年问题;·
独立的电源引脚(RTCVDD);·
支持毫秒级节拍时间中断,可用于RTOS内核;·
支持秒进位复位功能。RTC用到的S3C2440A/S3C2410A引脚信号有:外接晶振引脚信号XTIrtc、XTOrtc和外接电源引脚RTCVDD(1.8V)。
8.2.2S3C2440A/S3C2410A实时时钟组成与操作RTC组成框图见图8.10。
⒈闰年产生器闰年产生器基于从BCDDATE、BCDMON、BCDYEAR来的数据,确定每个月的最后一天是28、29、30或31日。一个8位的计数器只能表示2位BCD数字,因此它不能确定00(年的最低2位数字)年是闰年或不是闰年。为了解决这一问题,在S3C2410A的RTC模块中有一个硬件逻辑支持2000年作为闰年。要注意1900年不是闰年而2000年是闰年。因此在S3C2410A中,2位BCD码的00代表2000年,而不是1900年。⒉读/写寄存器RTCCON控制寄存器位[0]必须被设置为1,然后才可以写RTC模块中的寄存器。如果这一位被设置为0,不能写入RTC模块中的寄存器。⒊后备电池当系统电源切断时,通过RTC引脚提供电源到RTC模块,RTC逻辑由后备电池驱动。这时CPU接口与RTC的逻辑被阻塞,后备电池仅仅驱动晶振电路和BCD计数器,使得BCD计数器功耗为最小。⒋报警功能在SLEEP/Power_OFF模式或Normal操作模式,RTC在规定的时间产生一个报警信号。在Normal操作模式,报警中断INT_RTC/ALMINT被激活;在SLEEP/Power_OFF模式,像INT_RTC/ALMINT一样,电源管理唤醒信号PMWKUP也能够被激活,详见8.2.3节。RTC报警控制寄存器RTCALM,确定报警允许/禁止和报警时间设定条件。⒌节拍时间(ticktime)中断RTC节拍时间被用作中断请求。节拍时间计数寄存器TICNT有1位中断允许位和7位节拍时间计数值位。计数值达到0时,节拍时间中断出现。中断周期计算如下:Period=(n+1)/128(second)式中:n为节拍时间计数值,范围为1~127。⒍进位复位功能(roundresetfunction)进位复位功能由RTC进位复位寄存器RTCRST来实现。产生秒进位的边界(30、40或50秒)可以选择,在进位复位后,秒的值被设置为0。例如,如果当前时间是23:37:47,并且设置进位边界为40秒,则进位复位功能改变当前时间为23:38:00。⒎32.768KHz外接晶振连接举例图8.11是使用32.768KHz晶振作为RTC单元晶振电路的一个实例。8.2.3S3C2440A/S3C2410A实时时钟
特殊功能寄存器⒈RTC控制寄存器RTC控制寄存器RTCCON由4位组成,位[0]即RTCEN用作控制禁止/允许对RTC寄存器的写入,而其他3位CLKSEL、CNTSEL、CLKRST用于测试。RTCCON寄存器地址、Reset值及各位含义见P334-335表8-9和表8-10⒉RTC报警控制和报警数据寄存器RTC报警控制寄存器RTCALM,确定允许/禁止报警和报警时间。在SLEEP/Power_OFF模式,通过INT_RTC/ALMINT和PMWKUP,RTCALM寄存器产生报警信号,参见图8.10。在Normal操作模式,仅仅通过INT_RTC/ALMINT产生报警信号。RTC报警控制和报警数据寄存器地址及Reset值见P335表8-11,寄存器各位的含义见表8-12。
⒊RTC进位复位寄存器RTC进位复位寄存器RTCRST,Reset值为0x0,地址及各位含义见P336表8-13。⒋节拍时间计数寄存器节拍时间计数寄存器TICNT,Reset值为0x00,地址及各位含义见P337表8-14。⒌秒、分、时、日、星期、月、年数据寄存器可以对这些寄存器设置当前时间和日期,读取当前时间和日期。这些寄存器使用BCD值,Reset值未定义,地址及各位含义见表8-15。8.2.4RTC程序举例【例8.3】下面给出了测试RTC的程序片段。寄存器与地址的对应值在其他文件中定义过了,此处省略。第1段程序读RTC日期、时间各寄存器值并显示;第2段程序由输入值设置RTC。
(见P338-310)8.3看门狗定时器8.3.1看门狗定时器概述看门狗定时器(WatchDogTimer,WDT)简称看门狗,属于定时器中的一种。⒈一般看门狗定时器概述一般看门狗定时器,通常可以由程序控制允许/禁止看门狗定时器,允许即启动定时器,禁止即停止定时器。看门狗定时器内部最少有一个计数寄存器,执行计数操作。使用时应该由程序给这个计数寄存器设定一个计数初值,然后允许看门狗定时器(启动),来一个计数脉冲,计数寄存器计一次数。对于减法计数器,当减到0时,产生一个定时输出信号,通常把这个定时输出信号作为内部Reset信号使用,重新启动控制器(指CPU中的控制器)。简单地说,使用看门狗定时器,目的是当运行的程序受到了干扰,发生了死循环,或者由于运行的程序内部事先未发现的错误,导致程序不是按照程序员预定的运行路线运行时,看门狗定时器能够重新启动控制器。
⒉S3C2440A/S3C2410A看门狗定时器概述S3C2440A/S3C2410A片内有一个看门狗定时器模块,当控制器的操作受到像噪音或系统错误的干扰时,看门狗定时器能够重新启动控制器操作;这个定时器也能被用作一个通常的16位间隔时间定时器,产生中断请求。看门狗定时器用于重启控制器时,在看门狗定时器计数寄存器WTCNT中执行计数操作,当允许看门狗定时器时(WTCON[5]=1),每来一个计数脉冲,减1。当计数值减到0时,能够产生一个长度为128个PCLK时间长度的复位(Reset)信号。8.3.2看门狗定时器操作⒈
看门狗定时器源时钟的分频看门狗定时器功能框图如图8.12所示。
看门狗定时器用PCLK作为它唯一的源时钟。为了产生相应的看门狗定时器时钟,PCLK先被预分频,之后再次被分频(称为时钟分频)。预分频值和时钟分频值的选择,在看门狗定时器的控制寄存器WTCON中被指定。合法的预分频值的范围从0到255。时钟分频值可以选择16、32、64或128。使用下式计算看门狗定时器时钟频率和每个定时时钟周期的时长。t_watchdog=1/(PCLK/(Prescalervalue+1)/Division_factor)(式8.1)式中Prescalervalue为预分频值,Division_factor为分频因子,即时钟分频选择的值。⒉WTDAT和WTCNT一旦看门狗定时器被允许(启动),看门狗定时器数据寄存器WTDAT(WatchdogTimerDataRegister)的值不能被自动装入定时器计数寄存器WTCNT中,由于这个原因,计数初值必须同时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村板车出售合同范例
- 公司注销业务合同范本
- 中医诊所招聘合同范本
- 单位出售土地合同范本
- 公司车定维修合同范本
- 共享出租场地合同范本
- 劳务联营合同范例
- 加油站出租合同范本
- 企业赋能合同范本
- 二手房房东出租合同范例
- 加盟京东商城合同模板
- 四川省公务员考试行测真题
- 2024年广东省初中学业水平考试中考英语试卷(真题+答案解析)
- (212题)2024综合基础知识考试题库及解析
- DL-T-255-2012燃煤电厂能耗状况评价技术规范
- 家庭教育家长会教案及反思(3篇模板)
- 职业培训师三级操作技能鉴定卷库及答案
- 【视频号运营】视频号运营108招
- 新能源客车安全应急处理指南
- 论电视剧《知否知否应是绿肥红瘦》的现代家庭教育观及启示
- (正式版)JTT 421-2024 港口固定式起重机安全要求
评论
0/150
提交评论