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**** 2535750 points
Other Parts Discussed in Thread: CC1310

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

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

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

工具与软件:

int main (空)
{
//初始化板
Board_init();

//初始化任务参数
Task_Params taskParams;

#ifdef One_task_create
Task_Params testTaskParams;
#endif

#ifndef use_default_user_CFG
//对板设置使用自定义用户配置
macUser0Cfg[0]。pAssertFP = macHalAssertHandler;
#endif

#if ((CONFIG_RANGE_EXT_MODE == APIMAC_HIGH_GAIN_MODE)&&
已定义(DeviceFamily_CC13X0)&&!已定义(FREQ_2_4G)
//如果为特定的器件系列和频率启用范围扩展模式,则初始化 PALNA
macUser0Cfg[0]。pSetRE = Board_Palna_;
#endif

//根据 TI-RTOS 惯例初始化与电路板相关的任务,例如 LED
PIN_INIT (BoardGpioInitTable);

#ifdef Feature_BLE_OAD
//如果启用了 FEATURE_BLE_OAD,请检查复位上是否按下左按钮
如果(! PIN_getInputValue (Board_PIN_BUTTON0)
{
OAD_markSwitch();

#endif /* Feature_BLE_OAD */

#if 已定义(POWER_MEAS)
//禁用用于功率测量的外部闪存
Board_shutDownExtFlash();
#endif

#if defined (图元_BLE_OAD)|| defined (图元本机 OAD)
//如果启用了 BLE OAD 或本机 OAD,则初始化 SPI
SPI_INIT();
#endif

#IF 1
//设置输入变量和初始欢迎消息
字符输入;
const char echoPrompt[]="AXM500设备正在启动\r\n";
UART_Handle UART;
#endif

//为 System_printf 启用 UART 输出(..)
uart_init();
uart_params_init (&uartParams);

#ifdef task_command

//配置 UART 参数
uartParams.writeDataMode = UART_DATA_binary;
uartParams.readDataMode = UART_DATA_binary;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = uart_echo_off;
uartParams.baudrate = 115200;

//打开 UART 和处理错误
hUart = UART_open (Board_UART0、&uartParams);
如果(hUart == NULL)
{
system_abort ("打开 UART 时出错");

#else
//配置并初始化 UART 参数
uartParams.readMode = UART_mode_callback;
uartParams.readCallback = Uart_Read 回;
uartParams.writeMode = UART_mode_callback;
uartParams.writeCallback = Uart_Write back;
uartParams.writeDataMode = UART_DATA_binary;
uartParams.readDataMode = UART_DATA_binary;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = uart_echo_off;
uartParams.baudrate = 115200;

UartPrintf_init (UART_open (Board_UART0、&uartParams);
UART_WRITE (hUart、echoPrompt、sizeof (echoPrompt));
#endif

//打印系统输出和版本/版本信息
system_printf ("\r\n");
system_printf("=================================================== \r\n");
System_printf (" AXM500设备正在启动\r\n ");
System_printf ("软件版本:%d.%d \r\n "、VER_MAJOR、VER_PATCH);
System_printf ("发布日期:%s /%s \r\n"、__DATE__、__TIME__);
system_printf("=================================================== \r\n");

#ifdef OSAL_PORT2TIRTOS
//通过将 OSAL 转换为 SYS/BIOS 来初始化 MAC 任务
_macTaskId = macTaskInit (macUser0Cfg);
#endif

/*配置任务。 */
Task_Params_(&taskParams);
taskParams.stack = appTaskStack;
taskParams.STACKSIZE = APP_TASK_STACK_SIZE;
taskParams.priority = APP_task_priority;
Task_structure (&appTask、appTaskFxn、&taskParams、NULL);

#ifdef debug_sw_trace
//配置调试软件跟踪设置
IOCPortConfigureSet (IOID_8、IOC_PORT_RFC_TRC、IOC_STD_OUTPUT)
| IOC_CURRENT_4mA | IOC_SLEW_ENABLE);
#endif /* debug_sw_trace */

#ifdef One_task_create

/*配置任务。 */
Task_Params_(&taskParams);
taskParams.stack = appTasktestStack;
taskParams.STACKSIZE = APP_TASK_STACK_SIZE;
taskParams.priority = APP_task_priority;
Task_structure (&appTasktest、appTasktestFxn、&taskParams、NULL);

#endif

//设置并创建主线程
pthread_t thread;
pthread_attr_t attrs;
结构 sched_param priParam;
内部代表;

pthread_attr_init (&atts);

priparam.sched_priority = 2;
retc = pthread_attr_setschedparam (&atts,&priParam);
retc |= pthread_attr_setdetachstate (&atts、pthread_create_detachstate);
retc |= pthree_attr_setstacksize (&atts、THREADSTACKSIZE);

//即使属性设置失败也继续
如果(retc!= 0)
{
system_printf ("失败线程\r\n:");
while (1)

/*为主应用程序逻辑创建线程*/
retc = pthread_create (&thread、&atts、mainThread、NULL);

/*创建线程失败*/
如果(retc!= 0)
{

system_printf ("创建线程失败\r\n:");
while (1)

//启用中断并启动 SYS/BIOS
BIOS_start();

返回(0);

------------------

感谢您的回复。
当前、当我使用"Power_Sleep (PowerCC26XX_STANDBY)"进入睡眠模式时、将输出0.25mA。 我想有一些器件处于待机模式、所以我正在寻找它们。 当我使用 UART_CLOSE ()函数进入 SLEEP 模式时,当我关闭0.22mA 时 SLEEP 电流的值会下降到 UART。 我想知道我是否可以在主循环中关闭其他东西? 另外、关断 UART 时、cc1310中使用的 UART 引脚也会被下拉、这是我要进入睡眠模式所需执行的设置吗?
我想知道、在进入睡眠模式后使用线程或任务来关闭其他器件是否存在问题?

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

    请提供有关运行的硬件(LP 或定制硬件)以及运行的软件(SDK 版本和示例代码)的信息、以便我们了解您正在执行的操作。

    在您的代码示例中有与2.4GHz 和 BLE 相关的注释(CC1310不支持这些注释)、因此对于您运行的是什么软件我感到困惑。

    我强烈建议您首先通过运行一个您知道会将器件置于待机模式的简单示例(pinStandby (TI.com))来验证正确的待机电流。 您可以在此处添加更多驱动器和功能、以尝试确定额外电流的来源。

    Siri

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

    感谢您的回复。
    我使用的是 Simplink CC13x0 SDK -4.20.02.07。
    我目前正在使用 CC1310的传感器示例进行开发。
    当前我正在编写代码、以在 GPIO 14引脚上存在中断时将数据发送到收集器、当前我已编写代码以将数据发送到收集器、现在我想添加 DeepSleep、以便每当我发送数据时、它都会短暂地退出 DEEPSLEEP 状态、发送数据并返回到 DEEPSLEEP 状态。 因此、在运行主循环中的代码以进入深度睡眠模式之后、我目前正在使用"Power_SHUTDOWN (NULL、0)"、"Power_SLEEP (PowerCC26XX_STANDBY)"、我测量了电流并正在测量0.25mA。 根据 cc1310数据表、待机模式下的电流值约为0.7uA。 我想有一个器件在输入 DEEPSLEEP 命令后通电。 我的问题是:1. 为"Power_SHUTDOWN (NULL、0)"、"Power_SLEEP (PowerCC26XX_STANDBY)"进入 DEEPSLEEP 模式的代码、或者是否有其他命令?
    2.如果上述代码正确输入 DEEPSLEEP 命令,那么通过下拉 UART、I2S、RF 内核等器件的引脚来禁用这些引脚是否正确?
    cc1310数据表显示"活动。 以48 MHz 状态运行 CoreMark"的 MCU 大约需要2.5mA 电流、因此现在我输入了"Power_shutdown (NULL、0)"、"Power_Sleep (PowerCC26XX_STANDBY)"命令、它是否为活动状态?

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

    您在使用什么硬件?

    Siri

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

    我将 cc1310 LAUNCHXL 用作硬件。

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

    您已经发布了有关此主题的阈值、应使用该阈值进行跟进、而不是分配新阈值:

    (36) LAUNCHXL-CC1310:如何使用和维护 cc1310深度睡眠模式? -电源管理论坛-电源管理- TI E2E 支持论坛

    我将关闭该主题、然后您应继续处理您已发布的主题。

    Siri