1 / 75

第十一章 复位、时钟和省电方式控制 本章学习目标 掌握单片机的时钟 掌握单片机的电源检测与控制

第十一章 复位、时钟和省电方式控制 本章学习目标 掌握单片机的时钟 掌握单片机的电源检测与控制. 正确复位和合适的时钟是单片机正常工作的基础,而单片机的省电方式控制可以降低系统的功耗,从而实现低功耗设计。 本章介绍 STC15F2K60S2 单片机的复位、时钟配置方法和单片机的供电电源检测和控制。. §11.1 复位. 复位就是单片机的初始化工作,复位后中央处理器( CPU )及单片机内的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。 复位分为热启动复位和冷启动复位两种,它们的区别如表 11-1 所示。. 表 11-1 热启动复位和冷启动复位.

becky
Download Presentation

第十一章 复位、时钟和省电方式控制 本章学习目标 掌握单片机的时钟 掌握单片机的电源检测与控制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十一章 复位、时钟和省电方式控制 本章学习目标 • 掌握单片机的时钟 • 掌握单片机的电源检测与控制

  2. 正确复位和合适的时钟是单片机正常工作的基础,而单片机的省电方式控制可以降低系统的功耗,从而实现低功耗设计。正确复位和合适的时钟是单片机正常工作的基础,而单片机的省电方式控制可以降低系统的功耗,从而实现低功耗设计。 • 本章介绍STC15F2K60S2单片机的复位、时钟配置方法和单片机的供电电源检测和控制。

  3. §11.1 复位 • 复位就是单片机的初始化工作,复位后中央处理器(CPU)及单片机内的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。 • 复位分为热启动复位和冷启动复位两种,它们的区别如表11-1所示。

  4. 表11-1 热启动复位和冷启动复位

  5. STC15F2K60S2单片机有6种复位方式 • 外部RST引脚复位 • 软件复位 • 掉电复位/上电复位(并可选择增加额外的复位延时180ms,也叫MAX810专用复位电路,其实就是在上电复位后增加一个180ms复位延时) • 内部低电压检测复位 • MAX810专用复位电路复位 • 看门狗复位

  6. 1、外部RST引脚复位 • 外部RST引脚复位就是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。 • P5.4/RST引脚出厂时被配置为I/O口,要将其配置为复位功能,可在使用ISP下载程序时设置。 • 如果P5.4/RST引脚已在ISP烧录程序时被设置为复位脚,那P5.4/RST就是芯片复位的输入脚。 • 将RST复位脚拉高并维持至少24个时钟加20us后,单片机会进入复位状态,将RST复位脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处开始正常工作。

  7. 2、软件复位 • 在系统运行过程中,有时会根据特殊需求,需要实现单片机系统软复位(热启动之一),传统的8051单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。 • STC15F2K60S2单片机利用ISP/IAP控制寄存器IAP_CONTR(地址为C7H,复位值为0000 x000B)实现了此功能。 • 用户只需简单的控制IAP_CONTR的其中两位SWBS/SWRST就可以系统复位了。

  8. ISP/IAP控制寄存器IAP_CONTR的各位定义如下: 1)SWBS • 软件选择从用户应用程序区启动(0) • 从 ISP程序区启动(1) • 要与SWRST配合才可以实现

  9. 2)SWRST:产生软件复位控制位。 • 0:不操作 • 1 :产生软件系统复位,硬件自动清0 • 要与SWRST配合才可以实现

  10. 下面的描述中,用户应用程序区简称AP区,系统ISP监控程序区简称ISP区。下面的描述中,用户应用程序区简称AP区,系统ISP监控程序区简称ISP区。 例如,从AP区软件复位并切换到AP区开始执行程序的IAP_CONTR设置代码为: MOV IAP_CONTR,#00100000B ;SWBS=0,SWRST=1(选择AP区软复位) • 从ISP区软件复位并切换到AP区开始执行程序的IAP_CONTR设置代码为: MOV IAP_CONTR,#00100000B ;SWBS=0,SWRST=1(选择AP区软复位)

  11. 从AP区软件复位并切换到ISP区开始执行程序的IAP_CONTR设置代码为:从AP区软件复位并切换到ISP区开始执行程序的IAP_CONTR设置代码为: MOV IAP_CONTR,#01100000B ;SWBS=1,SWRST=1(选择ISP区软复位) • 从ISP区软件复位并切换到ISP区开始执行程序的IAP_CONTR设置代码为: MOV IAP_CONTR,#01100000B ;SWBS=1,SWRST=1(选择ISP区软复位)

  12. 3)CMD_FAIL • 如果送了ISP/IAP命令,并对IAP_TRIG送5AH/A5H触发失败,则为1,需要由软件清0。

  13. 3、掉电复位/上电复位 • 当电源电压VCC低于掉电复位/上电复位检测门槛电压时,所有的逻辑电路都会复位。 • 当内部VCC上升至上电复位检测门槛电压以上后,延迟32768个时钟,掉电复位/上电复位结束。

  14. 4、MAX810专用复位电路复位 • STC15F2K60S2单片机内部集成了MAX810专用复位电路。 • 若MAX810专用复位电路在STC-ISP编程器中被允许,则以后掉电复位/上电复位后将再产生约180ms复位延时,复位才能被解除。

  15. 5、内部低压检测复位 • 除了上电复位检测门槛电压外,STC15F2K60S2单片机还有一组更可靠的内部低电压检测门槛电压。 • 当电源电压VCC低于内部低电压检测(LVD)门槛电压时,可产生复位(前提是在STC-ISP编程用户程序时,允许低电压检测复位,即将低电压检测门槛电压设置为复位门槛电压)。

  16. STC15F2K60S2单片机内置了8级可选的内部低电压检测门槛电压。STC15F2K60S2单片机内置了8级可选的内部低电压检测门槛电压。 表11-2 不同温度下单片机的低电压检测门槛电压(单位:V)

  17. 例如,当用户使用5V单片机时,可以根据单片机的实际工频率,在STC-ISP编程中选择表11-2中所列出的低电压检测门槛电压作为复位门槛电压。例如,当用户使用5V单片机时,可以根据单片机的实际工频率,在STC-ISP编程中选择表11-2中所列出的低电压检测门槛电压作为复位门槛电压。 • 如:常温下工作频率是20MHz以上时,可以选择4.32V电压作为复位门槛电压;常温下工作频率是12MHz以下时,可以选择3.82V电压作为复位门槛电压。

  18. 复位门槛电压的选择如图11-1所示。 选择复位门槛电压 图11-1 复位门槛电压的选择

  19. 如果在STC-ISP下载用户应用程序时,不将低电压检测设置为低电压检测复位,则在用户程序中用户可将低电压检测设置为低电压检测中断。当电源电压VCC低于内部低电压检测(LVD)门槛电压时,低电压检测中断请求标志位(LVDF/PCON.5)就会被硬件置位。如果ELVD/IE.6(低电压检测中断允许位)设置为1,低电压检测中断请求标志位就能产生一个低电压检测中断。如果在STC-ISP下载用户应用程序时,不将低电压检测设置为低电压检测复位,则在用户程序中用户可将低电压检测设置为低电压检测中断。当电源电压VCC低于内部低电压检测(LVD)门槛电压时,低电压检测中断请求标志位(LVDF/PCON.5)就会被硬件置位。如果ELVD/IE.6(低电压检测中断允许位)设置为1,低电压检测中断请求标志位就能产生一个低电压检测中断。 • 建议在电压偏低时,不要操作EEPROM/IAP,编程时直接选择“低压禁止IAP操作”。

  20. 6、看门狗复位 (1)看门狗定时器复位 • 在工业控制、汽车电子、航空航天等需要高可靠性的系统中,为了防止系统在异常情况下受到干扰,CPU程序跑飞,导致系统长时间异常工作,往往需要在系统中使用看门狗(Watch Dog)电路。

  21. 看门狗电路的基本作用就是监视CPU的工作。如果CPU在规定的时间内没有按要求访问看门狗,就认为CPU处于异常状态,看门狗就会强迫CPU复位,使系统重新从头开始按规律执行用户程序。看门狗电路的基本作用就是监视CPU的工作。如果CPU在规定的时间内没有按要求访问看门狗,就认为CPU处于异常状态,看门狗就会强迫CPU复位,使系统重新从头开始按规律执行用户程序。 • 正常工作时,单片机可以通过一个I/O引脚定时向看门狗脉冲输入端输入脉冲(脉冲宽度只要不超出看门狗电路的溢出时间即可)。当系统死机时,单片机就会停止向看门狗脉冲输入端输入脉冲,超过一定时间后,看门狗电路就会发出复位信号,将系统复位,使系统恢复正常工作。

  22. STC15F2K60S2单片机内部集成了看门狗定时器(Watch Dog Timer,WDT),使单片机系统可靠性设计变得更加方便、简洁。 • 通过设置和使用WDT控制寄存器WDT_CONTR(地址为C1H,复位值为xx00 0000B)来使用看门狗功能。

  23. 1)WDT_FLAG:看门狗溢出标志位,溢出时 • 该位由硬件置1 • 可用软件将其清0

  24. 2)EN_WDT:看门狗允许位该位 • 当设置为“1”时,看门狗启动。 3)CLR_WDT:看门狗清零位 • 当设为“1”时,看门狗将重新计数。 • 硬件将自动清0此位。

  25. 4)IDLE_WDT:看门狗“IDLE”模式(即空闲模式)位4)IDLE_WDT:看门狗“IDLE”模式(即空闲模式)位 • 当设置为“1”时,WDT在“空闲模式”计数; • 当清0该位时,WDT在“空闲模式”时不计数。 5)PS2、PS1、PS0:WDT预分频系数控制位。

  26. WDT溢出时间的计算方法: WDT的溢出时间 =(12 × 预分频系数 × 32768 ) / 时钟频率 • 例如,时钟为12MHz时 WDT的溢出时间 =(12 × 预分频系数 × 32768) / 12000000 = 预分频系数 × 393216 / 12000000

  27. 常见的预分频系数设置和WDT溢出时间如表11-3所示。常见的预分频系数设置和WDT溢出时间如表11-3所示。 表11-3 WDT的预分频和溢出时间 图10-6 LED动态显示接口电路

  28. 使用ISP编程用户程序时,可以对看门狗进行设置,如图11-2所示。使用ISP编程用户程序时,可以对看门狗进行设置,如图11-2所示。 看门狗功能设置区 图11-2 看门狗设置

  29. 当启用WDT后,用户程序必须周期性的复位WDT,以证明程序正常运行。当启用WDT后,用户程序必须周期性的复位WDT,以证明程序正常运行。 • 如果用户程序在一段时间之后不能复位WDT,WDT就会溢出,将强制CPU自动复位,从而确保程序不会进入死循环,或者执行到无程序代码区。 • 复位WDT的方法是重写WDT控制寄存器的内容。

  30. (2)看门狗定时器的使用 • WDT的使用主要涉及WDT控制寄存器的设置以及WDT的定期复位。 • 使用WDT的汇编语言程序如下:

  31. $INCLUDE (STC15.INC) ;包含STC15F2K60S2单片机寄存器定义文件 ORG 0000H LJMP Initial … ;其他入口定义 ORG 0060H Initial: MOV WDT_CONTR,#00111100B ;WDT控制寄存器初始化 ;EN_WDT=1,CLR_WDT=1,IDLE_WDT=1,PS2=1,PS1=0,PS0=0 … ;其他初始化代码 Main_Loop: LCALL Display ;调用显示子程序 LCALL Keyboard ;调用键盘扫描子程序 … ;其他程序代码 MOV WDT_CONTR,#00111100B ;复位WDT … ;其他代码 LJMP Main_Loop

  32. 使用WDT的C语言程序如下: #include “stc15.h” void main(void) { … //其他初始化代码 WDT_CONTR=0x3c; //EN_WDT=1,CLR_WDT=1,IDLE_WDT= 1,PS2=1,PS1=0,PS0=0 while(1) { display(); keyboard(); … //其他代码 WDT_CONTR=0x3c; //复位WDT } }

  33. §11.2 单片机的时钟 一、时钟源选择 • STC15F2K60S2单片机除了可以使用传统的外部时钟外,还可以选择内部R/C振荡器时钟源(内部时钟)。 • 出厂标准配置是使用芯片内部的R/C振荡器。振荡频率可选,-40℃~85℃时的温飘±1%,常温下温飘可达5‰。如果使用内部时钟,则可以省掉外部晶振。

  34. 在下载用户程序时,可以在硬件选项中选中调节频率,然后在“选择/输入频率”下拉框中选择内部R/C振荡时钟频率,如图11-3所示。在下载用户程序时,可以在硬件选项中选中调节频率,然后在“选择/输入频率”下拉框中选择内部R/C振荡时钟频率,如图11-3所示。 选择内部R/C振荡时钟频率 图11-3 选择时钟源

  35. 二、内部时钟分频和分频寄存器 • 如果希望降低系统功耗,可对内部时钟进行分频。利用时钟分频控制寄存器CLK_DIV(PCON2) 可进行主时钟分频,从而降低单片机工作时钟频率,降低功耗,降低EMI。

  36. 时钟分频寄存器CLK_DIV (也称为PCON2,地址为97H,复位值为0000 x000B)各位的定义如下:

  37. 其中CLKS2、CLKS1和CLKS0用于设置分频系数,如表11-4所示。其中CLKS2、CLKS1和CLKS0用于设置分频系数,如表11-4所示。 表11-4 分频系数选择

  38. STC15F2K60S2单片机的时钟结构如图11-4所示。 图11-4 STC15F2K60S2单片机的时钟结构

  39. §11.3 单片机的电源检测与控制 一、单片机的低电压检测 1、低电压检测相关的寄存器 • 电源控制寄存器PCON的LVDF(PCON.5)位是低电压检测标志位,同时也是低电压检测中断请求标志位。 • 在正常工作和空闲工作状态时,如果内部工作电压Vcc低于低电压检测门槛电压,该位自动置1,与低电压检测中断是否被允许无关。即在内部工作电压Vcc低于低电压检测门槛电压时,不管有没有允许低电压检测中断,该位都自动为1。该位要用软件清0,清0后,如果内部工作电压Vcc继续低于低电压检测门槛电压,该位又被自动设置为1。

  40. 在进入掉电工作状态前,如果低电压检测电路未被允许可产生中断,则在进入掉电模式后,该低电压检测电路不工作以降低功耗。如果被允许可产生低电压检测中断,则在进入掉电模式后,该低电压检测电路继续工作,在内部工作电压Vcc低于低电压检测门槛电压后,产生低电压检测中断,可将MCU从掉电状态唤醒。在进入掉电工作状态前,如果低电压检测电路未被允许可产生中断,则在进入掉电模式后,该低电压检测电路不工作以降低功耗。如果被允许可产生低电压检测中断,则在进入掉电模式后,该低电压检测电路继续工作,在内部工作电压Vcc低于低电压检测门槛电压后,产生低电压检测中断,可将MCU从掉电状态唤醒。

  41. 中断控制允许位是EA和ELVD,ELVD是低电压检测中断允许位。中断控制允许位是EA和ELVD,ELVD是低电压检测中断允许位。 • ELVD = 0时,禁止低电压检测中断; • ELVD = 1时,允许低电压检测中断。 • 中断优先级控制位是PLVD,具有两级中断优先级。 • 中断请求标志位是LVDF,要由软件清0。 • 如果要求在掉电模式下外部低压检测中断继续工作,可将CPU从掉电模式唤醒,则应将外部中断使能和时钟输出寄存器INT_CLKO的LVD_WAKE (INT_CLKO.3)位设置为1。

  42. 2、低电压检测的应用 • 下面以一个具体实例,说明外部低电压检测功能的应用。 【例11-1】编程实现外部低电压检测功能的应用。 解:CPU可以用查询方式查询LVDF标志位,推荐使用中断方式。在中断服务程序中,将LVDF 位清0,再读LVDF位。如果为0,则认为是电源抖动,如果为1,则认为电源掉电,立即进行保存现场数据的工作。保存现场完成后,再将LVDF位清0,再读LVDF位的值。如果为0,则认为电源系统恢复正常,此时CPU可恢复正常工作,如果为1,继续将LVDF位清0,再读LVDF的值,用此方法,等到电源恢复正常,或电源彻底掉电,CPU进入复位状态。

  43. 下面用查询方式演示外部低电压检测功能的应用(各个口线对应的发光二极管在该口线为低电平时亮)。中断方式的使用方法,请读者自行设计。下面用查询方式演示外部低电压检测功能的应用(各个口线对应的发光二极管在该口线为低电平时亮)。中断方式的使用方法,请读者自行设计。 $INCLUDE (STC15.INC) ;包含STC15F2K60S2单片机寄存器定义文件 RUN_LED EQU P1.0 ;程序工作指示灯 ERROR_LED EQU P1.1 ;出错指示灯 Hi_Volt_LED EQU P1.2 ;正常电压指示灯 POWER_ON_LED EQU P1.3 ;电源上电指示灯 LOW_Volt_LED EQU P1.4 ;低电压指示灯

  44. ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SP, #70H ;堆栈指针指向 70H 单元 SETB RUN_LED ;演示程序开始工作 LCALL Delay ;延时 CLR RUN_LED ;演示程序开始工作 LCALL Delay ;延时 SETB RUN_LED MAIN1: MOV A,PCON JBC ACC.5,POWER_ON_1 CLR ERROR_LED SETB POWER_ON_LED SETB Hi_Volt_LED SETB LOW_Volt_LED ERROR: LJMP ERROR

  45. POWER_ON_1: SETB ERROR_LED CLR POWER_ON_LED SETB Hi_Volt_LED SETB LOW_Volt_LED LCALL Delay ;延时 Continue_Read: MOV A,#11011111B ANL PCON, A NOP MOV A,PCON JBC ACC.5,Low_Voltage High_Voltage: SETB ERROR_LED SETB POWER_ON_LED CLR Hi_Volt_LED SETB LOW_Volt_LED LJMP Continue_Read

  46. Low_Voltage: SETB ERROR_LED SETB POWER_ON_LED SETB Hi_Volt_LED CLR LOW_Volt_LED LJMP Continue_Read Delay: CLR A MOV R0, A MOV R1, A MOV R2, #30H Delay_Loop: DJNZ R0, Delay_Loop DJNZ R1, Delay_Loop DJNZ R2, Delay_Loop RET END

  47. 二、省电方式 • STC15F2K60S2单片机可以运行3种省电模式以降低功耗 • 低速模式 • 空闲模式 • 掉电模式 正常工作模式下,STC15F2K60S2单片机的典型 功耗是2.7mA~7mA,而掉电模式下的典型功耗 <0.1uA,空闲模式下的典型功耗是1.8mA。

  48. 1、省电方式的控制 • 低速模式由时钟分频器CLK_DIV(PCON2)控制,而空闲模式和掉电模式的进入由电源控制寄存器PCON的相应位控制。

  49. PCON(地址为87H,复位值为30H)寄存器的各位定义如下:PCON(地址为87H,复位值为30H)寄存器的各位定义如下:

  50. 1)LVDF:低电压检测标志位,同时也是低电压检测中断请求标志位。1)LVDF:低电压检测标志位,同时也是低电压检测中断请求标志位。 2)POF:上电复位标志位,单片机停电后,上电复位标志位为1,可由软件清0。

More Related