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.

[参考译文] CC430F5137:如何手动设置低功耗模式

Guru**** 2391225 points
Other Parts Discussed in Thread: CC430F5137

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/710013/cc430f5137-how-to-manually-set-the-low-power-mode

器件型号:CC430F5137

您好!

发现 cc430f5137的 LPM3模式在运行中的某个时间出现高电流问题。 TI 在已发布的勘误表中建议了一些权变措施、但我认为问题未得到解决。 我想、如果需要、我可以尝试通过设置电源管理模块和统一时钟系统模块或其他模块中的寄存器来手动设置低功耗模式。 您能告诉我这是不可能的、如何实现?

在 CC430用户指南的第99页(SLAU259 - 2009年5月)中、如果 PMMCMD 位5-4设置为10、则可以强制电压稳压器进入低电流模式;如果设置为11、则可以强制电压稳压器进入全性能模式。

谢谢、

德隆元

Seabreeze Internation Corporation

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

    2013年有了新的用户指南修订版、当前版本为 SLAU259E、请查看是否仍在使用旧版本、因为此时可能已经完成了一些更新。

    用户指南的第1.4.1节举例说明了如何进入不同的低功耗模式、例如 LPM3。 尽管它显示在汇编代码中、但它显示了需要为 LPM3操作设置哪些位。 它进一步显示在部分3.2 UCS Operation 和3.2.1中。 适用于低功耗应用的 UCS 模块特性。

    我建议您查看用于功耗优化的2.2.5降低 Vcore、该节说明了如何通过切换到所需 MCLK 频率下允许的最低 Vcore 电平来节省功耗。 通过降低 MCLK 频率(如果您的应用允许)、您甚至可以进一步降低 Vcore。

    器件数据表的图3 (工作模式)、4 (LPM3)和5 (LPM4)显示了这种影响。

    请查看文档、并告诉我这是否解答了您的问题。
    此致、
    Britta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还想知道什么可能导致您在运行期间看到的更高电流:根据您的应用中运行的模块、它们可能从 LPM3中不可用的时钟运行。 然后、时钟请求阻止器件实际进入 LPM3以实现模块的 gurantee 操作。 请检查您的应用是否使用了任何模块(例如定时器或串行通信)、这些模块请求 LPM3中的时钟不可用。

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

    您好!
    根据最新勘误表中的 PMM12、我在软件中添加了一条指令、通过置位 UCSCTL8寄存器中的 SMCLKREQEN 位1来启用 SMCLK 条件请求。 此外、根据 PMM11、我在进入 LPM3之前添加了设置 MCLK 除以2、并在 LPM3之后将其设置回全性能。

    在 LPM3模式期间、看门狗定时器、一个 I/O 引脚中断和一个定时器被启用。

    VLOCK 在 LPM3之前选择、在 LPM3之后返回 XT1CLK。 看门狗定时器使用默认设置、定时器1使用 VLOCLK。 在 LPM3模式下、任一计时器是否会使芯片消耗1mA 电流?


    以下是我的软件的一部分:
    (笑声) (笑声)
     
     

    ///----------------------------------
    /* MCU 时钟系统(UCS)初始化
    *-启动32768Hz 晶体振荡器 XT1
    *-将 FLL 配置为使用 XT 作为参考生成8MHz 时钟
    *- MCLK = SMCLK = 244 * FXT1 = 7.995392MHz (来自 DCO/2)。
    */
    UCSCTL3 |= SELREF_2;//设置 DCO FLL 基准= REFO
    UCSCTL4 = SELA_2+SELS_3+SELM_3;//ACLK = REFO、MCLK = SMCLK=DCOCLK。
    
    UCSCTL6 = XT2OFF & MSK_1 |//XT2关闭
    XT1OFF & MSK_1;// XT1关闭
    
    _ bis_SR_register (SCG0);//禁用 DCO SCTL0的 FLL 拉电流
    = 0x0000;//将 DCO 设置为最低抽头
    // FLL = 1
    = UCSCL2_;UCSCL1+ 1 = USCL1 = USC244_;UC244_= 1 = USCL1 + TRL2_
    //良好的10..20MHz 频率、我们运行 Fdco = 16MHz 并将
    //除以2以确保时钟占空比= 50%、因为
    //我们在 PMMCOREV = 0时以8MHz 最大限制运行。
    _BIC_SR_register (SCG0);//重新启用 FLL 控制
    //最大 FLL 稳定延迟= 1024 * f_MCLK / f_FLLREF
    __DELAY_CYCLLES (250000lu);
    
    bTimeout = 100;//尝试最大100ms
    //等待所有振荡器故障标志在
    (SFRIFG1 & OFIFlu
    
    )周期时清除; //延迟~1ms
    //清除单个标志
    UCSCTL7 &&~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
    SFRIFG1 &=~OFIFG;//清除总和标志
    if (--bTimeout =0)
    {
    //某些错误
    的 software_BOR_CTRCLKEN=UCSMCLK8
    
    
    
    寄存器请求已启用| UCSMCLKCLK8位:0
    
    
    //ACLK = XT1 (默认值)、SMCLK = DCOCLKDIV (默认值)、MCLK = DCOCLKDIV (默认值)
    UCSCTL4 = SELA_XT1CLK + SELESS__DCOCLKDIV + SELM_DCOCLKDIV;
    
    ... (笑声)
    //==================================================================================================================
    //主循环//=================================================================================
    
    while (1)
    {
    CLRWDT_16s
    
    //使 VLO (10kHz)作为 ACLK 的时钟源
    UCSCTL4 = SELA_VLOCLK + cfgSELM_DCOCLKDIV + SELM_DCOCLKDIV;
    
    LED_OFF
    
    IF (STATE!= STATE RX_WOR)
    {
    Strobe (RF_CLKDIV
    
    
    
    );STROLLM0XF0
    
    
    
    
    (RF_CLF0)& STROSE);(RM0XRF_R5_CLFK);RM0XRF_R5_Rf (ST_Rx0_CLFK);ST_CLF0 (ST_Rx_CLF_CLF_CLFK);(ST_CLF_CLF_CLFEMBLEF);(ST_CLFK)(ST_CL_CLFEMBLEF (ST
    //设置16位同步字(16/16)
    WriteSingleReg (MDMCFG2、(rfSettings.mdmcfg2 & 0xf4)| 0x02);
    
    //接收到数据包时应发生什么:
    //RXOFF_MODE 和 TXOFF_MODE in IDLE
    WriteSingleReg (MCSM1、0x30);
    //在 RTCL0停止写入时应发生什么
    情况;rtc0 ~(rtctrWriteSingleReg);rtctrf (0x30)
    //禁用将 RSSI 和 LQI 信息附加到有效载荷
    WriteSingleReg (PKTCTRL1、(rfSettings.pktctrl1 & 0xFB);
    
    WriteSingleReg (PKTLEN、2);//设置数据包长度
    }
    
    T_WOR_EL =72;//4sec
    
    Strobe (RF_SISDTC+WDT1
    )
    
    
    
    ;//设置数据包长度= TWDWDT+WDT1 + WDT1 + WSDTRF+2;/WDWTS+WSDTRF+WTS+1;/WTS+WTS+WTS+WTS+WTS+1;/WDTRF+ TRF+ TRF+ TRF+ TRL = WTS+WTS+WTS+WTS+WTS+ //启用 WDT 中断
    
    //设置 MCLK 除以2
    UCSCTL5 =(UCSCTL5和0xFFF0)| DIVM__2;
    _ bis_SR_register (LPM3_bits + GIE);//输入 LPM3并重新启用中断
    
    
    // CPU 在此休眠!
    _DELAY_CYCLS (800ul);//WAITE/SET
    MCLK 除以1
    UCSCTL5 = UCSCTL5 & 0xFFF0;
    
    
    SFRIE1 &&~WDTIE;//禁用 WDT 中断
    //ACLK = XT1 (默认),SMCLK = DCOCLKDIV (默认),MCLK = DCLKCLKDIV_DCOCLKCLK+
    DCLKCLKDIV_(默认值);MCCLCLKCLKCLKDIV_DCLKCLKCLK+ DCLKCLKDIV_+ DCLKCLKCLKCLKCLKCLK+ DCLKDIV_+
    //delay_cycles (x)在代码中停止并等待 x 个 MCLK 周期
    
    //==========================================================
    //处理挂起的唤醒标志
    //=================================================
    CLRWDT_16
    


    谢谢、
    德隆元
    Seabreeze 国际公司

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

    我已经查看了 PMM11和 PMM12、但它们不应与 LPM3中较高的1mA 电流消耗相关、因为如果出现此问题、它们只应在退出 LPM3时发生。 我了解到在 LPM3模式下(或至少在发送到 LPM3时)会看到功耗增加。

    我仍然假设一些时钟请求会保留 CPU 以实际进入 LPM3。 用户指南第3.2.11节、特别是图3-3和表3-1描述了模块时钟请求覆盖之前设置的 clock off 命令的行为。 因此、当您尝试切换/保持在 LPM3中时、请检查是否出现任何 MCLK 或 SMCLK 请求。
    查看意外时钟是否处于活动状态的一种方法是将不同的时钟输出到适用的引脚上、并查看引脚上是否提供时钟。 这样、您就可以确信这确实会导致问题的发生。 然后、您需要切换特定模块使用的时钟或禁用 LPM3中的模块。

    请告诉我这是否有帮助。
    此致、
    Britta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我检查了测试记录、发现本周记录的高电流为30mA、每次持续3秒、而旧测试记录的1mA 持续到电池寿命结束。

    在意识到软件将 每6小时发送3秒信号后 、我认为在根据最新勘误表添加以下方法后、1mA 高电流问题可能会得到解决。  

    1.根据 CPU18、CPU24、CPU25、CPU27在 IAR 嵌入式工作平台的编译器选项中设置一个标志

    2. 在进入 LPM3之前置位 UCSCTL5中的 MCLK 分频位、并根据 PMM11在唤醒之后复位这些位

    根据 PMM12、启用 UCSCTL8中的 SMCLKREQEN 位

    我将使用更多样本和更长的时间测试更新的软件、以查看是否会出现1mA 问题、并告知您测试结果。

    谢谢、

    德隆元

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

    是的、请告诉我您的测试结果、并指明问题是否仍然存在、或者您的问题是否已得到解决。
    期待您的反馈。

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

    您好!

    在过去的周末、我在一个由2个射频单元组成的小组中测试了代码、这2个射频单元在正常运行中没有常规射频传输、并且在61小时捕获的数据中没有发现单个高电流浪涌。 我认为问题可能已经解决了。

    我将继续监测功耗一段时间、如果再次出现高电流、将测试结果发布在此处。

    谢谢、
    Derong