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-CC3235SF:器件处于睡眠模式时、是否可以使用 HTTP GET 和 POST 请求唤醒?

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1440588/launchxl-cc3235sf-can-the-device-be-woken-up-with-http-get-and-post-requests-when-it-is-in-sleep-mode

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

工具与软件:

大家好、我想在器件处于 LPDS 模式等睡眠模式下、使用 HTTP GET 和 POST 请求来唤醒器件、这可以吗?

我的主要目标是使器件保持睡眠状态并在特定时间段将其唤醒、获取数据并将其恢复到睡眠状态、最佳方法是什么?

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

    您好!

    此特性基本上已实现、这意味着如果您连接到 AP 并且大部分时间处于 LPDS 状态、则器件只会在接收信标时唤醒、这是强制性的。 如果将数据包发送到器件(无论数据包是什么数据包)、器件将在下一个信标处唤醒、读取来自信标的 TIM、了解其有一个数据包待处理、然后将从 AP 轮询该数据包并返回 LPDS。

    有一种称为 RX 滤波器的机制(请参阅 NWP 指南中的第11章)、允许设置一些模式和规则以进一步"播放"唤醒器件的内容、但实现起来更复杂、我不确定您是否需要它。

    此致、

    Shlomi

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

    你(们)好

    我将器件置于 LPDS mmod 中。 它在该模式下消耗的电流很低。 我希望使用 HTTP GET 在该模式下将其唤醒。

    让我告诉你我的主要目的,你给我最正确的方法。 我将通过每天发送4-5次 http GET 请求来向器件发送数据。 我希望器件在其余时间处于睡眠状态。 这样、我的目标是将电池寿命延长到6-7个月。 为此、我想将它置于 LPDS 模式下睡眠、并使用 HTTP 查询将其唤醒、但我不明白这是否可行。 我可以对 GPIO 中断执行相同的操作、但无法实现、因为我需要无线解决方案。

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

    我建议您通读以下概述 https://www.ti.com/lit/an/swra594a/swra594a.pdf

    概括来说、共有两种模式:间歇性连接和始终保持连接。

    保持在 LPDS 状态与始终连接模式相关、在这种模式下、器件大部分时间都处于 LPDS 状态、而器件为接收信标而唤醒(您甚至可以通过每隔几个 DTIM 唤醒一次来降低平均电流-请参阅本文档中的 LSI 模式)。

    这种方法的主要优势在于可始终与 AP 保持连接、也就是说、尝试通过云进行通信时、延迟极低、无需执行很多操作即可唤醒器件、只需将数据发送给 AP、就能自动唤醒并获取由 AP 在信标上发出的信号。

    Shlomi

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

    你(们)好

    如果我设置您提到的每半小时唤醒一次、交换数据和唤醒的方法、平均电流值是否会降至5mA 以下?

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

    每半小时一次是一个很长的时间、您可以进入完全关闭状态。 但在完全关闭状态下、您需要给器件上电(可能打开计时器)。

    如果您希望避开它并保持与 AP 的连接、即使您唤醒每个信标(102.4mSec)、仍可在小于1mSec 的平均值下绘制、因此您应该没问题。

    还有其他因素需要考虑、例如 Wi-Fi 保持活动数据包、TCP 保持活动、DHCP 更新、Wi-Fi 广播密钥交换等。

    话虽如此、平均值上1mSec 和5mSec 之间的差距很大、因此我认为您有足够的裕度来保持始终连接模式。

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

    您好;
    我不知道5mSec 是什么意思。 我将讨论器件消耗的电流。 因此、当我使用您提到的方法时、器件消耗的电流是否会低于5mA? 我真的想问。

    谢谢你。

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

    抱歉、拼写错误。 我是指上面的1mA 和5mA。

    查看我共享的文档中的平均电流表。

    即使是默认唤醒时间、每个信标也会给出一个低于1mA 的数字。

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

    您好;
    首先、感谢您的快速响应。

    我想确保我正确理解您。 我可以使用 LSI 方法将器件置于睡眠模式。 我可以通过 http get 请求将其唤醒、这是可以实现的、对吧?

    根据你说的,我创建了一个类似下面的结构。
    void configureDTIMAndListenInterval (void){
    uint16_t listenInterval = 5;//调整为所需的信标间隔(例如5个信标)
    int32_t status;

    //配置监听间隔
    status = sl_WlanPolicySet (SL_WLAN_POLICY_PM、SL_WLAN_LOW_POWER_POLICY、(uint8_t *)&listenInterval、sizeof (listenInterval));
    如果(状态< 0){
    Display_printf (display、0、0、"Failed to set Listen Interval:%d"、status);
    其他{
    Display_printf (display、0、0、"Listen Interval set successfully:%d"、listenInterval);
    }
    }

    谢谢。

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

    您的基本理解是正确的、但这不是 API。

    要查看示例、请查看 wlan.h 头文件。

    选项是 SL_WLAN_LONG_SLEEP_INTERVAL_POLICY 、而不是 SL_WLAN_LOW_POWER_POLICY、间隔以毫秒为单位。

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

    您好;
    void configureDTIMAndListenInterval (void){
    uint16_t listenInterval = 5;//
    int32_t status;

    //设置 DTIM 和监听间隔设置
    STATUS = SL_WlanPolicySet (SL_WLAN_POLICY_PM、SL_WLAN_LONG_SLEEP_INTERVAL_POLICY、(uint8_t *)&listenInterval、sizeof (listenInterval));
    如果(状态< 0){
    Display_printf (display、0、0、"Listen Interval set failed:%d"、status);
    其他{
    Display_printf (display、0、0、"Listen Interval set successfully:%d"、listenInterval);
    }
    }当我按此设置时、我得到监听间隔无法设置错误。

    谢谢。

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

    您没有遵循随附的示例。

    请严格遵循类型并查看其设置方式。

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

    void configureDTIMAndListenInterval (void){
    int32_t status;
    SlWlanPmPolicyParams_t PmPolicyParams;
    memset (&PmPolicyParams、0、sizeof (SlWlanPmPolicyParams_t));
    PmPolicyParams。 MaxSleepTimeMs=100;
    // DTIM ve Listen Interval ayarlarını yap
    状态= SL_WlanPolicySet (SL_WLAN_POLICY_PM、SL_WLAN_LONG_SLEEP_INTERVAL_POLICY、(uint8_t *)&PmPolicyParams、sizeof (PmPolicyParams));
    如果(状态< 0){
    Display_printf (display、0、0、"Listen Interval ayarlanamadı:%d"、status);
    其他{
    Display_printf (display、0、0、"Listen Interval başarıyla ayarlandı:%d"、PmPolicyParams. MaxSleepTimeMS);
    }
    }  

    我按这种方式设置、但器件不会进入睡眠模式。 有一个正常的30mA 电流值。 如果您愿意、我可以共享代码的其他部分、但可以确定器件没有进入睡眠状态。

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

    设置看起来不错、但我选择大于100mSec 的数字。

    尝试将其设置为400mSec、这样我们就可以确保它不会唤醒每个信标。

    至少从您提到的30mA 看、电流消耗似乎来自不进入 LPDS 的 ARM M4 (应用处理器)、而不是 MAC/PHY。

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

    感谢您的回答。 此过程已成功完成。 当您在 CCS Studio 中编译代码时、文件中将显示一个十六进制代码。 我们如何将该十六进制代码加载到处理器中? 是否有任何与此主题相关的文档?

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

    使用 CCS 进行编译时、应该有.out 和.bin。 在哪里可以看到.hex?

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

    实际上我的问题是这个。 我需要将当前版本的软件发送给远程客户、但无法发送源代码。 如果我没记错、就会专门为该器件解压.sli 扩展文件。 这就是我要寻找解决方案的原因。

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

    您在哪里看到十六进制文件? 您应该会在工作区的"MCU+Image"目录下看到.out 和.bin。

    然后、您应将 bin 文件作为 MCU 映像添加到 Uniflash、然后即可获取该映像。

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

    您始终可以采用.bin 并使用独立的 Uniflash 来创建所有类型的映像。

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

    我无法安装扩展名为.sli 的文件之外的程序

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

    同样、您可以使用 Uniflash (而不是 CCS)获取.sli。 如果您坚持使用 CCS、我认为您可以将 syscfg 中的"映像模式"从"开发"更改为"生产"并重新编译、以便映像适合所有器件。