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/CC1350STK:CC1310无法进入低功耗模式

Guru**** 2538950 points
Other Parts Discussed in Thread: CC1350, CC1350STK, CC1310, UNIFLASH, OPT3001

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/720909/rtos-cc1350stk-cc1310-cannot-get-to-low-power-mode

器件型号:CC1350STK
主题中讨论的其他器件:CC1350CC1310UNIFLASHOPT3001

工具/软件:TI-RTOS

我正在使用一个基于 sensortag 的定制板、其中移除了大量传感器、MPU9250移至可通过 sensorcontroller 访问的引脚。 MPU 电源由 GPIO 线驱动、如 sensortag 中的 GPIO 线。 我从未设法使 sensortag 进入真正的低功耗模式、因此这是这场斗争的延续。

我的应用有2个主要任务、一个是处理无线电设备、另一个是触发传感器控制器并唤醒无线电任务。 它非常简单明了。 两个任务都被 Event_pend()阻止了大约60秒、随后是几秒钟的 sensorcontroller 和一次传输。

当两个任务都在 Event_pend ()上被阻止~60s 时、我假设器件应该进入低功耗模式、但它的电流消耗为~10mA。 从功率的角度来看、Event_pend ()是否与 SLEEP 和信标挂起相同?

螺钉就是当我读取传感器控制器时、功耗降至~3mA。 当我不执行任何操作时、功耗很高、当我实际执行某个操作时、功耗会下降?

我的传感器控制器代码使用相同的事件循环唤醒并每秒通知一次主任务。 我正在使用一个电表进行电源跟踪、因此我可能缺少一些高频功率尖峰。 我还意识到我需要断开调试器的连接。

我还尝试在 SCS 中执行传感器控制器代码、功耗与之类似。 传感器控制器未运行时功耗高、传感器控制器正在执行时功耗低(或符合我的预期、给定 MPU 功耗)。

我将清除 SCS 终端代码中的 MPU 电源引脚。

我正在使用 EasyLink、从我所读出的内容中、无线电应在未激活时进入低功耗模式(正确?)

我没有外部闪存、但调用了 CC1350_LAUNCHXL_shutDownExtFlash()。 我还应该说、我将代码以 rfWsnNodeExtFlashOadClient 示例为基础。

power_init()也被调用。 CC1350_LAUNCHXL.c 中定义了 PowerCC26XX_CONFIG、但我看不到它实际用于何处。 这是问题吗?

如果有任何想法或提示、我们将不胜感激。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您在自定义硬件上运行自定义代码时、几乎不可能就问题所在向您提供任何一般建议。
    在过去的一段时间里、当您使用我们的硬件和软件时、我为您提供了以下支持:

    e2e.ti.com/.../659420

    您是否说过、即使您使用的软件与我在同一硬件上使用的软件相同、您也无法获得正确的电流消耗?

    遗憾的是、我不知道问题可能是什么、但我强烈建议您以"较小"的步骤进行开发、这样您就不会在我们不知道问题是与硬件还是软件相关的情况下最终遇到:

    1) 1)从 TI 针对 CC1350STK 的最简单示例之一开始、我们知道这一示例将使芯片进入待机状态、并确保您能够在此阶段接收到正确的电流消耗。 此时、您知道硬件正常、软件正常、测量设置正常

    2) 2)通过更改电路板文件等将简单示例移植到定制硬件、并验证您仍在测量正确的电流。 在此阶段、您将能够确认您的硬件是否正常。

    3) 3)当您知道硬件正常且测量设置正常时、可以继续代码开发。 如果您在此阶段无法进入待机状态、我们知道问题与软件有关。

    很抱歉,我现在再也没有什么帮助了。

    BR

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

    您好、Siri、

    感谢您在另一个主题上的帮助。 遗憾 的是、我掉了球、让感应器进入低功耗模式、并将更多精力放在定制硬件上(希望这样可以消除感应器设计中的一些阴道)。 该主题可能是继续讨论的理想场所、但我猜我等待的时间太长、现在已经锁定了。 为了简化此线程、让我们从库存 sensortag1350开始工作、并继续处理另一个问题。

    我将 pinStandby_CC1350STK_tirtos_ccs 示例从2.20.00.38开始、将其加载到 sensortag1350中、并在物理上断开调试器的情况下连接我的电源监控器。 根据 LED 是否亮起(此示例切换 LED 并休眠5秒、以便识别周期)、电流消耗始终在大约12mA 至15mA 范围内。 电流消耗略不稳定、这表示、与上一个线程一样、该示例(尽管名称不同)从未进入低功耗模式。 我怀疑这种功耗来自传感器(本例中未涉及到这些传感器)、但在我之前关闭所有传感器的尝试中、我没有成功。

    >>从 TI 最简单的 CC1350STK 示例之一开始,我们知道这一示例将使芯片进入待机状态

    您能不能澄清这是哪个示例、因为它肯定不是名称中的待机示例。

    顺便提一下、当我为我的定制板采用相同的示例 pinStandby_CC1310_LAUNCHXL_tirtos_ccs 时、电源周期更加一致、尽管永远不会低于大约5mA。 我唯一指出的原因是、我几乎是正、感应器上的许多传感器都阻止了待机。 我之前未成功修改 pinStandby_CC1350STK 示例。 我的定制板省去了大多数传感器、我很确定要禁用其余传感器... 但仍无法低于几毫安。

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

    我在项目属性中找到了 ULP Advisor。 当我选中#1进行编译时、它会显示

    (ULP 1.1)未检测到使用低功耗模式状态更改指令空:(ULP 1.1)未检测到使用低功耗模式状态更改指令
    

    您能解释一下这意味着什么吗? 它似乎只限于430?

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

    你(们)好

    我从 simplelink_cc13x0_sdk_2_20_00_38中获取了 CC1350STK 的 pinStandby 示例。 我注意到、包含所有传感器代码的完整 MW 文件夹已从此 SDK 中删除(我有一个 Jira 标签文件)、因此我从之前的 SDK 中获取了这些文件。 我已为您添加了所有文件。

    我在 pinStandby 示例中包含了所有传感器文件、并添加了关闭传感器的代码。

    我的代码如下:

    /*
    === pinStandby。c ======
    */
    #include 
    
    /*驱动程序头文件*/
    #include 
    #include 
    
    /*示例/板头文件*/
    #include "Board.h"
    
    #include "SensorBmp220.h"
    #include "SensorTmp007.h"
    #include "SensorUtil.h"
    
    #include "sensorHdc1000.h"
    #include "SensorMpu925.h"
    #include "SensorI2C.h"#include "pin/pinedConfig"
    
    
    
    *#include "pin/*#pinorpin/*#include "pin/pine.h"#include "Sensorpintrin/pin/pinu1001.h"#include "p
    BOARD_PIN_LED0 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、/* LED 最初关闭*/
    Board_PIN_LED1 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、/* LED 最初关闭*/
    PIN_TERMINATE /*终止列表*/
    };
    
    /*
    === mainThread ====
    //
    void * mainThread (void * arg0)
    {
    PIN_STATE 引脚状态;
    PIN_Handle hPin;
    uint32_t currentOutputVal;
    uint32_t 标准持续时间= 5;
    
    /*分配 LED 引脚*/
    hPin = PIN_OPEN (&pinState、LedPinTable);
    
    if (SensorI2C_open ())
    {
    /*将未使用的外部传感器和闪存置于睡眠状态*/
    SensorBmp280_init ();//压力传感器
    SensorBmp280_enable (false);
    SensorTmp007_init();//红外热电堆传感器
    SensorTmp007_enable (false);
    SensorHdc1000_init ();//湿度
    SensorMpu9250_init ();//陀螺仪和加速计
    SensorMpu9250_enable (false);
    SensorMpu9250_poweroff();
    SensorOpt3001_init();
    SensorOpt3001_enable (false);
    }
    
    /*
    *反复休眠一段时间、以允许重复进入/退出
    *从待机状态。 每次迭代时都会切换 LED 状态
    *
    while (1){
    /*睡眠、让电源策略将设备转换为待机*/
    睡眠(待机持续时间);
    
    /*读取所有引脚的当前输出值*/
    currentOutputVal = PIN_getPortOutputValue (hPin);
    
    /*切换 LED,一次性配置所有 LED */
    PIN_setPortOutputValue (hPin、~currentOutputVal);
    }
    }
    

    e2e.ti.com/.../sensors.zip

    然后、我测量了3.6uA 的待机电流消耗(在 LED 关闭期间:

    不确定您是否能够在该硬件上低于此值。 这不是因为芯片本身不处于待机状态(也就是说、您可以通过再充电脉冲进行判断)、而是因为硬件。

    Siri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对拖延表示歉意。 我终于准备再次测试了。

    使用 sensortag、并将上述代码修改为 pinStandby、我得到9mA 的低电流消耗。 远高于3.6uA。

    我没有示波器、但同时使用了模拟电流表和能够绘制一些低频样本的莫西米特。 它从调试器中断开连接、由稳定的电压源运行。 我对充电脉冲不完全了解、但我认为这不会导致我的两个仪表上出现如此高的读数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用完全相同的代码,在我测量3.6uA 时获得9mA 的功耗,则您的硬件可能无法正常工作,或者您的测量设置有问题。 不是硬件专家、因此我无法回答您是否能够使用您所使用的仪器测量这些低电流。

    在进行测量时、我使用 Agilent N6705B 直流电源分析仪。
    我通过10引脚 ARM Cortex 调试连接器将 SensorTag 连接到 SmartRF06EB 板、然后通过功率分析仪为 SmartRF06板供电。

    我测量的待机电流也测量再充电脉冲。 您可以在此处找到有关再充电脉冲的更多信息:

    e2e.ti.com/.../496700

    您可以发送有关确切测量设置的信息、以及有关您使用的仪表及其连接方式的详细信息、也许我可以让我们的一些硬件专家来了解一下。

    您还可以制作一些测试代码并将无线电设置为连续 RX 和/或 TX、然后查看您是否能够测量数据表编号、或者您是否仍在测量预期的9mA 偏移。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、

    我正在处理一个类似的问题、并在这个问题被突出显示为解决方案时开始了一个主题。

    Siri、
    我获取了您的代码并将其烧录到传感器标签上、在待机模式下 LED 熄灭时可获得86uA 的电流。 我使用的是一个3.1V 电源、该电源通过一个串联电流表连接到电路板上的电池卡舌。 传感器标签独立运行、未连接调试器。 我已经在2个感应器上尝试过它、并获得相同的结果。 我还通过 CC1350STK_shutDownExtFlash()函数为麦克风和闪存供电。

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

    我的电源设置与 TOM 基本相同。 连接到 sensortag 上"POS & NEG"插槽的电源引线、并串联电流表。 调试器被物理断开。

    它看起来 CC1350STK_shutDownExtFlash()作为初始化过程的一部分被调用(通过 CC1350STK_initGeneral(),然后是 Board_initHook())。 我单步执行了传感器初始化块、它们看起来都已执行。

    我想知道是否有其他程序、因此我通过 Uniflash 擦除整个闪存。 结果仍然相同。

    如果 Tom 可以进入 uA 范围,而 Siri 可以降到3.6uA,我会认为我的板坏了… 但是、当我尝试使用我的定制板(基于 sensortag、只需移除一组传感器)时、我仍然以毫安级的电流运行。 我想它可能是我的功率计、但我在模拟仪表和数字图(莫西米特)上获得相同的值。 这与 pinstandby 示例有关。

    驱动连接器的原因在于我的定制代码中、我使用的是传感器控制器、当传感器控制器代码运行(访问 mpu9250)时、功耗会大幅下降、然后在一切都应该睡眠时显著升高? 这与应该发生的情况完全相反(睡眠期间的低功耗、活动期间的高功耗)。

    休眠电流为~10mA、这与我在库存传感器标签上看到的情况非常相似。 如果我的仪表读数不正确、您会如何解释传感器控制器运行时电流下降到大约3mA? 当传感器控制器运行时、为 mpu9250供电、因此3mA 是合理的功耗。

    是否有任何方法可以判断10mA 电流在休眠时的电流消耗是多少?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想我可能已经弄清楚了我的定制板上的空闲功率(其中一条 bmp280线路上可能会有电流消耗)。 我将尝试完全卸下该传感器。

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

    如果主处理器在运行时处于睡眠状态、传感器控制器在运行时消耗的功率可能会更少。 10mA 远高于发射之外的任何电源域的规格。
    根据数据表、传感器控制器的运行电流约为650uA、主 CPU 的运行电流约为2.5mA。
    如果是硬件问题、则奇怪的是、它在两组硬件上复制

    如果在使用10mA 电流时将 RESET 引脚置为有效、会发生什么情况? 短接 JTAG 连接器上的引脚9&10 (离电池座最近的2个引脚)。 如果在复位模式下为电路板上电、则电流约为47uA;在引脚待机程序运行时、电流复位时、电流约为37uA。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Spanky,您写的是“我的 sensortag 电源使用量仍有损失。” 您是指 sensortag 还是 sensorcontroller? 此外、您会写"我的电源设置与 TOM 的设置基本相同。 连接到 sensortag 上"POS & NEG"插槽的电源引线、并串联电流表。 调试器被物理断开。" 您是否同时使用感应器和定制板进行电流测量?它们是否提供相同的结果?

    -您是否能够在 launchpad (没有可增加功耗的外部传感器)中运行代码以查看电流消耗是否符合预期?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我计算了我在定制板上的功耗。 我尝试驱动 BMP280电源、这与 sensortag 驱动 MPU9250电源的方式类似。 我的应用大部分时间都处于休眠状态、因此即使 BMP280的功耗相当低、但"完全"禁用它似乎是合适的。 遗憾的是、我的引脚分配导致断电时、通过 BMP280的另一个引脚消耗功率。 这似乎是高空闲功率的罪魁祸首、因为我能够修改电路板以持续为 BMP280供电。 现在的行为符合预期(活动期间为~1mA、睡眠期间显著下降)。 那么、换句话说、这个是我的故障。

    在 sensortag 上、我仍然在 pinstandby 上获得9-11mA (取决于 LED 状态)、代码由 Siri 发布、并从之前的 SDK 中复制 sensors 文件夹。 由于我在我的定制板上发现了这个问题、这个 sensortag 不再是优先级。 我只会假设这个特定的董事会存在一些缺陷、因为我似乎是少数人。 我没有单步执行传感器代码以确保它不会在某个位置发生故障。

    顺便提一下、当我尝试将电池座旁边的引脚短接时、功耗会上升(~40mA)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很高兴您能够弄清您的定制板有什么问题、并能够继续您的开发。 由于您正在测量正确的电流消耗、因此我们可以得出结论、您的设置正常。 我们知道我的代码是可以的、因为我获得了正确的电流消耗、所以我想可以说您的 sensorTag 一定有问题。

    祝您的项目顺利。

    BR

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

    您好、Siri、

    您对我在 CC1350传感器标签上看到的86uA 空闲电流消耗和35uA 保持复位时的电流消耗有什么看法吗?

    我可能喜欢这种方法、但我想知道我是否会在偏离您当前读数的过程中出错

    Spanky、

    您的传感器标签似乎存在问题、因为短接2个引脚(9&10)只能通过保持 RESET 低电平来复位处理器

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我不确定电流是如何或为何仅通过跳过这些引脚而上升的、但糟糕的电路板会解决很多这些问题。 否则、它似乎可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tom、我没有通读整个线程。 我找到的帖子、您在其中描述了在程序中间重置单元的测试。 但我假设这是整个电路板的电流消耗? 如果是、您需要在将复位拉至低电平之前检查所有传感器是否处于可能的最低功耗状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    这个线程 Spanky 和 I 上有我们2个人 我们的问题是类似的、因此我跳过他的主题、而不是重复一篇文章。

    我先运行 Siri 的程序、然后将复位线拉低、这是86uA 至35uA 数字的来源。 在我看来、 当传感器处于低功耗模式时、这表明电路板的静态电流大约为35uA、因为 CC1350电流在复位时可以忽略不计。 (除非以某种方式拉动 RESET 引脚导致传感器消耗更多电流)。 我有一些工作要做、即使假设电路板的电流为35uA、当我的程序处于待机状态时、电流为51uA。 我只是问这个问题、所以我知道 CC1350 sensortag 板的目标最低功耗。 我对 TI 处理器非常了解、我已通读了各种线程、并看到过提到的各种电流消耗值。因此、在最低功耗模式下、在电池端子上测量的 CC1350传感器标签的基线电流消耗将会有所帮助。   

     我知道我的代码确实有问题。 我采用了 Siri 的断电代码、并将其与我自己的代码集成在一起。 我使用传感器控制器每秒从 OPT3001收集值、然后传输数据包。 低于传感器控制器唤醒以进行测量的峰值约为1.7mA、远高于我预期的值。 我有一些工作要做...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "我获取了您的代码并将其烧录到传感器标签上、在待机模式下 LED 熄灭时可获得86uA 的电流。":如果您使用电流表、则如何仅在器件处于睡眠状态时测量? 或者您是否移除了 LED?

    我会尝试在重置中不设置 CC1350的情况下进行测量、因为我不确定这是否会影响传感器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此线程因不活动而关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Ter、

    我假设在传输峰值(在没有 LED 的情况下我可以观察到)之间、器件处于睡眠模式。

    当器件处于睡眠状态时、我在进行传输后切换了复位。 我将检查默认 IO 引脚设置、这里也许有一些内容需要了解、以弥补复位时86uA 和38uA 之间的差异。 如果您在复位保持低电平的情况下为电路板加电、即未向传感器发送断电序列、您将得到接近1mA 的电流、因此来自 Siri 的传感器断电代码确实显著降低了电流消耗。