This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR6989:从 RAM 调用函数后电流消耗更高

Guru**** 2782485 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008684/msp430fr6989-higher-current-consumption-after-calling-function-from-ram

器件型号:MSP430FR6989

您好!

我尝试使用 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 调用此函数的预期情况是否为更高的电流消耗?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christoph、

    在深入探讨这一点之前、您能告诉我为什么要禁用 FRAM?  这里的总体目的是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试为 PMM32实现指定的权变措施(从 RAM 调用 Go to sleep 函数)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christoph、

    是的、我看到了这种情况。  尝试弄清其中的原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christoph、

    我发现、如果断开调试器、从 RAM 进入 LPM3工作、然后对器件进行下电上电。  否则、如果您尝试在调试模式下对器件进行编程并且器件进行复位、则电流将保持高电平。

    看看循环通电时会发生什么情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christoph、

    我们已经听过您的介绍、现在已经有一段时间了、因此我将假定您能够继续推进您的项目。
    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题已锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dennis、

    很抱歉、我的朋友迟到了反馈。 非常感谢您对我的问题的回答和支持! 问题是 在函数 enterLpModeFromRAM (...)定义之前 pragma 的声明错误。 我修复了这个问题、电流消耗现在处于预期范围内、所以现在一切都很好。

    谢谢你