《PIC单片机节能模式.pdf》由会员分享,可在线阅读,更多相关《PIC单片机节能模式.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-1 页节能模式节能模式10第第 10 章章 节能模式节能模式目录目录本章包括下列主题:10.1简介.10-210.2节能模式控制寄存器.10-310.3节能模式下的操作.10-1210.4中断.10-1910.5与节能模式相关的 I/O 引脚.10-1910.6DEBUG(调试)模式下的操作.10-2010.7复位.10-2010.8设计技巧.10-2110.9相关应用笔记.10-2210.10版本历史.10-23PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-2
2、页初稿初稿 2010 Microchip Technology Inc.10.1 简介简介本章介绍PIC32MX器件系列的节能工作模式。PIC32MX器件具有9种低功耗模式(分为两类),允许用户在功耗和器件性能之间寻求平衡。在下面所述的所有模式中,器件可以通过软件选择所需的节能模式。10.1.1CPU 运行模式运行模式在 CPU 运行模式下,CPU 保持运行,而外设可以选择开启或关闭。FRC RUN(运行)模式:CPU 时钟来自 FRC 时钟源(带或不带后分频器)。LPRC RUN(运行)模式:CPU 时钟来自 LPRC 时钟源。SOSC RUN(运行)模式:CPU 时钟来自 SOSC 时钟源
3、。外设总线分频模式:外设所用时钟的频率为 CPU 时钟(SYSCLK)的可编程分频。10.1.2CPU 暂停模式暂停模式在 CPU 暂停模式下,CPU 会暂停。根据所处模式,外设可以继续工作,也可以暂停。POSC IDLE(空闲)模式:系统时钟来自 POSC。系统时钟源继续工作。外设继续工作,但可以选择单独禁止。FRC IDLE(空闲)模式:系统时钟来自 FRC(带或不带后分频器)。外设继续工作,但可以选择单独禁止。SOSC IDLE(空闲)模式:系统时钟来自 SOSC。外设继续工作,但可以选择单独禁止。LPRC IDLE(空闲)模式:系统时钟来自 LPRC。外设继续工作,但可以选择单独禁止。
4、这是时钟运行时器件的最低功耗模式。SLEEP(休眠)模式:暂停 CPU、系统时钟源以及工作在系统时钟源下的任何外设。使用特定时钟源的某些外设可在 Sleep(休眠)模式下继续工作。这是器件的最低功耗模式。2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-3 页第第 10 章章 节能模式节能模式节能模式节能模式1010.2 节能模式控制寄存器节能模式控制寄存器节能模式控制包含以下特殊功能寄存器(Special Function Register,SFR):OSCCON:振荡器模块控制寄存器OSCCONCLR、OSCCONSET 和 OSCCON
5、INV:OSCCON 的原子级位操作只写寄存器 WDTCON:看门狗定时器模块控制寄存器WDTCONCLR、WDTCONSET 和 WDTCONINV:WDTCON 的原子级位操作只写寄存器 RCON:复位模块控制寄存器RCONCLR、RCONSET 和 RCONINV:RCON 的原子级位操作只写寄存器下表汇总了所有与节能模式相关的寄存器。该汇总表之后列出了相应的寄存器,并且每个寄存器均附有详细的说明。表表 10-1:节能模式:节能模式 SFR 汇总汇总名称名称Bit31/23/15/7Bit30/22/14/6Bit29/21/13/5Bit28/20/12/4Bit27/19/11/3B
6、it26/18/10/2Bit25/17/9/1Bit24/16/8/0OSCCON31:24PLLODIVFRCDIV23:16SOSCRDYPBDIVPLLMULT15:8COSCNOSC7:0CLKLOCKULOCKLOCKSLPENCFUFRCENSOSCENOSWENOSCCONCLR31:0写入时会将 OSCCON 中的选定位清零,读取时获得的值未定义OSCCONSET31:0写入时会将 OSCCON 中的选定位置 1,读取时获得的值未定义OSCCONINV31:0写入时会将 OSCCON 中的选定位取反,读取时获得的值未定义WDTCON31:2423:1615:8ON7:0SWD
7、TPSWDTCLRWDTCONCLR31:0写入时会将 WDTCON 中的选定位清零,读取时获得的值未定义WDTCONSET31:0写入时会将 WDTCON 中的选定位置 1,读取时获得的值未定义WDTCONINV31:0写入时会将 WDTCON 中的选定位取反,读取时获得的值未定义RCON31:2423:1615:8CMVREGS7:0EXTRSWRWDTOSLEEPIDLEBORPORRCONCLR31:0写入时会将 RCON 中的选定位清零,读取时获得的值未定义RCONSET31:0写入时会将 RCON 中的选定位置 1,读取时获得的值未定义RCONINV31:0写入时会将 RCON 中
8、的选定位取反,读取时获得的值未定义PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-4 页初稿初稿 2010 Microchip Technology Inc.寄存器寄存器 10-1:OSCCON:振荡器控制寄存器:振荡器控制寄存器r-xr-xR/W-xR/W-xR/W-xR/W-0R/W-0R/W-1PLLODIVFRCDIVbit 31bit 24r-xR-0r-xR/W-xR/W-xR/W-xR/W-xR/W-xSOSCRDYPBDIVPLLMULTbit 23bit 16r-xR-0R-0R-0r-xR/W-xR/W-xR/W-xCOSCNOSCbit 15bi
9、t 8R/W-0R-0R-0R/W-0R/W-0R/W-0R/W-xR/W-0CLKLOCKULOCKLOCKSLPENCFUFRCENSOSCENOSWENbit 7bit 0图注:图注:R=可读位W=可写位P=可编程位r=保留位U=未实现位-n=POR 时的值:(0,1,x=未知)bit 29-27PLLODIV:PLL 输出分频比位111=PLL 输出 256 分频110=PLL 输出 64 分频101=PLL 输出 32 分频100=PLL 输出 16 分频011=PLL 输出 8 分频010=PLL 输出 4 分频001=PLL 输出 2 分频000=PLL 输出 1 分频注:注:发
10、生复位时,这些位被设置为 FPLLODIV 配置位(DEVCFG2)的值。bit 26-24FRCDIV:快速内部 RC 时钟分频比位111=FRC 256 分频110=FRC 64 分频101=FRC 32 分频100=FRC 16 分频011=FRC 8 分频010=FRC 4 分频001=FRC 2 分频(默认设置)000=FRC 1 分频bit 23保留:保留:写入 0;忽略读操作bit 22SOSCRDY:辅助振荡器就绪指示位1=指示辅助振荡器正在运行并且已稳定0=辅助振荡器已关闭或仍在预热阶段bit 21未实现:未实现:读为 0 2010 Microchip Technology
11、Inc.初稿初稿DS61130E_CN 第 10-5 页第第 10 章章 节能模式节能模式节能模式节能模式10bit 20-19PBDIV:外设总线时钟分频比位11=PBCLK 是 SYSCLK 的 8 分频(默认)10=PBCLK 是 SYSCLK 的 4 分频01=PBCLK 是 SYSCLK 的 2 分频00=PBCLK 是 SYSCLK 的 1 分频注:注:发生复位时,这些位被设置为配置位(DEVCFG1)的值。bit 18-16PLLMULT:PLL 倍频比位111=时钟进行 24 倍频110=时钟进行 21 倍频101=时钟进行 20 倍频100=时钟进行 19 倍频011=时钟进
12、行 18 倍频010=时钟进行 17 倍频001=时钟进行 16 倍频000=时钟进行 15 倍频注:注:发生复位时,这些位被设置为 PLLMULT 配置位(DEVCFG2)的值。bit 15保留:保留:写入 0;忽略读操作bit 14-12COSC:当前振荡器选择位111=快速内部 RC 振荡器按照 OSCCON 位进行分频110=快速内部 RC 振荡器 16 分频101=低功耗内部 RC 振荡器(LPRC)100=辅助振荡器(SOSC)011=带 PLL 模块的主振荡器(XTPLL、HSPLL 或 ECPLL)010=主振荡器(XT、HS 或 EC)001=带 PLL 模块的快速 RC 振
13、荡器(通过后分频器)(FRCPLL)000=快速 RC 振荡器(FRC)注:注:发生复位时,这些位被设置为 FNOSC 配置位(DEVCFG1)的值。bit 11保留:保留:写入 0;忽略读操作bit 10-8NOSC:新振荡器选择位111=快速内部 RC 振荡器按照 OSCCON 位进行分频110=快速内部 RC 振荡器 16 分频101=低功耗内部 RC 振荡器(LPRC)100=辅助振荡器(SOSC)011=带 PLL 模块的主振荡器(XTPLL、HSPLL 或 ECPLL)010=主振荡器(XT、HS 或 EC)001=带 PLL 模块的快速内部 RC 振荡器(通过后分频器)(FRCP
14、LL)000=快速内部 RC 振荡器(FRC)发生复位时,这些位被设置为 FNOSC 配置位(DEVCFG1)的值。bit 7CLKLOCK:时钟选择锁定使能位 如果使能 FSCM(FCKSM1=1):1=时钟和 PLL 选择被锁定0=时钟和 PLL 选择未被锁定,可以被修改如果禁止 FSCM(FCKSM1=0):时钟和 PLL 选择永不锁定,可以被修改bit 6ULOCK:USB PLL 锁定状态位1=指示 USB PLL 模块处于锁定状态或 USB PLL 模块起振定时器延时结束0=指示 USB PLL 模块处于失锁状态、USB PLL 模块起振定时器正在运行或 USB PLL 被禁止bi
15、t 5LOCK:PLL 锁定状态位 1=PLL 模块处于锁定状态或 PLL 模块起振定时器延时结束0=PLL 模块处于失锁状态、PLL 起振定时器正在运行或 PLL 被禁止bit 4SLPEN:SLEEP(休眠)模式使能位 1=执行 WAIT 指令后器件将进入 SLEEP(休眠)模式0=执行 WAIT 指令后器件将进入 IDLE(空闲)模式寄存器寄存器 10-1:OSCCON:振荡器控制寄存器(续):振荡器控制寄存器(续)PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-6 页初稿初稿 2010 Microchip Technology Inc.bit 3CF:时钟故障
16、检测位 1=故障保护时钟监视器(Fail Safe Clock Monitor,FSCM)检测到时钟故障0=未检测到时钟故障bit 2UFRCEN:USB FRC 时钟使能位1=将 FRC 使能为 USB 时钟源0=将主振荡器或 USB PLL 用作 USB 时钟源bit 1SOSCEN:32.768 kHz 辅助振荡器(SOSC)使能位1=使能辅助振荡器0=禁止辅助振荡器注:注:发生复位时,该位被设置为 FSOSCEN 配置位(DEVCFG1)的值。bit 0OSWEN:振荡器切换使能位1=启动振荡器切换,切换为 NOSC2:NOSC0 位指定的振荡器0=振荡器切换完成寄存器寄存器 10-1
17、:OSCCON:振荡器控制寄存器(续):振荡器控制寄存器(续)2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-7 页第第 10 章章 节能模式节能模式节能模式节能模式10 寄存器寄存器 10-2:OSCCONCLR:振荡器控制清零寄存器:振荡器控制清零寄存器写入时会将 OSCCON 中的选定位清零,读取时获得的值未定义bit 31bit 0bit 31-0将将 OSCCON 中的选定位清零中的选定位清零在一个或多个位中写入 1 会将 OSCCON 寄存器中的相应位清零,但不会影响未实现位或只读位。写入 0 不会影响该寄存器。示例示例:OSC
18、CONCLR=0 x00000001 时,会将 OSCCON 寄存器中的 bit 0 清零。寄存器寄存器 10-3:OSCCONSET:振荡器控制置:振荡器控制置 1 寄存器寄存器写入时会将 OSCCON 中的选定位置 1,读取时获得的值未定义bit 31bit 0bit 31-0将将 OSCCON 中的选定位置中的选定位置 1在一个或多个位中写入 1 会将 OSCCON 寄存器中的相应位置 1,但不会影响未实现位或只读位。写入0 不会影响该寄存器。示例:示例:OSCCONSET=0 x00000001 时,会将 OSCCON 寄存器中的 bit 0 置 1。寄存器寄存器 10-4:OSCCO
19、NINV:振荡器控制取反寄存器:振荡器控制取反寄存器写入时会将 OSCCON 中的选定位取反,读取时获得的值未定义bit 31bit 0bit 31-0将将 OSCCON 中的选定位取反中的选定位取反在一个或多个位中写入 1 会将 OSCCON 寄存器中的相应位取反,但不会影响未实现位或只读位。写入 0 不会影响该寄存器。示例示例:OSCCONINV=0 x00000001 时,会将 OSCCON 寄存器中的 bit 0 取反。PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-8 页初稿初稿 2010 Microchip Technology Inc.寄存器寄存器 10
20、-5:WDTCON:看门狗定时器控制寄存器:看门狗定时器控制寄存器r-xr-xr-xr-xr-xr-xr-xr-xbit 31bit 24r-xr-xr-xr-xr-xr-xr-xr-xbit 23bit 16R/W-0r-xr-xr-xr-xr-xr-xr-xONbit 15bit 8r-xR-xR-xR-xR-xR-xr-0R/W-0SWDTPSWDTCLRbit 7bit 0图注:图注:R=可读位W=可写位P=可编程位r=保留位U=未实现位-n=POR 时的值:(0,1,x=未知)bit 15ON:看门狗外设使能位1=使能看门狗外设。寄存器中其他位的状态不会受该位置 1 影响。进入 Sl
21、eep(休眠)模式时,LPRC振荡器不会被禁止。0=禁止看门狗外设,不会消耗电流。允许进行 SFR 修改。该寄存器中其他位的状态不会受该位清零影响。注:注:使用 1:1 PBCLK 分频比时,在清零模块 ON 位的指令之后,用户的软件不应立即在 SYSCLK周期中读/写外设的 SFR。2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-9 页第第 10 章章 节能模式节能模式节能模式节能模式10寄存器寄存器 10-6:WDTCONCLR:看门狗定时器控制清零寄存器:看门狗定时器控制清零寄存器写入时会将 WDTCON 中的选定位清零,读取时获得的
22、值未定义bit 31bit 0bit 31-0将将 WDTCON 中的选定位清零中的选定位清零在一个或多个位中写入 1 会将 WDTCON 寄存器中的相应位清零,但不会影响未实现位或只读位。写入 0 不会影响该寄存器。示例:示例:WDTCONCLR=0 x00008001 时,会将 WDTCON 寄存器中的 bit 15 和 bit 0 清零。寄存器寄存器 10-7:WDTCONSET:看门狗定时器控制置:看门狗定时器控制置 1 寄存器寄存器写入时会将 WDTCON 中的选定位置 1,读取时获得的值未定义bit 31bit 0bit 31-0将将 WDTCON 中的选定位置中的选定位置 1在一
23、个或多个位中写入 1 会将 WDTCON 寄存器中的相应位置 1,但不会影响未实现位或只读位。写入 0 不会影响该寄存器。示例:示例:WDTCONSET=0 x00008001 时,会将 WDTCON 寄存器中的 bit 15 和 bit 0 置 1。寄存器寄存器 10-8:WDTCONINV:看门狗定时器控制取反寄存器:看门狗定时器控制取反寄存器写入时会将 WDTCON 中的选定位取反,读取时获得的值未定义bit 31bit 0bit 31-0将将 WDTCON 中的选定位取反中的选定位取反在一个或多个位中写入 1 会将 WDTCON 寄存器中的相应位取反,但不会影响未实现位或只读位。写入
24、0 不会影响该寄存器。示例:示例:WDTCONINV=0 x00008001 时,会将 WDTCON 寄存器中的 bit 15 和 bit 0 取反。PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-10 页初稿初稿 2010 Microchip Technology Inc.寄存器寄存器 10-9:RCON:复位控制寄存器:复位控制寄存器r-xr-xr-xr-xr-xr-xr-xr-xbit 31bit 24r-xr-xr-xr-xr-xr-xr-xr-xbit 23bit 16r-xr-xr-xr-xr-xr-0R/W-0R/W-0CMVREGSbit 15bit
25、8R/W-0R/W-0r-xR/W-0R/W-0R/W-0R/W-0R/W-0EXTRSWRWDTOSLEEPIDLEBORPORbit 7bit 0图注:图注:R=可读位W=可写位P=可编程位r=保留位U=未实现位-n=POR 时的值:(0,1,x=未知)bit 3SLEEP:从休眠模式唤醒位1=器件是从 SLEEP(休眠)模式唤醒的0=器件不是从 SLEEP(休眠)模式唤醒的注:注:只有清零该位时,才能检测下一次从 SLEEP(休眠)模式唤醒的情况。bit 2IDLE:从空闲模式唤醒位1=器件是从 IDLE(空闲)模式唤醒的0=器件不是从 IDLE(空闲)模式唤醒的注:注:只有清零该位时,
26、才能检测下一次从 IDLE(空闲)模式唤醒的情况。2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-11 页第第 10 章章 节能模式节能模式节能模式节能模式10 寄存器寄存器 10-10:RCONCLR:RCON 清零寄存器清零寄存器写入时会将 RCON 中的选定位清零,读取时获得的值未定义bit 31bit 0bit 31-0将将 RCON 中的选定位清零中的选定位清零在一个或多个位中写入 1 会将 RCON 寄存器中的相应位清零,但不会影响未实现位或只读位。写入 0不会影响该寄存器。示例:示例:RCONCLR=0 x0000000C 时
27、,会将 RCON 寄存器中的 bit 3 和 bit 2 清零。寄存器寄存器 10-11:RCONSET:RCON 置置 1 寄存器寄存器写入时会将 RCON 中的选定位置 1,读取时获得的值未定义bit 31bit 0bit 31-0将将 RCON 中的选定位置中的选定位置 1在一个或多个位中写入 1 会将 RCON 寄存器中的相应位置 1,但不会影响未实现位或只读位。写入 0不会影响该寄存器。示例:示例:RCONSET=0 x0000000C 时,会将 RCON 寄存器中的 bit 3 和 bit 2 置 1。寄存器寄存器 10-12:RCONINV:RCON 取反寄存器取反寄存器写入时会
28、将 RCON 中的选定位取反,读取时获得的值未定义bit 31bit 0bit 31-0将将 RCON 中的选定位取反中的选定位取反在一个或多个位中写入 1 会将 RCON 寄存器中的相应位取反,但不会影响未实现位或只读位。写入 0不会影响该寄存器。示例:示例:RCONINV=0 x0000000C 时,会将 RCON 寄存器中的 bit 3 和 bit 2 取反。PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-12 页初稿初稿 2010 Microchip Technology Inc.10.3 节能模式下的操作节能模式下的操作PIC32MX 器件系列具有 9 种低
29、功耗模式。所有节能模式的目的都是通过降低器件时钟频率来降低功耗。要实现该目的,可以选择多种低频时钟源。此外,还可以暂停或禁止外设和 CPU,以进一步降低功耗。10.3.1SLEEP(休眠)模式(休眠)模式SLEEP(休眠)模式是器件节能工作模式中的最低功耗模式。CPU 和大部分外设暂停。选定外设可以在 Sleep(休眠)模式下继续工作并可用于将器件从 Sleep(休眠)模式唤醒。关于 Sleep(休眠)模式下外设行为的描述,请参见各外设模块章节。SLEEP(休眠)模式具有以下特性:CPU 暂停。系统时钟源通常关闭。具体信息,请参见第第 10.3.1.1 节“节“SLEEP(休眠)模式下的振荡器
30、关闭”(休眠)模式下的振荡器关闭”。针对所选的振荡器存在不同的唤醒延时(见表 10-2)。Sleep(休眠)模式期间,故障保护时钟监视器(FSCM)不工作。如果使能了 BOR 电路,那么在 SLEEP(休眠)模式期间,该电路继续工作。如果使能了 WDT,它在进入 SLEEP(休眠)模式之前不会自动清零。某些外设可在 SLEEP(休眠)模式下继续工作。这些外设包括检测输入信号电平变化的 I/O引脚、WDT、RTCC、ADC、UART 以及使用外部时钟输入或内部 LPRC 振荡器的外设。I/O 引脚将继续按照器件未处于 Sleep(休眠)模式下的方式拉或灌电流。USB 模块可改写 POSC 或 F
31、RC 的禁止状态。具体信息请参见 USB 章节。为了进一步降低功耗,可在进入 SLEEP(休眠)模式之前用软件单独禁止模块。发生以下任一事件时,处理器将退出 SLEEP(休眠)模式或从 SLEEP(休眠)模式“唤醒”:在 Sleep(休眠)模式下继续工作的已允许中断源的任何中断。中断优先级必须大于当前CPU 优先级。任何形式的器件复位。WDT 超时。请参见第第 10.4.2 节“在看门狗超时时从节“在看门狗超时时从 SLEEP(休眠)或(休眠)或 IDLE(空闲)模式唤醒(空闲)模式唤醒(NMI)”)”。如果中断优先级小于或等于当前优先级,CPU 将保持暂停,但 PBCLK 将开始运行且器件将
32、进入IDLE(空闲)模式。示例代码请参见例 10-1。注:注:在本手册中,对于特定模块中使用的功耗模式和器件使用的功耗模式进行了区分;例如,比较器的 Sleep(休眠)模式和 CPU 的 SLEEP(休眠)模式。为了指示所期望功耗模式的类型,模块功耗模式使用大写字母加小写字母(Sleep,Idle,Debug)(休眠、空闲和调试)来表示,器件功耗模式使用全大写字母(SLEEP,IDLE,DEBUG)(休眠、空闲和调试)来表示。注:注:该模块没有 FRZ 模式。2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-13 页第第 10 章章 节能模式
33、节能模式节能模式节能模式1010.3.1.1SLEEP(休眠)模式下的振荡器关闭(休眠)模式下的振荡器关闭器件在 SLEEP(休眠)模式下禁止时钟源的条件为:振荡器类型、使用时钟源的外设,以及(选定时钟源的)时钟使能位。如果 CPU 时钟源为 POSC,则在 SLEEP(休眠)模式下会被关闭。关于从 SLEEP(休眠)模式唤醒时适用的延时,请参见表 10-2。USB 模块可改写 POSC 或 FRC 的禁止状态。具体信息请参见 USB 章节。如果 CPU 时钟源为 FRC,则在 SLEEP(休眠)模式下会被关闭。关于从 SLEEP(休眠)模式唤醒时适用的延时,请参见表 10-2。USB 模块可
34、改写 POSC 或 FRC 的禁止状态。具体信息请参见 USB 章节。如果 CPU 时钟源为 SOSC,则 SOSCEN 位未置 1 时会被关闭。关于从 SLEEP(休眠)模式唤醒时适用的延时,请参见表 10-2。如果 CPU 时钟源为 LPRC,并且在 SLEEP(休眠)模式下工作的外设(例如 WDT)不使用该时钟源,则会被关闭。关于从 SLEEP(休眠)模式唤醒时适用的延时,请参见表 10-2。10.3.1.2从从 SLEEP(休眠)模式唤醒时的时钟选择(休眠)模式唤醒时的时钟选择处理器将恢复代码执行并使用与在进入 SLEEP(休眠)模式时有效的相同时钟源。如果在器件退出 SLEEP(休眠
35、)模式时使用晶振和/或 PLL 作为时钟源,则器件会受启动延时影响。10.3.1.3从从 SLEEP(休眠)模式唤醒的延时(休眠)模式唤醒的延时表 10-2 中给出了与从 SLEEP(休眠)模式唤醒时关联的振荡器起振和故障保护时钟监视器延时(如果使能)。表表 10-2:从休眠模式退出的延时:从休眠模式退出的延时 10.3.1.4使用晶振或使用晶振或 PLL 从从 SLEEP(休眠)模式唤醒(休眠)模式唤醒如果系统时钟源来自晶振和/或 PLL,则在系统时钟源可供器件使用之前将应用一段振荡器起振定时器(Oscillator Start-up Timer,OST)和/或 PLL 锁定延时。作为该规则
36、的一个特例,如果系统时钟源是 POSC 振荡器且在 SLEEP(休眠)模式下运行,则不应用振荡器延时。时钟源振荡器延时时钟源振荡器延时FSCM 延时延时EC 和 EXTRCEC+PLLTLOCKTFSCMXT+PLLTOST+TLOCKTFSCMXT、HS 和 XTLTOSTTFSCMLP(休眠期间关闭)TOSTTFSCMLP(休眠期间开启)FRC 和 LPRC注:注:关于 TPOR、TFSCM和 TLOCK的规范值,请参见 PIC32MX 器件数据手册的“电气规范”章节。注:注:虽然应用了各种延时,但晶振(和 PLL)还是可能在 TOST或 TLOCK延时结束时并未启动和运行。为了正确工作,
37、用户必须设计外部振荡器电路,以便可以在延时周期内产生可靠的振荡。PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-14 页初稿初稿 2010 Microchip Technology Inc.10.3.1.5故障保护时钟监视器(故障保护时钟监视器(FSCM)延时和)延时和 SLEEP(休眠)模式(休眠)模式在器件处于 Sleep(休眠)模式时,FSCM 不工作。如果使能了 FSCM,则它会在器件从 Sleep(休眠)模式唤醒时继续开始工作。此时会应用一段 TFSCM延时,让振荡器源可以在 FSCM 继续开始监视之前稳定下来。如果以下条件为真,则会在从 SLEEP(休眠)
38、模式唤醒时应用一段 TFSCM延时:振荡器在处于 SLEEP(休眠)模式时被关闭。系统时钟来自晶振源和/或 PLL。在大多数情况下,在器件恢复执行指令之前,TFSCM延时为 OST 超时和 PLL 进入稳定状态提供足够时间。如果使能了 FSCM,它将在 TFSCM延时结束后开始监视系统时钟源。10.3.1.6振荡器慢速起振振荡器慢速起振在振荡器慢速起振时,OST 和 PLL 锁定时间可能在 FSCM 发生超时之前还未结束。如果使能了 FSCM,器件将检测到此条件并将其作为一个时钟故障,然后产生时钟故障陷阱。器件将切换到 FRC 振荡器,用户可以在时钟故障中断服务程序中重新使能晶振源。如果未使能
39、 FSCM,器件在时钟稳定之前不会开始执行代码。从用户角度来看,器件将处于SLEEP(休眠)模式直到振荡器时钟起振。10.3.1.7SLEEP(休眠)模式下振荡器的(休眠)模式下振荡器的 USB 外设控制外设控制在 USB 模块工作时,在器件进入休眠模式时该模块会阻止器件禁止其时钟源。虽然振荡器保持工作,但 CPU 和外设将保持暂停。例例 10-1:将器件置为:将器件置为 SLEEP(休眠)模式,然后通过(休眠)模式,然后通过 WDT 唤醒唤醒/Code example to put the Device in sleep and then Wake the device/with the W
40、DTOSCCONSET=0 x10;/set Power-Saving mode to SleepWDTCONCLR=0 x0002;/Disable WDT window modeWDTCONSET=0 x8000;/Enable WDT/WDT timeout period is set in the device configurationwhile(1).user code.WDTCONSET=0 x01;/service the WDTasm volatile(“wait”);/put device in selected Power-Saving mode/code executi
41、on will resume here after wake.user code./The following code fragment is at the beginning of the C start-up codeif(RCON&0 x18)/The WDT caused a wake from Sleepasm volatile(“eret”);/return from interrupt 2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-15 页第第 10 章章 节能模式节能模式节能模式节能模式1010.3.2外设总线分频方法外
42、设总线分频方法器件上的大部分外设都使用 PBCLK 作为时钟。外设总线的时钟与 SYSCLK 成比例关系,以最大程度降低外设的动态功耗。PBCLK 分频比由 PBDIV(OSCCON)控制,允许的SYSCLK 与 PBCLK 的比值为 1:1、1:2、1:4 和 1:8。当分频比改变时,所有使用 PBCLK 的外设都会受影响。由于诸如 USB、中断控制器、DMA、总线矩阵和预取高速缓存之类的外设都是直接从 SYSCLK 获得时钟,因此,它们不受 PBCLK 分频比变化的影响。改变 PBCLK 分频比会影响:CPU 到外设的访问延时。CPU 必须等待下一个 PBCLK 边沿才能完成读操作。在 1
43、:8 模式下,这会产生 1 至 7 个 SYSCLK 延时。外设的功耗。功耗与外设工作时钟的频率成正比。分频比越大,外设的功耗越低。要使动态功耗最低,应选择适当的 PB 分频比,使外设在满足系统性能的前提下以最低频率运行。当选择 PBCLK 分频比时,应考虑外设时钟要求(如波特率精度)。例如,根据 SYSCLK 的值,UART 外设可能在某个 PBCLK 分频比处无法达到所有波特率值。10.3.2.1动态外设总线分频方法动态外设总线分频方法PBCLK 可以通过软件进行动态分频,以便在器件处于低活动量模式时节省额外的功耗。对PBCLK 进行分频时,需要考虑以下问题:通过 PBCLK 提供时钟的所
44、有外设将同时以相同比率进行分频。对于即使在低功耗模式下也需要维持恒定波特率或脉冲周期的外设,需要考虑这一点。如果在 PBCLK 改变时,有任何通信正通过外设总线上的某个外设,则可能会由于发送或接收期间频率改变而导致数据或协议错误。如果用户希望动态调节 PBCLK 分频比,建议使用以下步骤:禁止波特率会受影响的所有通信外设。在禁止外设之前,应小心确保当前没有任何通信正在进行,因为它可能导致协议错误。根据需要更新外设的波特率发生器(Baud Rate Generator,BRG)设置,以便在新的PBCLK 频率下工作。将外设总线比率更改为所需值。使能波特率受影响的所有通信外设。注:注:修改外设波特
45、率的方式是写入关联的外设 SFR。要最大程度减小响应延时,应在PBCLK 以最高频率运行的模式下修改外设。PIC32MX 系列参考手册系列参考手册DS61130E_CN 第 10-16 页初稿初稿 2010 Microchip Technology Inc.例例 10-2:改变:改变 PB 时钟分频比时钟分频比/Code example to change the PBCLK divisor/This example is for a device running at 40 MHz/Make sure that there is no UART send/receive in progres
46、s.user code.U1BRG=0 x81;/set baud rate for UART1 for 9600.user code.SYSKEY=0 x0;/write invalid key to force lockSYSKEY=0 xAA996655;/Write Key1 to SYSKEYSYSKEY=0 x556699AA;/Write Key2 to SYSKEYOSCCONCLR=0 x3 19;/set PB divisor to minimum(1:1)SYSKEY=0 x0;/write invalid key to force lock.user code./Cha
47、nge Peripheral Clock valueU1BRG=0 x0F;/set baud rate for UART1 for 9600 based on/new PB clock frequencySYSKEY=0 x0;/write invalid key to force lockSYSKEY=0 xAA996655;/Write Key1 to SYSKEYSYSKEY=0 x556699AA;/Write Key2 to SYSKEYOSCCONSET=0 x3 19;/set PB divisor to maximum(1:8)SYSKEY=0 x0;/write inval
48、id key to force lock/Reset Peripheral ClockSYSKEY=0 x0;/write invalid key to force lockSYSKEY=0 xAA996655;/Write Key1 to SYSKEYSYSKEY=0 x556699AA;/Write Key2 to SYSKEYOSCCONCLR=0 x3 19;/set PB divisor to minimum(1:1)SYSKEY=0 x0;/write invalid key to force lockU1BRG=0 x81;/restore baud rate for UART1
49、 to 9600 based/on new PB clock frequency 2010 Microchip Technology Inc.初稿初稿DS61130E_CN 第 10-17 页第第 10 章章 节能模式节能模式节能模式节能模式1010.3.3IDLE(空闲)模式(空闲)模式在 IDLE(空闲)模式下,CPU 暂停,但系统时钟(SYSCLK)源仍然使能。这允许外设在 CPU暂停时继续工作。外设可单独配置为在进入 IDLE(空闲)模式时暂停,方法是将其相应的 SIDL位置 1。由于 CPU 振荡器源保持活动状态,所以退出 Idle(空闲)模式时的延时非常小。有 4 种空闲工作模式:
50、POSC IDLE、FRC IDLE、SOSC IDLE 和 LPRC IDLE。POSC IDLE(空闲)模式:SYSCLK 来自 POSC。CPU 暂停,但 SYSCLK 源继续工作。外设继续工作,但可以选择单独禁止。如果使用了 PLL,则还可以降低倍频比值PLLMULT(OSCCON),以降低外设的功耗。FRC IDLE(空闲)模式:SYSCLK 来自 FRC。CPU 暂停。外设继续工作,但可以选择单独禁止。如果使用了 PLL,则还可以降低倍频比值 PLLMULT(OSCCON),以降低外设的功耗。FRC 时钟可以通过后分频器通过 RCDIV(OSCCON)进一步进行分频。SOSC ID