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.

[参考译文] RTOS/MSP-EXP430FR5994:TI-RTOS配置可降低TA0的速度

Guru**** 2589265 points
Other Parts Discussed in Thread: ENERGYTRACE, MSP-EXP430FR5994, MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/617475/rtos-msp-exp430fr5994-ti-rtos-configuration-to-slow-down-ta0

部件号:MSP-EXP430FR5994
主题中讨论的其他部件:ENERGYTRACEMSP430WAREMSP430FR5994

工具/软件:TI-RTOS

我一直在使用Code Composer Studio版本7.2 下的简单TI-RTOS示例项目来执行一些低功耗模式测试。  我已断开LED0跳线的连接,并在LPM3中将TI-RTOS配置设置为动态空闲和空闲。  EnergyTrace告诉我,主板在LPM3中消耗了174 uW的功率(52.7 uA,3.3V)。  我知道还有一个演示没有使用TI-RTOS,而TI-RTOS在LPM3中的功耗要低得多。  我从演示中复制了时钟设置,如下所示:

PJSEL0 = BIT4 | BIT5; //用于XT1

//时钟系统设置
CSCTL0_H = CSCKEY_H; //解锁CS寄存器
CSCTL1 = DCOFSEL_0; //将DCO设置为1MHz
CSCTL2 =拉美经济体系_ LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1;//设置所有分隔线
CSCTL4 &=~LFxTOFF;

//配置输出LED引脚
P1DIR || BIT0;

//禁用GPIO开机默认高阻抗模式以激活
//以前配置的端口设置。 振荡器现在应启动...
PM5CTL0 &=~LOCKLPM2;

执行{
CSCTL5 &=~LFxTOFFG; //清除XT1故障标志
SFRIFG1 &=~OFIFG;
} 同时(SFRIFG1和OFIFG); //测试振荡器故障标志 


进行此更改后,功耗在LPM3中降至8.9 UW (3.3V时为2.7uA)。  我相信TA0在默认情况下以非常高的时钟速率运行,并且在低功耗模式下消耗大量的电源。  是否有TI-BIOS配置选项来降低TA0时钟的速度?  我尝试将Clock.tickPeriod设置为10万,但这似乎对功耗没有影响。

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

    您好Bryan:

    感谢您的帖子。 您指的是哪个TI-RTOS示例? 我在CCS中发现了几个简单的问题。

    同时,我还提供了一些可能有帮助的链接和线程。

    此致,

    詹姆斯

    MSP客户应用程序

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

    James,


    我使用“文件”->“新建”->“CCS项目”创建了一个新项目,并在MSP430FR5994的TI-RTOS示例下选择了“空(最小)项目”。  这是以高时钟速率运行的TA0开始的项目。  在MSP430Ware下的FRAM实用程序示例项目下,我能够在低功耗模式下获得更好性能的项目是“cptl_ext2_rtc_lpm35_MSP-exp430FR5994”。

    到目前为止,在“空(最小)项目”的测试中,如果我为动态tick模式设置TI-RTOS,我设置Clock.tickPeriod =10万,那么我确实看到系统不会经常进入低功耗模式。  但是,ACLK设置为8 MHz,TA0设置为/1作为时钟分频器。  我不需要8 MHz参考时钟来生成10 Hz时钟嘀嗒信号。  我也尝试过设置Boot.configureDCO = false和Boot.UseLFXT = true,但没有额外的节省。  是否有TI-RTOS配置设置来为TA0设置较慢的时钟,或者我是否应该像以前那样手动将TA0调整为较慢的速度?

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

    通过一些测试,我发现XDC中的BIOS CPU频率设置。 在我的项目的XDC配置中,我添加了以下行:

    bios.cpufreq.hi = 0;
    bios.cpufreq.lo = 100万;

    在BIOS部分下。 使用该设置时钟寄存器的设置如下:
    CSCTL1 = 0x000C (DCO频率设置为8 MHz)
    CSCTL2 = 0x0033 (ACLK源为LFXT,SMCLK和MCLK源为DCO)
    CSCTL3 = 0x0033 (ACLK分禾器为/1,SMCLK和MCLK分禾器为/8)

    这会降低LPM3中的功耗,但不会像我手动将DCO设置为1 MHz时那样大。 此外,使用这些设置Task_sleep(),呼叫的关闭系数为8。 换言之,我现在需要呼叫Task_Sleep (125),而不是呼叫Task_Sleep (1000),以使睡眠时间与以前相同。

    XDC配置中是否缺少其他设置来关闭CPU频率(包括DCO)并按Clock.tickPeriod所述将时钟保持在时间上?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Brian:

    如果您要为时钟模块的嘀嗒信号源使用自定义配置的计时器,请使用以下配置示例作为指南:
    VAR Clock = xdc.useModule('ti.sysbios.knl.Clock');
    
    //告诉时钟模块您提供定期中断
    Clock.tickSource = Clock.tickSource_user;
    
    //此示例使用ti.sysbs.timers.dmtimer.timer模块
    var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
    
    //如果需要,将计时器3频率从默认值更改为24 MHz
    Timer.intFreqs[3]={ hi:0,lo:24Sys0万;
    
    //创建dmtimer config参数对象
    var timerParams = new Timer.Params();
    
    //确保将周期设置为1000 us (1ms)
    timerParams.period = 1000;
    
    //此处自定义dmtimer config参数...
    timerParams.twer.ovf_WUP_ENA = 1;
    
    //创建计时器。
    //此示例使用计时器id 3。
    //提供您自己的计时器中断处理程序功能。
    timer.create (3,'&myTimerTick',timerParams); 

    在您的'C'代码中,添加您的计时器中断处理程序,并让它调用Clock_tick(),它将执行所有时钟模块的tick职责:

    #include <ti/SysBIOS/KNL/Clock.h>
    
    void myTimerTick(UArg arg)
    {
    Clock_tick();
    ...}
    

    此致,

    詹姆斯

    MSP客户应用程序

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

    James,

    不幸的是,dmtimer模块不是我拥有的用于MSP430的TI-RTOS版本(版本2.20 .00.06)。  尝试了几种其他方法后,我确定了按照我所需的方式设置时钟的最简单,最一致的方式是我开始时的方式。  它可以将时钟降低到1MHz并设置为使用RTC的外部晶体。


    Bryan