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.

[参考译文] CCS/MSP432P401R:我想知道除SRAM组0之外的禁用方法。

Guru**** 2584395 points
Other Parts Discussed in Thread: ENERGYTRACE

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/589458/ccs-msp432p401r-i-want-to-know-the-way-to-disable-except-for-sram-bank0

部件号:MSP432P401R
主题中讨论的其他部件:ENERGYTRACEMSP432P401M

工具/软件:Code Composer Studio

您好,

我想知道除SRAMbank0之外的禁用方法。

我使用了这种方法->" sysctl->SRAM_Bankken = sysctl_SRAM_Banken_BNK0_EN;"  

但是,当使用所有SRAM组且仅激活SRAM组0时,消耗的能量没有差异...

  如数据表 所示,两种情况下的能耗必须有明显的差异...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    不能禁用SRAM的Bank0。 此外,请确保在禁用内存库时不会创建内存孔。 这些请求将被忽略。 另请参阅TRM.TRM的4.2 .2.1 部分 。www.ti.com/.../slau356f.pdf

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

    你好,Chris

    我已经了解了数据表,因此我知道在关闭SRAM时要考虑什么。

    我要做的是:

    Bank0 ->开
    银行1,2,3,4,5,6,7 ->关闭

    我使用了这种方法->" sysctl->SRAM_Bankken = sysctl_SRAM_Banken_BNK0_EN;"

    但是,当使用所有SRAM组且仅激活SRAM Bank 0时,消耗的能量没有差异...

    此致,
    Hayeon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Hayeon:
    所述信息在技术参考手册中,该手册与您参考的数据表中有关每个SRAM单元的功耗的信息不同,对于Vcore=0,~100nA;对于Vcore=1,~300nA。

    您能否提供用于测试SRAM功耗的代码? 如果您使用描述的约定" sysctl->SRAM_Bankken = sysctl_SRAM_Banken_BNK0_EN;"并且您指定的是bank 7而不是bank 0,则sysctl_SRAM_Banken_BNK7_EN的定义是:
    #define sysctl_SRAM_Banken_BNK7_EN ((UINT32_t) 0x0.008万) /*!< SRAM Bank 1启用*/

    使用'='运算符将清除所有其它因上一个POST中引用的内存孔而导致的非法内存配置位。

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

    您好Chris,

    我使用了下面的代码..  

    测试了两个案例  的SRAM功耗...

    案例 1: 仅SRAM Bank 0 -> ON  

    案例 2: SRAM Bank 0,1,2,3,4,5,6,7 ->开

    功耗  是使用EnergyTrace+测量的

    #include "msp.h"

    Void 主(void)

    易失 性UINT32_t  I,l;

    WDTCTL = WDTPW | WDTHOLD;/*停止看门狗计时器*/
    //以下代码用于切换WFP 1.0 端口
    P1DIR || BIT0;/*将WFP 1.0 配置为输出*/

    对于(l = 0;l < 40;l++)

    P1OUT ^= BIT0;/*切换WFP 1.0 */

    对于(i=10万; i>0; i--);/*延迟*/

    sysctl->SRAM_Bankken = sysctl_SRAM_Banken_BNK0_EN;  /*案例1 : 仅SRAM Bank0 ->开*/

    //sysctl->SRAM_Banken = sysctl_SRAM_Banken_BNK7_EN;  /*案例2 : SRAM Bank 0,1,2,3,4,5,6,7 ->开*/

    }

    }

    我认为此代码仅表示SRAM Bank 0 -> ON,因为根据MSP432P401R,MSP432P401M SimpleLinkTm混合信号微控制器的“6.4 .2.1 SRAM Bank Enable Configuration”(MSP432P401R,MSP432P401M)(修订版 f)"技术参考手册。

    该应用程序可以优化SRAM的功耗。 为启用此功能,SRAM被划分为8 KB组,可以单独关闭电源。 在有源和低功耗操作模式下,断电的存储组都将保持断电状态,从而在设备在 有源 和基于保留的低功耗模式之间转换时限制任何不必要的浪涌电流。 应用程序还可以在 处理的某个阶段禁用一个(或多个)库 ,并在另一个阶段启用。  

    当禁用某个特定的存储库时,读取到其地址空间返回0h,  丢弃写入。 为了防止内存映射中出现'孔洞',如果启用了特定的内存组,则所有较低的内存组也将被强制到 启用 状态。 这可确保通过 启用 的内存组进行连续的内存映射,而不是允许禁用的内存组出现在启用的内存组之间。 例如:

    •如果设备中有八个气缸组,则值11.1111万和0.0111万可接受。

    •诸如1.0111万之类的值无效,结果库配置自动设置为1.1111万。

    •例如,对于4组SRAM,仅允许值为0001,0011,0111和1111。

     SRAM的Bank 0 始终处于启用状态,无法禁用。 对于所有其它插槽,任何启用或禁用更改都会导致SYS_SRAM_BANKEN寄存器的SRAM_RDY位被设置为0,直到配置更改生效。 在此期间,对SRAM的任何访问都将停止,并且只有在SRAM存储库准备好进行读写操作后才能恢复访问。 这是透明处理的,不需要任何代码干预。 请参阅SRAM组启用或禁用延迟的电气规格中的SRAM特性。

     

    谢谢!  

    Hayeon

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

    感谢您提供代码。  我能够在MSP-EXP432P401R 2.1 12.0001万PAD上加载并运行代码,并且能够通过energyTrace+查看当前的变化。  请注意,所有JTAG连接均已移除,且Launchpad (J101)上仅填充3.3V和GND跳线。

    SRAM All On (全部打开):

    SRAM除组0外均关闭:

    我还包括了LPM4代码示例的修改版本,以帮助删除与MSP432的其他部件相关的电流。  

    e2e.ti.com/.../pcm_5F00_lpm45_5F00_no_5F00_wakeup_5F00_SRAM.c

    这是从资源资源管理器中的示例派生而来的。

    我注意到您的文件中包含"msp.h",而不是 "ti/devices/msp432p4xx/inc/msp.h>。  您使用的硬件/芯片版本是什么?

    谢谢,此致,

    Chris  

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

    你好,Chris

    我使用了MSP-EXP432P401R 2.0。

    感谢您为我提供大量信息。

    我将尝试使用提供的信息再次进行实验。


    如果您有任何疑问,我会再次询问您。

    非常感谢:D

    此致,

    Hayeon

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

    你好,Chris!

    "请注意  ,所有JTAG连接均已移除,且Launchpad (J101)上仅填充3.3V和GND跳线"的含义是否与下图相同?

    这是否不能运行Energytrace?

    所以我连接所有跳线并执行您给我的代码。 如果SRAM已全部打开,我的电量仍然较低。


    我做错了什么?

    谢谢,此致,

    Hayeon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Hayeon,
    我还建议删除UART跳线(RXD和TXD)和LED跳线以确保完整性。 能量跟踪具有不同的功能,在JTAG断开的情况下,您不能使用EnergyTrace++来监视CPU的状态,但您仍然可以测量进入3V3跳线的电流。 您测量的电流是多少?

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

    您好,Chris感谢您的回复。

    正如你们所建议的那样,我再次尝试了实验。 结果显示,启用/禁用气缸组时,能量会有所不同。

    但是,在执行EnergyTrace (设置EnergyTrace的持续时间 )时会出现另一个问题(秒表图标)。

    如您所知,EnergyTrace在整个程序执行过程中测量能量和功率。

    因此,我通常在程序中设置断点(__no_operation();)并将测量持续时间设置为“暂停”。

    但是,在我从MSP432上卸下了大多数跳线后,测量没有停止。 “On halt (暂停时)”不工作。

    是否有任何我没有考虑的问题?

    谢谢你

    Hayeon