ZHCA930B June 2014 – August 2021 MSP430FR2032 , MSP430FR2033 , MSP430FR2110 , MSP430FR2111 , MSP430FR2311 , MSP430FR2433 , MSP430FR2532 , MSP430FR2533 , MSP430FR2632 , MSP430FR2633 , MSP430FR4131 , MSP430FR4132 , MSP430FR4133 , MSP430FR5720 , MSP430FR5721 , MSP430FR5722 , MSP430FR5723 , MSP430FR5724 , MSP430FR5725 , MSP430FR5726 , MSP430FR5727 , MSP430FR5728 , MSP430FR5729 , MSP430FR5730 , MSP430FR5731 , MSP430FR5732 , MSP430FR5733 , MSP430FR5734 , MSP430FR5735 , MSP430FR5736 , MSP430FR5737 , MSP430FR5738 , MSP430FR5739 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5994 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
MSP430 上可实现超低功耗的模式是 LPM3.5 和 LPM4.5 模式,这是因为器件基本处于断电状态,可供使用的功能非常有限。
低功耗模式 (LPMx) | 可用的器件功能 | 唤醒源 |
---|---|---|
LPM3.5 | RTC、32kHz 振荡器 | RTC 和 GPIO 中断 |
LPM4.5 | 无 | GPIO 中断 |
不过,从这些模式唤醒类似于脱离复位状态,需要在进入 LPMx.5 之前将应用上下文存储到非易失性存储器中,并在从 LPMx.5 唤醒器件之后将其恢复。其他微控制器具有类似的功能受限的深度睡眠模式,并可能提供一个“备用 RAM”段,此备用 RAM 会在这些模式期间保持通电状态,以帮助存储应用上下文。这些存储器的每个段通常都是非常小的(几十个字节),因此可以存储的上下文非常有限。另一方面,可以选择用闪存来存储更大量的应用上下文的另一个选项;但这样做会对应用的功耗和实时性能产生重大影响,更何况闪存通常还具有其他局限性,例如擦除和写入寿命有限。与 FRAM 相比,能够做到自动在器件的 FRAM 中存储并保留不超过 FRAM 可用大小的整个应用上下文,例如数据缓冲区、状态变量和各种标志,而且根本不需要存储或恢复数据,也不会对应用的功耗或实时行为产生任何影响。
为了在使用 LPMx.5 的应用中充分利用 FRAM,需要特别注意变量的声明和使用方式。具体来说,对于保留应用上下文(状态变量和标志、结果寄存器、应用特定的校准设置和基线值、中间计算或信号处理结果等等)的所有对象,应将变量声明为永久性变量或不初始化变量,以免在通电之后不得不重新计算或重新获得这些上下文。
作为并非 FRAM 特有的通用惯例,为了尽可能缩短从 LPMx.5 深度睡眠模式恢复之后的应用唤醒时间,还应将初始值不重要的所有变量(比如用作缓冲器的大型数组,它们可能不必被初始化为 0)声明为 no-init,这样有助于在应用启动时节省 C 自动初始化启动例程内的处理器周期,并对应用的启动时间和能耗直接产生积极影响。