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.

[参考译文] CC1352R:射频内核电源完成

Guru**** 2601915 points
Other Parts Discussed in Thread: CC1101

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/976671/cc1352r-rf-core-power-done

器件型号:CC1352R
主题中讨论的其他器件:CC1101

您好!

应用需要尽可能降低功耗。

问题是:

在 使用 pktConf.bFsOff = 1的 CMD_PROP_TX 发送射频数据包后、会自动使用 CMD_FS_OFF 来关闭 FS wil。

但是,FS 不会处于断电状态(模拟部分),对于最低电流消耗,CMD_FS_POWERDOWN 应在 CMD_FS_OFF 之后执行?

如果在传输数据包"rf_yield (rfHandle)"后使用、是否可以实现最低电流消耗?

 RF_Yield (rfHandle)是否包含 CMD_FS_POWERDOWN?

此致、

Ilian

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

    Ilian、您好!

    对于 FS、它将在最快执行速度和最低功耗之间实现平衡。

    我不建议您使用 CMD_FS_POWERDOWN。 我还认为、如果您实施它、您将不会节省太多功耗。

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

    在我们的建议设置中、我们将 bFsOff 设置为0、这意味着 synth 将在 TX 命令之后开启。

    例如、如果您在互相传输多个数据包、这是相关的、因为这样就很容易不打开和关闭数据包之间的同步。 当您完成发送数据包并希望例如待机时、只需调用 RF_Yield 就足够了、因为这将关闭整个射频内核。 无论 bFsOff 设置如何、待机模式下的电流消耗都是相同的。

    BR

    Siri

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

    您好、Siri、

    感谢您的回答。

    RF_Yield 关闭了射频内核、这意味着 FS 将断电?

    我想了解在不同阶段发生的情况。

    对于不对称:

    执行 CMD_FS 时、仅 加载合成器系数(用于 N 和 R 分频器)、还是加电时模拟部分(VCO)且合成器已处于锁定状态? 还是发送 CMD_PROP_TX 时模拟部件打开?

    我问、由于该器件具有超低功耗、射频传输例如每分钟一个数据包。

    如果 RF_Yield 达到断电的最大值、我将在不使用 CMD_FS_POWERDOWN 的情况下使用它。

    此致、

    Ilian

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

    当您执行 RF_Yield 时、您将关闭整个射频内核的电源、并且您将达到0.8 uA 的待机电流。 无需发出 CMD_FS_POWERDOWN。

    Siri

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

    您好、Siri、

    感谢您的回答!

    在 RF_Yield 之后、是否需要再次 使用 CMD_FS 设置 FS、或者在无线电内核初始化期间应执行一次此操作?

    此致、

    Ilian   

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

    您好、Siri、

    还有一个问题。

    在 prop.packet 格式中、可能不会插入前导码和 SYn.word。

    对于前导码、如果设置为一位且该位为零(询问调制)、则可能是肯定的、但是否可以不插入同步字?

    在 CC430中、如果 MDMCFG2.SYNC_MODE = 0、则有可能;

    根据 CMD_PROP_RADIO_SETUP、nSwBits,应该介于8和32之间。  

    此致、

    Ilian

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

    你(们)好

    当您使用我们的射频驱动器和电源驱动器时、您不必再次手动调用 CMD_FS。 驱动程序将会发生这种情况。 请查看我们 SDK 中的 rfPacketTX 示例。 它以给定的间隔传输数据包、并在传输之间进入待机状态。

    如 TRM 中所述:有效值为8至32。

    这意味着不能将 nSwBits 设定为< 8。 这样做将会给您一个错误(PROP_ERROR_PAR)。 不确定要在这里实现什么、但在 TX 端、您可以通过无线方式发送所需的任何内容(前导码的最小1位除外)。

    如果要发送0x01、0x02、0x03、可以发送1个前导码位、8个同步位并将同步字设置为0x01、使用固定的数据包长度、并将有效载荷设置为0x02和0x03。 CRC 可被禁用。

    在 RX 端、您将需要一个8位的更长同步字、以避免始终出现误触发。

    Siri

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

    您好、Siri、

    感谢您的回答!

    我知道 Tx 数据包的示例。

    如果是同步。 无法排除字这是、我的想法是将数据中的第一个字节置于同步状态。 字字节。

    此致、

    Ilian

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

    您好、Siri、

    还有一个问题。

    我实现了将同步字作为 有效负载的第一个字节的想法、但同步(第一个字节)和支付加载(第二个字节)之间存在差距。

    GAP 为1字节时间-在可能的情况下为~420us。

    此间隙是否存在或是否是我的设置问题?

    RF_cmdPropTx.pktConf.bUseCrc = 0;//不附加 CRC。
    RF_cmdPropTx.pktConf.bVarLen = 0;

    RF_cmdPropRadioDivSetup.Preview.nPreamBytes = 0;
    RF_cmdPropRadioDivSetup.前置 放大器前置模式= 0;
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 8;

    附加的是信号视图。

    看起来同步字是16位而不是8位。

    SYNC 为0xE7、之后是一个字节0。

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

    您为什么拒绝回答。 据我所见,没有任何未回答的问题,您的问题已经得到解答。

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

    我没有拒绝答案、可能会出现一些错误?

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

    好的。 很抱歉。 我收到一条消息、说我刚关闭案例时、答案被拒绝。 我会再试一次,然后:-)

    BR

    Siri

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

    现在我看到了我关于差距的问题:)

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

    您好、Siri、

    看起来长度字节为零(由于:RF_cmdProptTx.pktConf.bVarLen = 0;)、但 它存在于数据包中。

    此致、

    Ilian

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

    我无法重新创建您看到的内容。

    我使用以下代码:

    void * mainThread (void * arg0)
    {
    rf_params rfParams;
    rf_params_init (&rfParams);
    
    /*打开 LED 引脚*/
    ledPinHandle = PIN_OPEN (&ledPinState、pinTable);
    if (ledPinHandle ==空)
    {
    while (1);
    }
    
    PINCC26XX_setMux (ledPinHandle、CONFIG_PIN_GLED、PINCC26XX_MUX_RFC_GPO0);
    PINCC26XX_setMux (ledPinHandle、CONFIG_PIN_RLED、PINCC26XX_MUX_RFC_GPO1);
    
    rf_cmdPropTx.pktLen =有效载荷长度;
    rf_cmdPropTx.pPkt=数据包;
    rf_cmdPropTx.startTrigger.triggerType = trig_now;
    RF_cmdPropTx.synctWord = 0x000000E7;
    RF_cmdPropTx.pktConf.bVarLen = 0;
    RF_cmdPropTx.pktLen = 2;
    RF_cmdPropTx.pktConf.bUseCrc = 0;
    
    RF_cmdPropRadioDivSetup.Preview.nPreamBytes = 0;
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 8;
    
    数据包[0]= 0x55;
    数据包[1]= 0xC3;
    
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
    
    rf_postCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
    
    while (1)
    {
    RF_EventMask terminationReason = RF_runCmd (rfHandle、(RF_OP*)&RF_cmdPropTx、RF_PriorityNormal、NULL、0);
    
    RF_Yield (rfHandle);
    
    usleep (packet_interval);
    }
    } 

    这意味着我应该无线发送0xE755C3。

    监视传送到调制解调器的数据显示结果符合预期:

    BR

    Siri

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

    您好、Siri、

    谢谢!

    我的设置有一些、唯一的区别是我在  RF_open 后加载数据包长度、系统字、数据包指针-我的消息具有可变长度、但这不是原因、它对于 CMD_PROP_TX 很重要。

    芯片版本(ROM 功能) 或 SDK 是否可能有所不同?

    我看到它在空气中传输的内容。

    此致、

    Ilian

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

    芯片版本或 SDK 版本之间对此没有区别。

    不确定在将第一个数据包字节写入同步字时如何使用可变数据包长度。

    您的数据包格式是否如下所示:

    0xE7、长度 n、Data0、data1、…、 数据(n-1)?

    如果您能向我提供有关您实际尝试通过无线方式发送的内容的信息、则更容易获得帮助。

    或者、您可以共享您的 setup 和 TX 命令、以便我可以解释为什么要发送您要发送的内容。

    Siri

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

    您好!

    协议是定制的。

    数据的第一个字节中有一个长度信息。

    使用该协议、具有 CC1351的器件应支持该协议。

    代码:

    射频内核初始化:

    void RF_Initialization (void)
    {
    rf_params rfParams;
    
    //初始化模块中使用的变量。
    
    rfCtrlflags.rfFlags1 = 0x00;
    RF_MessageLength = 0x00;
    RF_BufferLength = 0x00;
    RF_NumberMsgs = 0x00;
    RF_NumberTransmissions = 0x00;
    
    //初始化无线电内核。
    rf_params_init (&rfParams);
    
    //RF_cmdPropTx.pktConf.bFsOff = 1;//命令后关闭 FS。
    RF_cmdPropTx.pktConf.bUseCrc = 0;//不附加 CRC。
    RF_cmdPropTx.pktConf.bVarLen = 0;
    
    RF_cmdPropRadioDivSetup.Preview.nPreamBytes = 0;
    RF_cmdPropRadioDivSetup.前置 放大器前置模式= 0;
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 8;
    
    //请求对讲机的访问权限。
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
    
    //发送 CMD_FS 并等待其完成。
    rf_runCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
    } 

    测试代码、用于传输前的数据准备:

    rf_cmdPropTx.pktLen =(rf_BufferLength - 1);
    rf_cmdPropTx.pktt =&rf_Buffer[1];
    //rf_cmdPropTx.syncWord = rf_Buffer[0];
    rf_cmdPropTx.0x000000E7;
    rf_cmdPropTx.trigger.triggerType = TRIGGERng_Now;
    rf_transmitMessage(); 

    RF_transmitMessage:
    void RF_transmitMessage (void)
    {
    RF_EventMask terminationReason = RF_runCmd (rfHandle、(RF_OP*)&RF_cmdPropTx、RF_PriorityNormal、NULL、0);
    
    switch (terminationReason)
    {
    案例 RF_EventLastCmdDone:
    //独立无线电操作命令或最后一个无线电
    //链中的操作命令已完成。
    中断;
    案例 RF_EventCmd 取消:
    //命令在启动前被取消;这可能是导致的
    //按 RF_cancelCmd ()或 RF_flushCmd ()。
    中断;
    案例 RF_EventCmdAborted:
    //由 RF_cancelCmd ()或导致命令终止突然
    // rf_flushCmd ()。
    中断;
    案例 RF_EventCmdStopped:
    // RF_cancelCmd ()或导致正常命令终止
    // rf_flushCmd ()。
    中断;
    默认值:
    //未捕捉错误事件
    while (1);
    }
    
    uint32_t cmdStatus =(volatile rf_Op*)&rf_cmdPropTx)-> status;
    switch (cmdStatus)
    {
    案例 PROP_DONE_OK:
    //数据包传输成功
    中断;
    案例 PROP_DONE_STOPPED:
    //在发送数据包并完成时接收到 CMD_STOP
    //传输数据包
    中断;
    案例 PROP_DONE_ABORT:
    //发送数据包时接收到 CMD_ABORT
    中断;
    案例 PROP_ERROR_PAR:
    //观察到非法参数
    中断;
    PROP_ERROR_NO_SETUP 案例:
    //在受支持的中未设置无线电的情况下发送命令
    //模式使用 CMD_PROP_RADIO_SETUP 或 CMD_RADIO_SETUP
    中断;
    案例 PROP_ERROR_NO_FS:
    //发送命令而不对合成器进行编程
    中断;
    PROP_ERROR_TXUNF 案例:
    //运行期间观察到 TX 下溢
    中断;
    默认值:
    //未捕获的错误事件-这些可能来自
    // rf_mailbox.h 中定义的状态池
    while (1);
    }
    } 

    来自 RF Studio 的 SmartRF_Setting:

    e2e.ti.com/.../3482.smartrf_5F00_settings.c

    此致、

    Ilian

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

    RF_BufferLength 和 RF_Buffer 在哪里声明/初始化?

    将 pktLen 设置为:

    RF_cmdPropTx.pktLen =(RF_BufferLength - 1);

    但在您发送给我的代码中、RF_BufferLength = 0;

    此外、我不知道 RF_Buffer[] 包含什么内容



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

    RF_Buffer 准备就绪并包含:

    RF_Buffer []={0xE7、0xBF、0xEB、0xFA、0xF2、 0xCD、0xA2、0xA0}

    RF_BufferLength = 8;

    在初始化期间、RF_BufferLength 仅为0x00、之后、传输被载入正确的值。

    RF_cmdPropTx.pktLen =(RF_BufferLength - 1);-因为来自 bufer 的第一个字节像 SYNC 一样传输。 在本例中、数据字节为-1。 在本例中、8 - 1 = 7

    此致、

    Ilian

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

    仍然看不到任何意外的东西。

    void * mainThread (void * arg0)
    {
    ledPinHandle = PIN_OPEN (&ledPinState、pinTable);
    if (ledPinHandle ==空)
    {
    while (1);
    }
    
    PINCC26XX_setMux (ledPinHandle、CONFIG_PIN_GLED、PINCC26XX_MUX_RFC_GPO0);
    PINCC26XX_setMux (ledPinHandle、CONFIG_PIN_RLED、PINCC26XX_MUX_RFC_GPO1);
    
    rf_params rfParams;
    
    //初始化模块中使用的变量。
    
    //rfCtrlflags.rfFlags1 = 0x00;//注释掉,因为我不知道它的初始化位置
    uint8_t RF_MessageLength = 0x00;
    uint8_t RF_BufferLength = 0x00;
    uint8_t RF_NumberMsgs = 0x00;
    uint8_t RF_NumberTransmissions = 0x00;
    
    //初始化无线电内核。
    rf_params_init (&rfParams);
    
    uint8_t RF_Buffer[]={0xE7、0xBF、0xEB、0xFA、0xF2、 0xCD、0xA2、0xA0};
    RF_BufferLength = 8;
    
    //RF_cmdPropTx.pktConf.bFsOff = 1;//命令后关闭 FS。
    RF_cmdPropTx.pktConf.bUseCrc = 0;//不附加 CRC。
    RF_cmdPropTx.pktConf.bVarLen = 0;
    
    RF_cmdPropRadioDivSetup.Preview.nPreamBytes = 0;
    RF_cmdPropRadioDivSetup.前置 放大器前置模式= 0;
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 8;
    
    RF_cmdPropTx.pktLen =(RF_BufferLength - 1);//在本例中将为7
    RF_cmdPropTx.pPkt=&RF_Buffer[1]; //指向第一个有效载荷字节(0xBF)的指针
    //RF_cmdPropTx.syncdWord = RF_Buffer[0];
    RF_cmdPropTx.synctWord = 0x000000E7;
    rf_cmdPropTx.startTrigger.triggerType = trig_now;
    
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
    
    rf_postCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
    
    while (1)
    {
    RF_EventMask terminationReason = RF_runCmd (rfHandle、(RF_OP*)&RF_cmdPropTx、RF_PriorityNormal、NULL、0);
    
    RF_Yield (rfHandle);
    
    usleep (packet_interval);
    }
    }
    

    如您所见、同步字(0xE7)和第一个有效载荷字节(0xBF)之间没有间隙

    Siri

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

    您好、Siri、

    感谢您付出的努力、但我仍然需要在同步和数据之间保持差距。

    您看到调制器之前的数据了吗? 我的图片是传输后的图片。

    您能告诉我这些设置来查看引脚上的调制器数据(您的情况)并比较结果吗?

    此致、

    Ilian

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

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

    您好、Siri、

    此处随附的是使用 EVAL 板和 RFSTUDIO 7完成的两张图片

    0xBF 之后的两个字节为 CRC (我不能排除 SmartRF Studio 中的 CRC)

    您可以看到存在差距。

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

    您好、Siri、

    另一个更新。

    您使用 FSK 尝试代码、我使用基于 RFstudio 7 PHY 的 ASK PHY ASK 4.8kbit/s

    根据文档、MCE_GPO0信号只能与2FSK 配合使用。

    因此、我看到输出射频信号。

    此致、

    Ilian

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

    你(们)好

    我认为我已经能够重新制造问题了。 我没有任何射频设备、但我在串行模式下使用了 CC1101、并在引脚上输出接收到的数据。

    与 genfsk 相比、OOK 补丁的运行方式似乎有所不同。 我需要报告此情况并请求资源来深入研究设计以进行验证、但与此同时、您是否可以尝试将同步字设置为16位而不是8位、然后将同步字设置为0x00E7。 那么、看起来同步和负载之间没有间隙。

    BR

    Siri

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

    您好、Siri、

    感谢您的回答!

    我还认为、当使用 OOK (ASK)时、这是一个问题。

    是的、我将使用 SYNC 测试版本。 16位、并将更新您。

    再次感谢您的努力!

    我希望这将成为一种变通办法。

    此致、

    Ilian

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

    您好、Siri、

    我测试将 SYNC 设置为16位的权变措施、但 GAP 不存在。

    此致、

    Ilian

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

    很高兴听到这个消息。 我希望此解决方案能为您提供帮助。 我已请求研发资源对此进行研究、但我不知道这是否会导致新的补丁或勘误表。

    BR

    Siri

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

    您好!

    好的,谢谢 Siri!

    如果您从研发部门获得了一些更新、请注意。

    如果有研发部门的答案、如何继续执行 W 踏板、"这解决了我的问题"或保持一点开放?

    此致、

    Ilian

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

    您好 Ilian

    我将关闭该主题、但在我的日历中提醒您、当我听到 R&D 的反馈时、会更新您

    BR

    Siri

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

    谢谢你 Siri!

    此致、

    Ilian

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

    您好、Siri、

    我的问题是 RF_Yield 后的电流消耗。

    在 RF_Yield 之后、我测量来自射频内核的8uA 额外电流消耗。

    我尝试使用 RF_cmdFsPowerdown,但最重要的是一些。

    根据您的看法、它应该是0.8uA?

    最好的酒店

    Ilian

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

    您是否正在使用我们的 LP?

    您可以在不进行修改的情况下获取默认 rfPacketTX 示例、并在我们的 LP 上运行、您可以验证待机模式下的电流消耗约为0.8uA。 rfWakeOnRadioRX 示例还会在数据包之间进入待机状态。

    如果您无法使用我们的 LP 上的未修改代码测量正确的电流消耗、则测量设置中必须有一些内容可以说明您看到的内容。

    Siri

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

    您好!  

    我使用低功耗模式。

    该器件的平均电流消耗为~24uA。

    初始化后、射频内核:

    void RF_Initialization (void)
    {
    rf_params rfParams;
    
    //初始化模块中使用的变量。
    
    rfCtrlflags.rfFlags1 = 0x00;
    RF_MessageLength = 0x00;
    RF_BufferLength = 0x00;
    RF_NumberMsgs = 0x00;
    RF_NumberTransmissions = 0x00;
    
    //初始化无线电内核。
    rf_params_init (&rfParams);
    
    RF_cmdPropTx.pktConf.bFsOff = 1;//命令后关闭 FS。
    RF_cmdPropTx.pktConf.bUseCrc = 0;//不附加 CRC。
    RF_cmdPropTx.pktConf.bVarLen = 0;
    
    RF_cmdPropRadioDivSetup.Preview.nPreamBytes = 0;
    RF_cmdPropRadioDivSetup.前置 放大器前置模式= 0;
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 16;
    
    rf_cmdFsPowerdown.startTrigger.triggerType = trig_now;
    
    //请求对讲机的访问权限。
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
    
    //发送 CMD_FS 并等待其完成。
    rf_runCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
    
    //关闭无线电。
    rf_yield (rfHandle);
    } 

    电流消耗为+8uA。

    PLL 或模拟器件的某些模块部分在 RF_Yield 后保持开启

    我尝试使用 RF_cmdFsPowerdown、但执行后命令的状态代码为0x0804 - ERROR_POINTER  

    rf_runCmd (rfHandle、(rf_Op*)&rf_cmdFsPowerdown、rf_PriorityNormal、NULL、0);
    uint32_t cmdStatus =(volatile rf_Op*)&rf_cmdFsPowerdown)-> status;

    此致、

    Ilian

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

    我不知道您说的低功耗模式是什么意思。 该器件可处于关断、待机、空闲或活动状态。 您没有回答运行的硬件、也没有按照我的要求验证某些已知良好的软件的电流消耗。

     我以 rfpacketTX 为例、将设置更改为 OOK、并测量电流消耗。 数据包之间的电流小于300nA。 它不高的原因是睡眠间隔太短、以至于我没有任何重新变化脉冲。 重新充电时、以 SB 为单位的平均电流消耗约为0.8uA。

    正如我先前所说的、当您使用 RF_Yield 关闭射频内核时、无线电中没有任何部分保持开启。

    Siri

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

    您好!

    我使用定制硬件、MCU 在某些连接期间处于待机状态。

    还有其他硬件正在工作、等等。

    此处连接的是 未初始化射频内核时器件的电流消耗。

    这里是初始化射频内核时的低电流消耗

    初始化 I 意味着下一步:

    //请求对讲机的访问权限。
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);

    //发送 CMD_FS 并等待其完成。
    rf_runCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);

    //关闭无线电。
    RF_Yield (rfHandle);

    当射频内核被初始化时、平均电流恒定增加~ 7-8ua。  0.023ma 至0.029ma。

    以下是用于以下设备的智能射频设置:

    / CMD_PROP_RADIO_DIV_SETUP
    //针对所有频段的专有模式无线电设置命令
    RFC_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =

    .commandNo = 0x3807、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    modulation .modType = 0x2、
    .modulation.deviation = 0x0、
    .modulation.deviationStepSz = 0x0、
    symbolRate.prescale = 0xF、
    symbolRate.rateWord = 0x3127、
    .symbolRate.decimMode = 0x0、
    .rxBw = 0x4C、
    .PreambBytes = 0x4、
    .Conf.前置 放大器模式= 0x0、
    .formatConf.nSwBits = 0x10、
    .formatConf.bBitVersal = 0x0、
    .formatConf.bMsbFirst = 0x1、
    formatConf.fecMode = 0x0、
    formatConf.whitenMode = 0x0、
    .config.frontEndMode = 0x0、
    config.biasMode = 0x1、
    config.analogCfgMode = 0x0、
    config.bNoFsPowerUp = 0x0、
    CONFIG.bSynthNarrowBand = 0x0、
    TxPower = 0x9413、
    .pRegOverride = pOverrides、
    .centerFreq = 0x01B1、
    .intFreq = 0x8000、
    .loDivider = 0x0A
    };

    // CMD_FS
    //频率合成器编程命令
    RFC_CMD_FS_t RF_cmdF =

    .commandNo = 0x0803、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    .frequency = 0x01B1、
    .fractFreq = 0xEB9A、
    synthConf.bTxMode = 0x0、
    .synthConf.refFreq = 0x0、
    .__dummy0 = 0x00、
    .__dummy1 = 0x00、
    .__dummy2=0x00,
    .__dummy3=0x0000
    };

    最佳齿轮、

    Ilian

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

    首先、您在代码中执行的操作毫无意义。 您为什么要打开射频内核、只需再次将其关闭。

    但是、我测试了两个不同的代码段、并得到了以下结果:

    void * mainThread (void * arg0)
    {
    rf_params rfParams;
    rf_params_init (&rfParams);
    
    /*打开 LED 引脚*/
    ledPinHandle = PIN_OPEN (&ledPinState、pinTable);
    if (ledPinHandle ==空)
    {
    while (1);
    }
    
    while (1)
    {
    睡眠(packet_interval);
    PIN_setOutputValue (ledPinHandle、CONFIG_PIN_GLED、!PIN_getOutputValue (CONFIG_PIN_GLED));
    }
    }
    

    void * mainThread (void * arg0)
    {
    rf_params rfParams;
    rf_params_init (&rfParams);
    
    /*打开 LED 引脚*/
    ledPinHandle = PIN_OPEN (&ledPinState、pinTable);
    if (ledPinHandle ==空)
    {
    while (1);
    }
    
    rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
    
    while (1)
    {
    rf_postCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
    RF_Yield (rfHandle);
    睡眠(packet_interval);
    PIN_setOutputValue (ledPinHandle、CONFIG_PIN_GLED、!PIN_getOutputValue (CONFIG_PIN_GLED));
    }
    }
    

    您是否有一些 LP、以便我们至少可以看到在同一硬件上使用相同代码时测量的是相同的东西?

    Siri

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

    您好!

    我发现在 RF_OPEN 之后(.....)  我的电流以~8uA 的电流增加。  根据文档、此功能不应激活射频内核的任何硬件、否则我不对。

    此函数是否可以更改无线电前端 RX_TX、RF_N、RF_P 的引脚状态?

    我将 SDK 4_10_00_78和 PHY 用于 ASK 模式

    此致、

    Ilian

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

    您需要在 setup 命令中正确配置 FrontEndMode 和 BiasMode 以了解您构建硬件的方式、但如果您没有正确配置、我不知道它将如何反映在电流消耗中。

    Siri

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

    您好!

    // CMD_PROP_RADIO_DIV_SETUP
    //针对所有频段的专有模式无线电设置命令
    RFC_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =

    .commandNo = 0x3807、
    .status = 0x0000、
    .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
    .StartTime = 0x00000000、
    .startTrigger.triggerType = 0x0、
    .startTrigger.bEnaCmd = 0x0、
    .startTrigger.triggerNo = 0x0、
    .startTrigger.PastTrig = 0x0、
    .condition.rule = 0x1、
    .condition.nSkip = 0x0、
    modulation .modType = 0x2、
    .modulation.deviation = 0x0、
    .modulation.deviationStepSz = 0x0、
    symbolRate.prescale = 0xF、
    symbolRate.rateWord = 0x3127、
    .symbolRate.decimMode = 0x0、
    .rxBw = 0x4C、
    .PreambBytes = 0x4、
    .Conf.前置 放大器模式= 0x0、
    .formatConf.nSwBits = 0x10、
    .formatConf.bBitVersal = 0x0、
    .formatConf.bMsbFirst = 0x1、
    formatConf.fecMode = 0x0、
    formatConf.whitenMode = 0x0、
    .config.frontEndMode = 0x0、
    config.biasMode = 0x1、
    config.analogCfgMode = 0x0、
    config.bNoFsPowerUp = 0x0、
    CONFIG.bSynthNarrowBand = 0x0、
    TxPower = 0x9413、
    .pRegOverride = pOverrides、
    .centerFreq = 0x01B1、
    .intFreq = 0x8000、
    .loDivider = 0x0A
    };

    RF_cmdPropRadioDivSetup.config.BiasMode = 0x0;

    前端模式-差分。

    BiasMode -内部。

    此处连接的是硬件前端

    此致、

    Ilian

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

    您的硬件已设置为使用外部偏置模式、您应将其保留为  

    config.biasMode = 0x1、

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

    您好!

    它用于外部。 但这并没有改变电流消耗。

    此致、

    Ilian

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

    当我们遇到与您不同的问题时、不确定如何为您提供帮助。

    您是否完成了我的要求、并在 LP 上测试了相同的东西、以查看您是否在那里看到了相同的问题?

    Siri

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

    您好!

    我没有在 LP (Launch Pad)上测试代码,因为代码适用于自定义硬件(IO,...)。

    我唯一要做的 就是添加 rf_open (...) 电流、我看到电流增加7 - 8uA。

    它可能与硬件部件相连、但我将其与 LP 原理图进行比较、它是一些配置。

    我将尝试在每次传输前后打开/关闭射频驱动器实例、以解决电流问题。 这将在每次初始化 FS 时增加额外的电流和时间。

    此致、

    Ilian

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

    我希望您使用 LP 进行测试的原因是验证您的测试设置和软件。 如果要测量 LP 上的正确电流、您知道 SW 正确且测量设置正常、然后您会知道问题与您的硬件或硬件的软件配置有关(GPIO 设置正确等)。

    它还将向您展示、您只需执行 RF_Yield、就能够达到正确的 SB 电流、而无需手动关闭同步或关闭射频驱动器。

    Siri

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

    您好!

    我非常了解、但将代码移至 LP 并不是一项快速任务。

    问题与当前代码无关。 电流平均消耗是可以接受的。

    增大电流可能与硬件设置、SmartRF 设置或具有 OOK 补丁的 SDK 有关。

    更多问题。

    无线电内核的 PLL。

    如果在每次传输前/传输后手动打开/关闭射频驱动器,在环境发生变化(温度变化)时,是否有必要另外校准 PLL?

    还是 PLL 像传统 PLL 一样工作、并锁定每个 CMD_FS 命令?  

    此致、

    Ilian

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

    我想我们可以排除设置和贴片、因为我要使用相同的测试、并且要测量正确的电流。

    就 PLL 而言、您不能保证它始终看起来、但故障率应小于每100000次。

    由于您已选择在每次发送时手动打开/关闭、因此您还必须在每个数据包之前手动调用 CMD_FS。 然后、您只需在命令运行后检查其状态、即可查看校准是否失败(ERROR_SYNTH_PROG)。

    Siri

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

    您好!

    了解 PLL 行为。

    根据电流消耗、我将继续手动打开/关闭驾驶员。  

    芯片是 REV.E、是您进行测量的芯片吗?

    此致、

    Ilian

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

    是的、我使用的是修订版 e

    Siri