您好!
我尝试使用 PMM32从 RAM 进入低功耗模式。
通过清零 GCCTL0寄存器中的 FRPWR 位和 FRLPMPWR 位(如果存在)、在进入 LPM2/3/4之前将 FRAM 置于非活动模式。 必须从 RAM 执行此操作、如下所示:
//在 RAM 中定义函数
#pragma CODE_SECTION(enterLpModeFromRAM,".TI.ramfunc")
void enterLpModeFromRAM(unsigned short lowPowerMode)
{
FRCTL0 = FRCTLPW;
GCCTL0 &= ~(FRPWR+FRLPMPWR); //clear FRPWR and FRLPMPWR
FRCTL0_H = 0; //re-lock FRCTL
__bis_SR_register(lowPowerMode);
}
链接器命令文件:
lnk_msp430fr6989.cmd
MEMORY
{
...
RAM_CODE : origin = 0x23E0, length = 0x0020
...
FLASH_RAM_CODE : origin = 0x158A2, length = 0x0020
...
}
SECTIONS
{
...
TI.ramfunc : {} > RAM_CODE
...
/****************************************************************************/
/* CODE AND CONSTANT MEMORY-SEGMENTS */
/****************************************************************************/
.fir: load = FLASH_RAM_CODE, run =RAM_CODE
...
.flash_ram_code : ALIGN(0x02)
{
*.obj(.flash_ram_code)
} > FLASH_RAM_CODE
...
}
placementDefinition.h
placementDefinition.h
#define FLASH_RAM_CODE_BEGIN() EMIT_PRAGMA(SET_DATA_SECTION(".flash_ram_code"))
#define FLASH_RAM_CODE_END() EMIT_PRAGMA(SET_DATA_SECTION())
在所示的变化之后、电流消耗大幅增加。
在自适应之前、电流消耗约为9µA μ A (平均值)、而在变化之后、电流消耗约为24µA μ A (平均值)。
从 RAM 调用此函数的预期情况是否为更高的电流消耗?
谢谢你