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.

[参考译文] power_sleep 模式 d674x (OmapL138)

Guru**** 2558250 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615063/power_sleep-mode-d674x-omapl138

Thread 中讨论的其他器件:SYSBIOSOMAPL138

大家好、我想使用 Power_sleep 模式和通过 UART Rx 中断唤醒。
我已获得函数 Power_slepDSP (...) 然后尝试执行

REG (RTC_KICK0R_REG)= KICK0_UNLOCK;
REG (RTC_KICK1R_REG)= KICK1_UNLOCK;

uint32_t * p =(uint32_t *) 0x01810000、currMEGPD = 0;
currMEGPD =* p;
= 1<*
。

power_sleepDSP (Power_sleep、0、0); 

 器件降低了功耗、但无法将其唤醒(从其他器件向 UART 发送数据)。

 /*。cmd 文件*/

SECTIONS
{
.text:_c_int00 > 0xc3100000
.text:load > IRAM
.bss :加载> IRAM
//.far:load > IRAM
vecs:load > IRAM
} 

如果我取消注释.far 段、则器件未睡眠。 (power_sleepDSP (...) 返回 ti_sysbios_family_c674_Power_sok)。

关于 spufk5a (9.2.5)步骤2:
如何启用一个中断和禁用其他中断? 现在我只使用 UART 中断(num 69)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将此内容转发给 TI-RTOS 专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定、我理解您在这里的设置。 您使用的是支持本文所述电源模块的 SYSBIOS 版本:还是说您从 SYSBIOS 中提取了电源模块、并尝试将其与您的 BareMetal 代码一起使用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哦、我没有 告诉过。 我正在使用具有活动电源模块的 SYSBIOS 6.42.3.35。

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

    使用以下代码的睡眠模式(超级模块断电):

    /**在配置中断之前在 main 中执行*/
    void EnableSleep Mode()
    {
    REG (RTC_KICK0R_REG)= KICK0_UNLOCK;
    reg (RTC_KICK1R_REG)= KICK1_UNLOCK;
    
    uint32_t * p =(uint32_t *) REG_PDCCMD、currMEGPD = 0;
    currMEGPD =* p;
    currMEGPD |= 1<<16;
    * p = currMEGPD;
    
    REG (RTC_KICK0R_REG)= 0x00000000;
    REG (RTC_KICK1R_REG)= 0x00000000;
    }
    
    /**进入睡眠模式*/
    void DSP_CPU_IDLE ()
    {
    Clock_tickStop();
    asm (" idle");
    }//void
    
    
    DSP_WAKEUP ()
    {
    Clock_tickStart();
    } 

    但在切换到休眠模式后 、功耗可降低200mW。 如果我使用 Power_sleepDSP (Power_sleep、0、0)、功耗将降低400mW、但无法唤醒!

    我将尝试从 ARM 上关闭 Megamodule 时钟。(参考手册10.7.4.1和10.7.4.2)

    /**在 ARM 中执行*/
    void MegaModClockOff ()
    {
    int swi_key = Swi_disable();
    volatile UINT32_t *p =&(psc0Regs_->MDCTL[15];
    Clock_tickStop ();
    
    SysCfgRegisterUnlock();
    // a
    UINT32_t RegVal =&<psc2>mc0Val =/current<c1<c2<c1<cps>cps<cps<c1>cps<cps<cy=>cps<cps<cy=</<cps<cps<cps<cps<cps<cps<cps<cy=>0+
    0+ 0vrgu.1<cps<cps<cps<cps<cps<cps<cps<cy=</
    
    
    
    
    
    
    // d
    while ((psc0Regs_->mdstat[15]& 0x1F)!= 2);
    
    Clock_tickStart();
    Swi_restore (swi_key);
    
    SysCfgRegersLock();
    }/**
    
    在 ARM 中执行*/
    void MegaRegModClockVOn()
    {SysCfgRegersUnlock()
    ;SysCfgRegVal ()=015*=>GP2</<PM3|currcstat<cstat<|/<cstat<1
    
    ;
    
    /<cps>cps<1;/<cps<cstat<1 |/<cps<cps<1
    
    
    ;/<cps>cps<cps<1;</e<cps>cps<cps<cps<cps<cps<1;</<cps<cps>cps<cps>cps<|/<cps<cps<cps<cps<1
    
    
    
    psc0Regs__PTCMD = currVal;
    // 4
    while (psc0Regs__>PTSTAT & 2);
    // 5
    while ((psc0Regs__>mdstat[15]& 0x1F)!=3);
    SysCfgRegisterLock();
    }/**
    
    DSP Side */
    
    hpdt(*0x000Updm_id)
    
    
    
    ;*IDP= 0x555t_IDes(*0x000SD_IDLE =);
    
    
    SysCfgRegisterLock();
    } 

    它可以正常工作、但也节省了仅200mW 的功耗。

    我预计节省400mW (OmapL138 Power 电子表格)