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.

[参考译文] CC1312R7:使用 Power_Notify 的正确方式、延迟 relativеly μ s

Guru**** 2492385 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1552335/cc1312r7-right-way-to-use-power_notifyfxn-with-relativ-ly-big-delay-in-it

器件型号:CC1312R7
主题:SysConfig 中讨论的其他器件

工具/软件:

你(们)好

我的硬件使用 15V 供电。 3.3V 由两个并行电压稳压器实现 — 一个线性 LDO 和一个直流/直流。 LDO 持续工作、直流/直流稳压器只能在 MCU 和射频活动下导通。

我的意图是实现直流 — 直流管理,注册一个 “DC-Fxn"<xmt-block0>“ Power_Notify 以打开和关闭直流 — 直流。 此通知函数会有一些内部延迟、直流/直流转换器才能运行并保持稳定。  

 approаch 是、我不清楚如何通知电源驱动程序由于这个函数的“唤醒时间“、它用于计算的值会更大(与定义的值不同)、因此请告诉我什么是正确的 Δ T。

SW 基于 TI-RTOS7 和 simplelink_cc13xx_cc26xx_sdk_6_30_01_03。

此致、

Dimitar

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

    尊敬的 Dimitar:  

    我需要与研发部门联系、因此请 允许我有时间对此进行研究。

    BR

    Siri

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

    我制作了一个 SMAL Tet 程序,每 0.5 秒发送一个数据包

    它为 TX 命令使用绝对时序、因此射频驱动程序和电源驱动程序将确保器件进入 SB 在中间数据包中。

    我使用 postNotifyFxn 设置和清除引脚、说明了如何打开和关闭直流/直流转换器。

    测试代码如下所示:

    #include <stdlib.h>
    #include <unistd.h>
    #include <ti/drivers/rf/RF.h>
    #include <ti/drivers/GPIO.h>
    #include <ti/drivers/Power.h>
    #include DeviceFamily_constructPath(driverlib/rf_prop_mailbox.h)
    #include "ti_drivers_config.h"
    #include <ti_radio_config.h>
    
    #define PAYLOAD_LENGTH      10
    #define PACKET_INTERVAL (uint32_t)(4000000*(0.5f));
    
    static RF_Object rfObject;
    static RF_Handle rfHandle;
    
    static uint8_t packet[PAYLOAD_LENGTH] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    
    Power_NotifyObj powerNotifyObj;
    unsigned int eventTypes = PowerCC26XX_AWAKE_STANDBY | PowerCC26XX_ENTERING_STANDBY;
    
    
    static int postNotifyFxn(unsigned int eventType, uintptr_t eventArg, uintptr_t clientArg)
    {
        if (eventType == PowerCC26XX_AWAKE_STANDBY)
        {
            GPIO_write(CONFIG_GPIO_CONTROL_DCDC, 1);
            return (Power_NOTIFYDONE);
        }
    
        if (eventType == PowerCC26XX_ENTERING_STANDBY)
        {
            GPIO_write(CONFIG_GPIO_CONTROL_DCDC, 0);
            return (Power_NOTIFYDONE);
        }
        return (Power_NOTIFYERROR);
    }
    
    void *mainThread(void *arg0)
    {
        uintptr_t clientArg;
    
        Power_registerNotify(&powerNotifyObj, eventTypes, postNotifyFxn, clientArg);
    
        GPIO_setConfigAndMux(CONFIG_GPIO_TX, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW, IOC_PORT_RFC_GPO1); // PA
    
        RF_Params rfParams;
        RF_Params_init(&rfParams);
    
        RF_cmdPropTx.pktLen = PAYLOAD_LENGTH;
        RF_cmdPropTx.pPkt = packet;
        RF_cmdPropTx.startTrigger.triggerType = TRIG_ABSTIME;
    
        rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);
    
        RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);
    
        RF_cmdPropTx.startTime = RF_getCurrentTime();
    
        while(1)
        {
            RF_cmdPropTx.startTime += PACKET_INTERVAL;
            RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTx, RF_PriorityNormal, NULL, 0);
        }
    }

    运行代码、监控 PA 信号(TX 中的无线电)和 CONFIG_GPIO_CONTROL_DCDC 信号、结果将如下所示:

    在 RFCC26X2_multipa.c 文件中、我更改了

    /* Default value for power up duration (in us) used before first power cycle */
    #define RF_DEFAULT_POWER_UP_TIME               2500
    /* Default minimum power up duration (in us) */
    #define RF_DEFAULT_MIN_POWER_UP_TIME           300

    最终目的

    /* Default value for power up duration (in us) used before first power cycle */
    #define RF_DEFAULT_POWER_UP_TIME               5000
    /* Default minimum power up duration (in us) */
    #define RF_DEFAULT_MIN_POWER_UP_TIME           5000

    这会导致设备更早被唤醒、您可以打开直流/直流转换器、以便在对讲机进入 TX 之前将其打开

    恐怕我无法理解您的评论:“直流/直流转换器只能在 MCU 和射频活动上开启。

    您打算如何在没有 MCU 的情况下打开直流/直流转换器?

    Siri

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

    尊敬的 Siri:

    1.关于 直流 — 直流转换器只能在 MCU 和射频活动上打开。“ -我的意思是,当 MCU 处于待机状态时,直流 — 直流应该关闭。 顺便说一下、现在还希望 LDO 稳压器能够满足传感器控制器的需求。

    2. 源代码修改是否是改变时间的唯一方法?

    3. 如果我们要修改 sorces 文件,在 Power_CC26x2.h 中更改预定义的时间不是更好吗?

    /*! The latency to reserve for resume from STANDBY (usec). */
    #define PowerCC26X2_RESUMETIMESTANDBY 750
    
    /*! The total latency to reserve for entry to and exit from STANDBY (usec). */
    #define PowerCC26X2_TOTALTIMESTANDBY 1000
    
    /*! The initial delay when waking from STANDBY (usec). */
    #define PowerCC26X2_WAKEDELAYSTANDBY 240

    我认为这样应该涵盖任何唤醒原因(就像通过其他时钟对象)、而不仅仅是在射频活动时唤醒。  

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

    我联系了 R&D、以下是他们的回复:

    “根据听起来、客户想要添加自己的进入和退出待机通知、这些通知会启用/禁用外部直流/直流转换器并轮询、直到它准备就绪、然后再恢复操作。

    这将需要足够长的时间(需要多长时间?) 它将消耗电源驱动器为唤醒留出的时间。

    在这种情况下、我会按照客户的建议进行操作。 它们应测量执行待机退出通知所需的时间、并将该值添加到 PowerCC26X2_WAKEDELAYSTANDBY 中。 它们还应衡量其待机进入通知的持续时间。 然后将两个通知的持续时间添加到 PowerCC26X2_TOTALTIMESTANDBY。

    然后在其工程中重新编译 PowerCC26X2.c。

    这将确保我们提前唤醒客户指出的射频和非射频时钟的指定时间量。 这还将确保它们不会进入待机状态、除非有足够的时间进出并仍然能节省电力。 他们可以根据直流/直流启动和关断序列等的电流消耗进行更复杂的计算、以获得更理想的电流消耗、但这可能足以满足他们的需求。“

    BR

    Siri

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

    尊敬的 Siri:

     PowerCC26X2_WAKEDELAYSTANDBY 和 PowerCC26X2_TOTALTIMESTANDBY 都在头 文件 (Power_CC26x2.h) 中定义、而不是在 PowerCC26X2.c 文件中。 我将 在工程中重新编译 PowerCC26X2.c、更改此文件以包含修改后的 Power_CC26x2.h 文件、而 SysConfig 仍将继续包含 来自 SDK 的原始 Power_CC26x2.h。  

    问题是:这些时间 (PowerCC26X2_WAKEDELAYSTANDBY 和 PowerCC26X2_TOTALTIMESTANDBY) 在 PowerCC26X2.c 源之外的其他地方直接使用吗?   

    此致、

    Dimitar

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

    从研发:

    据我所知、这些定义仅供这些文件使用:

    • PowerCC26X2_freertos.c
    • PowerCC26X2_nortos.c
    • PowerCC26X2_tirtos.c
    • PowerCC26X2.c

     

    前三个文件始终是重新编译的、因为 DPL 文件作为源 vis sysconfig 包含。

    Siri

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

    尊敬的 Siri:

     PowerCC26X2_WAKEDELAYSTANDBY 的用途是什么? 它与 PowerCC26X2_RESUMETIMESTANDBY 之间的差异是什么、我是否也应该将延迟时间添加到该时间?

    此致、

    Dimitar

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

    嗨、Dimitar

    RESUMETIMESTANDBY 是硬件转换延迟、我们的软件不再使用。  

    R&D 已确认:“WAKEDELAYSTANDBY 是用户希望在唤醒过程中为自己的功能留出更多裕量时应编辑的部分。“

    BR

    Siri

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

    尊敬的 Siri:

    根据源代码 (PowerCC26X2.h)、 PowerCC26X2_WAKEDELAYSTANDBY 的时间比 PowerCC26X2_RESUMETIMESTANDBY 短 。  PowerCC26X2_RESUMETIMESTANDBY 也用于 Power_getTransitionLatency() 函数中。

    您的响应中 RESUMETIMESTANDBY 和 WAKEDELAYSTANDBY 的位置是否可能已交换?

    此致、

    Dimitar

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

    从研发:

    在实践中未使用 RESUMETIMESTANDBY。 至少自我加入 TI 后、该软件已经没有进行评测、而且我们的任何软件都没有使用该软件。 我认为它实际上只存在以支持该旧版 API (Power_getTransitionLatency)

     WAKEDELAYSTANDBY 是用户希望在唤醒过程中为自己的功能留出更多裕量时应编辑的部分。

    Siri