首页 理论教育ARMCortexTM-M3控制技术优化方案

ARMCortexTM-M3控制技术优化方案

【摘要】:从ARM7TM升级为Cortex-M3可获取更佳的性能和功效。表4-1所示为ARM7TDMI-S和Cortex-M3的特性。表4-1ARM 7TDM I-S和Cortex-M 3的特性续表注:不包含可选系统外设或者集成的部件。这些外设可进行高度配置,允许Cortex-M3处理器处理大范围的应用并更贴近系统的需求。图4-3Cortex-M3内核框图借助bit-banding技术,Cortex-M3处理器可以在简单系统中直接对数据的单个位进行访问。

ARM(Advanced RISC Machines)既是一个公司的名字,也是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器(我们通常所说的ARM微处理器),已遍及工业控制、消费类电子产品、通信系统、无线系统等各类产品市场。基于ARM技术的微处理器,其应用占据了32位RISC处理器75%以上的市场份额。ARM技术正在逐步渗透到我们生活的各个方面。目前ARM微处理器主要有以下几个系列:ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel的XScale系列和Cortex系列。

1.Cortex-M 3内核概述

ARM公司于2005年推出了Cortex-M3内核,就在当年ARM公司与其他投资商合伙成立了Luminary(流明诺瑞)公司,由该公司率先设计、生产与销售基于Cortex-M3内核的ARM芯片——Stellaris(群星)系列ARM。Cortex-M3内核是ARM公司整个Cortex内核系列中的微控制器系列(M)内核,其他两个系列分别是应用处理器系列(A)与实时控制处理系列(R),这三个系列又分别简称为A、R、M系列,当然这三个系列的内核分别有各自不同的应用场合。Cortex-M3内核的特点主要有以下几点:

(1)Cortex-M3内核主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。

(2)Cortex-M3处理器采用纯Thumb2指令的执行方式,使得这个具有32位高性能的ARM内核能够实现8位和16位的代码存储密度。ARM Cortex-M3处理器是使用最少门数的ARM CPU,核心门数只有33 K,在包含了必要的外设之后的门数也只有60 K,使得封装更为小型,成本更加低廉。

(3)Cortex-M3采用了ARMv7哈佛架构,具有带分支预测的3级流水线,中断延迟最大只有12个时钟周期,在末尾联锁的时候只需要6个时钟周期。同时具有1.25 DMIPS/MHz的性能和0.19 mW/MHz的功耗。从ARM7TM升级为Cortex-M3可获取更佳的性能和功效。

在过去10年中,ARM7系列处理器被广泛应用于众多领域。之后,Cortex-M3在ARM7的基础上开发成功,为基于ARM7处理器系统的升级开辟了通道。它的中心内核效率更高,编程模型更简单,它具有出色的确定中断行为,其集成外设以低成本提供了更强大的性能。

表4-1所示为ARM7TDMI-S和Cortex-M3的特性(采用100 MHz频率和TSMC 0.18G制程)。

表4-1 ARM 7TDM I-S和Cortex-M 3的特性

续表

注:∗不包含可选系统外设(MPU和ETM)或者集成的部件。

2.Cortex-M 3内核结构

基于ARMv7架构的Cortex-M3处理器带有一个分级结构。它集成了名为CM3Core的中心处理器内核和先进的系统外设,实现了内置的中断控制、存储器保护以及系统的调试和跟踪功能。这些外设可进行高度配置,允许Cortex-M3处理器处理大范围的应用并更贴近系统的需求。目前Cortex-M3内核和集成部件(图4-3)已进行了专门的设计,用于实现最大存储容量、最少管脚数目和极低功耗。

Cortex-M3中央内核基于哈佛架构,指令和数据各使用一条总线,ARM7系列处理器使用冯·诺依曼(Von Neumann)架构,指令和数据共用信号总线以及存储器。由于指令和数据可以从存储器中同时读取,所以Cortex-M3处理器对多个操作并行执行,加快了应用程序的执行速度。

Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。内核流水线分三个阶段:取指、译码和执行。当遇到分支指令时,译码阶段也包含预测的指令取指,这提高了执行的速度。处理器在译码阶段期间自行对分支目的地指令进行取指。在稍后的执行过程中,处理完分支指令后便知道下一条要执行的指令。如果分支不跳转,那么紧跟着的下一条指令随时可供使用。如果分支跳转,那么在跳转的同时分支指令可供使用,空闲时间限制为一个周期。

Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径、寄存器库和存储器接口。其中有13个通用寄存器,2个堆栈指针,1个链接寄存器,1个程序计数器和一系列包含编程状态寄存器的特殊寄存器。Cortex-M3处理器支持两种工作模式[线程(Thread)和处理器(Handler)]及两个等级的代码访问(有特权和无特权),能够在不牺牲应用程序安全的前提下执行复杂的开放式系统。无特权代码执行限制或拒绝对某些资源的访问,如某个指令或指定的内存位置。线程模式是常用的工作模式,它同时支持享有特权的代码以及没有特权的代码。当发生异常时,进入处理器模式,在该模式中所有代码都享有特权。此外,所有操作均根据以下两种工作状态进行分类:Thumb代表常规执行操作,Debug代表调试操作。

3.Cortex-M 3存储器映射

Cortex-M3处理器是一个存储器映射系统,为高达4 GB的可寻址存储空间提供简单和固定的存储器映射,同时,这些空间为代码(代码空间)、SRAM(存储空间)、外部存储器/器件和内部/外部外设提供预定义的专用地址。另外,还有一个特殊区域专门供厂家使用,如图4-4所示。

图4-3 Cortex-M3内核框图

借助bit-banding技术,Cortex-M3处理器可以在简单系统中直接对数据的单个位进行访问。存储器映射包含两个位于SRAM的大小均为1 MB的bit-band区域和映射到32 MB别名区域的外设空间。在别名区域中,某个地址上的加载/存储操作将直接转化为对被该地址别名的位的操作。对别名区域中的某个地址进行写操作,如果使其最低有效位置位,那么bit-band位为1,如果使其最低有效位清零,那么bit-band位为零。读别名后的地址将直接返回适当的bit-band位中的值。除此之外,该操作为原子位操作,其他总线活动不能对其中断。

(1)对32 MB SRAM别名区的访问映射为对1 MB SRAMbit-band区的访问。

图4-4 存储器映射

(2)对32 MB外设别名区的访问映射为对1 MB外设bit-band区的访问。

映射公式显示如何将别名区中的字与bit-band区中的对应位或目标位关联。映射公式如下:

bit_word_offset=(byte_offset×32)+(bit_number×4)

bit_word_addr=bit_band_base+bit_word_offset

其中:

①bit_word_offset为bit-band存储区中的目标位的位置。

②bit_word_addr为别名存储区中映射为目标位的字的地址。

③bit_band_base是别名区的开始地址。

④bit_offset为bit-band区中包含目标位的字节的编号。

⑤bit_number为目标位的位置(0~7)。

图4-5所示为SRAM bit-band别名区和SRAMbit-band区之间的bit-band映射例子。

图4-5 bit-band映射例子

地址0x23FFFFE0的别名字映射为0x200FFFFC的bit-band字节的位0:

0x23FFFFE0=0x22000000+(0xFFFFF∗32)+0∗4

地址0x23FFFFEC的别名字映射为0x200FFFFC的bit-band字节的位7:

0x23FFFFEC=0x22000000+(0xFFFFF∗32)+7∗4

地址0x22000000的别名字映射为0x20000000的bit-band字节的位0:

0x22000000=0x22000000+(0∗32)+0∗4

地址0x220001C的别名字映射为0x20000000的bit-band字节的位0:

0x2200001C=0x22000000+(0∗32)+7∗4

4.32MB别名区

Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。当使用非对齐传输时,这些传输将转换为多个对齐传输,但这一过程不为程序员所见。

Cortex-M3处理器除了支持单周期32位乘法操作之外,还支持带符号的和不带符号的除法操作,这些操作使用SDIV和UDIV指令,根据操作数大小的不同在2~12个周期内完成。如果被除数和除数大小接近,那么除法操作可以更快地完成。

1)直接访问别名区

向别名区写入一个字与在bit-band区的目标位执行读—修改—写操作具有相同的作用。写入别名区的字的位0决定了写入bit-band区的目标位的值。将位0为1的值写入别名区表示向bit-band位写入1,将位0为0的值写入别名区表示向bit-band位写入0。别名字的位[31∶1]在bit-band位上不起作用。写入0x01与写入0xFF的效果相同,写入0x00与写入0x0E的效果相同。

读别名区的一个字返回0x01或0x00。0x01表示bit-band区中的目标位置位。0x00表示目标位清零,位[31∶1]将为0。

注意:采用大端格式时,对bit-band别名区的访问必须以字节方式,否则访问值不可预知。

2)直接访问bit-band区

Bit-band区能够使用常规的读和写以及写入该区操作进行访问。

5.时钟和复位

1)Cortex-M3时钟

处理器含三个功能时钟输入。FCLK和HCLK互相同步,FCLK是一个自由振荡的HCLK。FCLK和HCLK应该互相平衡,以保证进入Cortex-M3时的延迟相同,如表4-2所示。

表4-2 Cortex-M 3处理器时钟

处理器集成了供调试和跟踪使用的元件。宏单元可以包含表4-3所示的一些或全部时钟。

表4-3 Cortex-M 3宏单元时钟

SWCLK是串行线时钟,用来对串行调试端口(SW-DP)的SWDIN输入进行计时。

SWCLK与其他所有时钟异步。

TCK是跟踪访问端口(TAP)的时钟,它对JTAG-DP TAP进行计时,TCK也与其他所有时钟异步。

TRACECLKIN是跟踪端口接口单元(TPIU)的参考时钟,它与其他所有时钟异步。

注意:TCK、SWCLK和TRACECLKIN都只是在设备分别含JTAG-DP、SW-DP和TPIU模块时才必须驱动。否则,必须断开(tied off)这些时钟输入。

Cortex-M3还包含一个STCLK输入,这个端口不是时钟,它是SysTick计数器的一个参考输入,其频率必须小于FCLK/2。处理器将STCLK变成与FCLK内部同步。

2)Cortex-M3复位

Cortex-M3处理器含三个复位输入,如表4-4所示。

表4-4 复位输入

3)Cortex-M3复位方式

通过处理器设计中出现的复位信号,用户可以单独对设计中的不同元件进行复位。这些复位信号和它们的组合形式及可能的应用如表4-5所示。

表4-5 复位方式

(1)上电复位。

供宏单元使用的复位信号如图4-6所示。

图4-6 供宏单元使用的复位信号

在第一次给系统加电时,必须对处理器上电或冷复位。上电复位时,复位信号PORE-SETn的下降沿不必与HCLK同步。因为PORESETn在处理器内已经被同步了,所以不必再使它同步。上电复位的应用情况如图4-7所示。内部复位同步如图4-8所示。为了保证正确的复位,建议复位信号至少保持三个HCLK周期有效。

图4-7 上电复位的应用情况

图4-8 内部复位同步

(2)系统复位。

系统复位或热复位对宏单元中的大部分元件进行初始化,NVIC调试逻辑、Flash修补与断点(FPB)、数据观察点与触发(DWT)以及仪表跟踪宏单元(ITM)除外。系统复位主要用来复位已经工作一段时间的系统,如看门狗复位。

由于SYSRESETn信号在处理器内已经被同步,所以不必使之再同步。如图4-8所示,显示了复位的同步情况。

Cortex-M3输出一个SYSRESETREQ信号,该信号在“应用中断与复位控制寄存器”的SYSRESETREQ位置位时有效。用户可以使用该信号,如将它用作看门狗定时器的输入,如图4-6所示。

(3)其他几种复位。

JTAG-DP复位:nTRST复位对JTAG-DP控制器的状态初始化。nTRST复位通常被RealViewTM ICE模块用作调试器与系统的热插拔连接。nTRST可以在不影响处理器正常工作的情况下对JTAG-DP控制器进行初始化。由于nTRST在处理器内已经被同步了,所以不必使之再同步。

SW-DP复位:SW-DP是通过SWRSTn来复位的,该复位必须与SWCLK同步。

正常工作:在正常工作期间,不产生处理器复位和上电复位。如果没有使用JTAG-DP端口,nTRST的值就变得无关紧要了。

5.嵌套向量中断控制器(NVIC)

可配置程度较高的NVIC是Cortex-M3处理器中一个重要组成部分,能够为处理器提供出色的中断处理能力。进行NVIC的标准实现过程中,它提供一个非屏蔽中断(NMI)和32个通用物理中断,这些中断带有8级的抢占优先权。NVIC可以通过简单的综合选择配置为1~240个物理中断中的任何一个,并带有多达256个优先级

Cortex-M3处理器使用一个可以重复定位的向量表,表中包含了将要执行的函数的地址,可供具体的中断处理器使用。中断被接受之后,处理器通过指令总线接口从向量表中获取地址。向量表复位时指向零,编程控制寄存器可以使向量表重新定位。

为了减少门计数并提高系统的灵活性,Cortex-M3已从ARM7处理器的分组映像寄存器异常模型升级到了基于堆栈的异常模型。当异常发生时,编程计数器、编程状态寄存器、链接寄存器和R0~R3、R12等通用寄存器将被压进堆栈。在数据总线对寄存器压栈的同时,指令总线从向量表中识别出异常向量,并获取异常代码的第一条指令。一旦压栈和取指完成,中断服务程序或故障处理程序就开始执行,随后寄存器自动恢复,中断了的程序也因此恢复正常的执行。由于可以在硬件中处理堆栈操作,Cortex-M3处理器免去了在传统的C语言中断服务程序中为了完成堆栈处理所要编写的汇编程序包,这使应用程序的开发变得更加简单。

NVIC支持中断嵌套(压栈),允许通过提高中断的优先级对中断进行提前处理。它还支持中断的动态优先权重置。优先权级别可以在运行期间通过软件进行修改。正在处理的中断会防止被进一步激活,直到中断服务程序完成,所以在改变它们的优先级的同时,也避免了意外重新进入中断的风险。

在背对背中断情况中,传统的系统将重复状态保存和状态恢复的过程两次,导致了延迟的增加。Cortex-M3处理器在NVIC硬件中使用末尾联锁(tail chaining)技术简化了激活的和未决的中断之间的移动。末尾联锁技术把通常需要用30个时钟周期才能完成的连续的堆栈弹出和压入操作替换为6个周期就能完成的指令取指,实现了延迟的降低。处理器状态在进入中断时自动保存,在退出中断时自动恢复,比软件执行用时更少,大大提高了频率为100 MHz的子系统的性能,如图4-9所示。

图4-9 NVIC中的末尾联锁技术

NVIC还采用了支持集成睡眠模式的Cortex-M3处理器的电源管理方案。立即睡眠模式(Sleep Now mode)被等待中断(WFI)或等待事件(WFE)指令调用,即可以使内核立即进入低功耗模式,异常被挂起。退出时睡眠(Sleep OnExit)模式在系统退出最低优先级的中断服务程序时使其进入低功耗模式,内核保持睡眠状态直到遇上另一个异常。由于只有一个中断可以退出该模式,所以系统状态不会被恢复。系统控制寄存器中的SLEEPDEEP位,如果被置位,那么该位可以用来通过时钟门控制内核以及其他系统部件,以获得最理想的节电方案。

NVIC还集成了一个递减计数的24位系统嘀嗒定时器,可定时产生中断,提供理想的时钟来驱动实时操作系统或其他预定的任务。

6.内存保护单元(MPU)

MPU是Cortex-M3处理器中一个可选的部件,它通过保护用户应用程序中操作系统所用的重要数据,分离处理任务(禁止访问各自的数据),禁止访问内存区域,允许将内存区域定义为只读,以及对有可能破坏系统的未知的内存访问进行检测等手段来改善嵌入式系统的可靠性

MPU使应用程序可以拆分为多个进程。每个进程不仅有指定的内存(代码、数据、栈和堆)和设备,而且还可以访问共享的内存和设备。MPU还会增强用户和特权访问规则。这包括以正确的优先级别执行代码以及通过享有特权的代码和用户代码加强对内存与设备使用权的控制。

MPU将内存分成不同的区域,并通过防止无授权的访问对内存实施保护。MPU支持多达8个区域,每个区域又可以分为8个子区域。所支持的区域大小从32字节开始,以2为倍数递增,最大可达到4 GB可寻址空间。每个区域都对应一个区域号码(从0开始索引),用于对区域进行寻址。另外,也可以为享有特权的访问定义一个默认的背景内存映射。对未在MPU区域中定义的或在区域设置中被禁止的内存位置进行访问,将会导致内存管理故障(Memory Management Fault)异常的产生。

区域的保护是根据规则来执行的,这些规则以处理的类型(读、写或执行)和执行访问的代码优先级为基础进行制定。每个区域都包含一组能够影响允许的访问类型的位,以及影响允许的总线操作类型的位。MPU还支持重叠的区域(覆盖地址相同的区域)。由于区域大小是2的倍数,所以重叠意味着一个区域有可能完全包含在另一个区域里面。因此,有可能出现多个区域包含在单个区域中以及嵌套重叠的情况。当寻址重叠区域中的位置时,返回的将是拥有最高区域号码的区域。

7.调试和跟踪

对Cortex-M3处理器系统的调试访问是通过调试访问端口(Debug AccessPort)来实现的,可以是串行线调试端口(SW-DP)[构成一个两脚(时钟和数据)接口]或串行线JTAG调试端口(SWJ-DP)(使用JTAG或SW协议)。SWJ-DP在上电复位时默认为JTAG模式,并且可以通过外部调试硬件所提供的控制序列进行协议的切换。

调试操作可以通过断点、观察点、出错条件或外部调试请求等各种事件进行触发。当调试事件发生时,Cortex-M3处理器可以进入挂起模式或者调试监控模式。在挂起模式期间,处理器将完全停止程序的执行,挂起模式支持单步操作。中断可以暂停,也可在单步运行期间进行调用,如果对其屏蔽,外部中断将在逐步运行期间被忽略。在调试监控模式中,处理器通过执行异常处理程序来完成各种调试任务,同时允许享有更高优先权的异常发生,该模式同样支持单步操作。

Flash块和断点(FPB)单元执行6个程序断点和2个常量数据取指断点,或者执行块操作指令或位于代码内存空间和系统内存空间之间的常量数据。该单元包含6个指令比较器,用于匹配代码空间的指令取指。通过向处理器返回一个断点指令,每个比较器都可以把代码重新映射到系统空间的某个区域或执行一个硬件断点。这个单元还包含两个常量比较器,用于匹配从代码空间加载的常量以及将代码重新映射到系统空间的某一个区域,如图4-10所示。

图4-10 Cortex-M3跟踪系统

Cortex-M3处理器采用带DWT和ITM(仪器跟踪宏单元)的数据跟踪技术。DWT提供指令执行统计信息,并可产生观察点事件来调用调试或触发指定系统事件上的ETM。ITM是由应用程序驱动的跟踪源,支持跟踪OS和应用程序事件的printf类型调试。它接收来自DWT的硬件跟踪数据包以及来自处理器内核的软件跟踪激励,并使用时间戳来发送诊断系统信息。跟踪端口接口单元(Trace Port Interface Unit-TPIU)接收来自ETM和ITM的跟踪信息,然后将其合并、格式化并通过串行线浏览器(SerialWire Viewer-SWV)发送到外部跟踪分析器单元。通过单管脚导出数据流,SWV支持简单和具有成本效益的系统事件分析。曼彻斯特编码和UART都是SWV支持的格式。

8.总线矩阵和接口

Cortex-M3处理器总线矩阵把处理器和调试接口连接到外部总线;也就是把基于32位AMBA©AHB-Lite的ICode、DCode和系统接口连接到基于32位AMBA APBTM的专用外设总线(Private Peripheral Bus-PPB)。总线矩阵也采用非对齐数据访问方式以及位段技术。

32位ICode接口用于从代码空间获取指令,只有CM3Core可以对其访问。所有取指的宽度都是一个字,每个字的取指数目取决于所执行代码的类型及其在内存中的对齐方式。32位DCode接口用于访问来自代码内存空间中的数据,CM3Core和DAP都可以对其访问。32位系统接口可获取和访问系统内存空间中的指令与数据,与Dcode总线相似,可以被CM3Core和DAP访问。PPB可以访问Cortex-M3处理器系统外部的部件。

总结:

Cortex-M3处理器是首款基于ARMv7-M架构的ARM处理器。中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率(1.25 DMIPS/MHz)。Thumb-2指令集结合非对齐数据存储和原子位处理等特性,以8位、16位设备所需的内存空间就实现了32位性能。

凭借灵活的集成硬件配置,快速的系统调试和简易的软件编程,使基于Cortex-M3处理器的设计得以更快地投入市场。为了在中断较集中的汽车应用中实现可靠的操作,集成的嵌套向量中断控制器(Nested Vectored Interrupt Controller,NVIC)通过末尾联锁(tailchaining)技术提供了确定的低延迟中断处理,并可以设置带有多达240个中断。对于工业控制应用,可选内存保护单元(MPU)通过特权访问模式和分离应用中的处理进程来实现安全操作。Flash补丁和断点(Flash Patch and Breakpoint Unit)单元,数据观察点和跟踪(Data Watch point and Trace,DWT)单元,仪器跟踪宏单元(Instrumentation Trace Macro cell,ITM)和可选嵌入式跟踪宏单元(Embedded Trace Macrocell,ETMTM)为深度嵌入式器件提供了低成本的调试和跟踪技术。扩展时钟门控技术和集成睡眠模式使低功耗的无线设计成为可能。

Cortex-M3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3处理器必将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案

9.电源管理

处理器广泛地利用门时钟来禁能那些未用的功能和未用功能块的输入,因此只有正在有效使用中的逻辑才会消耗动态功率。ARMv7-M架构支持为减少功耗而让Cortex-M3和系统时钟停止运行的系统睡眠模式。

对系统控制寄存器进行写操作可以控制Cortex-M3系统功耗的状态,表4-6所示为支持的睡眠模式。

表4-6 支持的睡眠模式

处理器导出以下信号以指示处理器进入睡眠的具体时间。

SLEEPING:该信号在立即睡眠或“退出时睡眠”模式下有效,表示处理器时钟可以停止运行。在接收到一个新的中断后,NVIC会使该信号变为无效,使内核退出睡眠。

SLEEPDEEP:当系统控制寄存器的SLEEPDEEP位置位时,该信号在立即睡眠或“退出时睡眠”模式下有效。该信号被传送给时钟管理器,并可以用来门控处理器和包含锁相环(PLL)的系统元件以节省功耗。在接收到新的中断时,嵌套向量中断控制器(NVIC)将SLEEPDEEP信号变为无效,并在时钟管理器显示时钟稳定时让内核退出睡眠。

1.SLEEPING

例如,如何在低功耗状态利用SLEEPING来门控处理器的HCLK时钟以减少功耗。如有必要,还可以使用SLEEPING来门控其他系统元件,如图4-11所示。

图4-11 SLEEPING功耗控制实例

为了探测中断,处理器必须一直接收自由振荡的FCLK。FCLK用于对探测中断的NVIC中的少量逻辑电路和DWT与ITM模块计时,这些模块被使能相应功能后可以在睡眠期间产生跟踪包。如果“调试异常与监控寄存器”的TRCENA位使能,那些模块的功耗将会降低。在SLEEPING信号有效期间可以降低FCLK频率。

2.SLEEPDEEP

例如,如何在低功耗状态利用SLEEPDEEP停止时钟控制器以进一步减少功耗,退出低功耗状态时,LOCK信号指示PLL稳定,并且此时使能Cortex-M3时钟是安全的,这可以保证处理器不会重启直至时钟稳定。为了检测中断,处理器在低功耗状态下必须接收自由振荡的FCLK。在SLEEPDEEP有效期间可以降低FCLK频率,如图4-12所示。

图4-12 SLEEPDEEP功耗控制实例