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.

[参考译文] LAUNCHXL-CC1310:如何降低 cc1310睡眠模式下的电压?

Guru**** 2534260 points
Other Parts Discussed in Thread: LAUNCHXL-CC1310, CC1310

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1398962/launchxl-cc1310-how-to-lower-the-voltage-in-cc1310-sleep-mode

器件型号:LAUNCHXL-CC1310
Thread 中讨论的其他器件: CC1310

工具与软件:

我将使用 LAUNCHXL-CC1310进行开发。
我目前在进入睡眠模式时测量的电流为70uA、但 cc1310手册显示进入睡眠模式时的电流为0.7uA。 那么、为了降低这里的电流值、我需要做什么呢? 在1.CC1310中是否有任何默认设置为高电平的引脚值? 如果我把它们更改为低电平、会更低一点吗?
2.您能告诉我哪些引脚需要视为低电平吗?
3.我现在已经在 main.c 文件中编写了类似这样的电源管理策略代码来进入睡眠模式、但当我通过 CCS 调试单步执行该代码时、当执行 PRCMSleep ();函数时、"CPUWFI"部分中"PowerCC26XX_tirtos.c"文件中的 PowerCC26XX_StandbyPolicy 函数中会出现错误、如图中所示、什么是此错误? 根据我的发现、流向 CPU 的电流似乎会切断、对吗? 由于此误差、CPU 现在处于通电状态、因此无法完全进入睡眠模式、这就是我测量到70uA 的原因。

main.c

POWER_releaseConstraint (PowerCC26XX_SB_disallow);// standy 전환 제약 해제-> STANDBY 모드 진입
POWER_setConstraint (PowerCC26XX_RETAIN_VIMS_CACHE_IN_STANDBY);// VISM 메모리 데이터 저장 유지
PowerCC26XX_standbyPolicy ();//待机模式 에서의 전원 관리 μ A

PowerCC26XX_tirtos.c

void PowerCC26XX_standbyPolicy (void)

bool justIdle = true;
uint32_t 约束;
uint32_t 节拍;
uint32_t time;

/*禁用中断*/
CPUcpsid();

/*检查运行条件、最佳选择 DCDC 与 GLDO */
SysCtrl_DCDC_VoltageConditionalControl();

/*查询声明的约束*/
约束= Power_getConstraintMask ();

/*快速检查是否仅允许 WFI;如果是、则立即执行*/
if ((约束&
((1 << PowerCC26XX_disallow_standby)|(1 << PowerCC26XX_disallow_idle)))=
((1 << PowerCC26XX_disallow_standby)|(1 << PowerCC26XX_disallow_idle))){

PRCMSleep();

}
/*
*检查是否允许自动激活任何睡眠模式
*/
否则{

/*检查是否允许我们进入待机状态*/
如果((约束条件和(1 << PowerCC26XX_disallow_standby))= 0){

ticks = Clock_getTicksUntilInterrupt ();

/*将刻度转换为 usec */
时间=节拍* Clock_tickPeriod;

如果(Time > Power_getTransitionLatency (PowerCC26XX_STANDBY、Power_Total)){
/*安排唤醒事件*/
tick—= PowerCC26XX_WAKEDELAYSTANDBY / Clock_tickPeriod;

if (PowerCC26XX_CONFIG.enableMaxStandbyDuration){
/*如果请求、安排提前唤醒。 */
if (tick > PowerCC26XX_CONFIG.maxStandbyDuration){
节拍= PowerCC26XX_CONFIG.maxStandbyDuration;
}
}

CLOCK_setTimeout (Clock_Handle (((Clock_Struct *)&PowerCC26XX_MODULE.clockObj)、tick);
CLOCK_START (Clock_Handle ((Clock_Struct *)&PowerCC26XX_MODULE.clockObj));

/*进入待机模式*/
POWER_SLEEP (PowerCC26XX_STANDBY);
CLOCK_STOP (Clock_Handle ((Clock_Struct *)&PowerCC26XX_MODULE.clockObj));
justIdle = false;
}
}

/*空闲(如果允许)*/
if (JustIdle){


如果((约束条件和(1 << PowerCC26XX_disallow_idle))= 0){
uint32_t modeVIMS;
/* 1. 获取当前 VIMS 模式*/
执行{
modeVIMS = VIMSModeGet (VIMS_BASE);
} while (modeVIMS == VIMS_MODE_CHANGE);

/* 2. 将闪存配置为空闲或非空闲状态下保持开启状态、如果将 VIMS 配置为 GPRAM */、则保持开启状态
如果((约束条件和(1 << PowerCC26XX_NEED_FLASH_IN_IDLE))||
(modeVIMS == VIMS_MODE_DISABLED)){
HWREG (PRCM_BASE + PRCM_O_PDCTL1VIMS)|= PRCM_PDCTL1VIMS_ON;
}
否则{
HWREG (PRCM_BASE + PRCM_O_PDCTL1VIMS)并且=~PRCM_PDCTL1VIMS_ON;
}

/* 3. 在 IDLE 中*/、始终保持高速缓存保留打开
PRCMCacheRetentionEnable();
/* 4. 关闭 CPU 电源域*/
PRCMPowerDomainOff (PRCM_DOMAIN_CPU);
/* 5. 确保所有可能的未完成 AON 写入完成*/
SysCtrlAonSync();

/* 6. 输入 IDLE */
PRCMDeepSleep ();

/* 7. 确保唤醒后 MCU 和 AON 同步*/
SysCtrlAonUpdate();
}
否则{
PRCMSleep();
}
}
}


CPUcpsie();
}

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

    使用 SDK 中的代码示例时、您无需改动即可在进入待机模式的示例的 LP 上实现待机电流。

    您可以从 SimpleLink CC13x0 SDK (4.20.02.07)运行 rfPacketTx (TI.com)或 pinStandby (TI.com)、并测量其中的 SB 电流。

    请记住、不能使用调试器进入待机模式、因为调试器会阻止器件进入待机模式。

    通过上面的示例、您将在待机模式下测得的电流小于1uA。

    Siri