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.

[参考译文] CC3235MODSF:CC3235 EVM 示例-电源管理,有关代码配置和 LPDS 唤醒后的一些问题

Guru**** 2553260 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1080763/cc3235modsf-cc3235-evm-example-power-management-some-question-about-code-configure-and-after-lpds-wakeup

部件号:CC3235MODSF
《线程》中讨论的其他部件:MSP432P401R测试

你(们)好  

我正在根据 CC3235 EVM 示例(电源管理 FreeRTOS)修改一些代码。  

我看到有一些功能可以配置 WLAN 电源策略。

configDuration ((uint8_t *)"LSI",(uint8_t) lsi_min_duration _in_msec,(uint16_t) lsi_max_duration _in_msec,&PmPolicyParams);  

SL_WlanPolicySet (SL_WLAN_Policy_PM,SL_WLAN_Long_Sleep 间隔策略,(uint8_t *)&PmPolicyParams,sizeof (PmPolicyParams))

物联网模式配置与 LSI 模式类似。

在 Always-LSI 模式下,无论我 配置的持续时间是什么,它似乎不会影响当前的持续 时间。此外,在我配置持续时间100ms 后,将睡眠时间更改为100秒,并在几秒钟后发现它与 AP 断开连接。不总是与 AP 连接!?

请解释一下  

1. LSI 和 IOT 模式有何区别?

2.这种持续时间配置的方法是什么?

3.在哪里可以找到所有 API 函数描述?

4.从 LPDS 唤醒后,以前的变量和任务(线程) 是否仍然可用? 顺便说一句,从 LPDS 唤醒后,我添加了一些代码以继续工作,但它始终报告 SL_Start 失败。

非常感谢。

朱杰

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

    您好,

    1. LSI 是一种专有方法, 它将 设备置于比802.11规范允许的更长的睡眠时间内(即超过 DTIM)。 由于这不是官方数据,广播数据包可能在睡眠间隔期间丢失。

    物联网法律电源是 一项新的 WFA 标准,允许物联网设备长时间休眠(而不会丢失任何数据包)-只有 AP 支持此标准(请参阅 编程器指南中的详细信息),它才会工作。

    2.这是您希望设备在信标接收之间睡眠的时间(四舍五入到最近的 DTIM 间隔)。 有关详细信息,请参阅 《电源管理》文档和《程序员指南》。

    3.请参阅程序员指南中的第15章。

    4.是状态在 LPDS 中保留。 如果您已连接,SL_Stop 将失败,因为 NWP 仍处于打开状态(只有主机将处于低功耗状态)。 您的 CNA 会检查未能验证的退货代码。

    巴西,

    科比

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

    你(们)好,Kobi

    谢谢你。  

    您能否准确定义哪些 AP 可以支持物联网或 LSI? 例如 AP 支持802.11ah? 802.11ax?或?

    客户如何选择接入点来支持物联网或 LSI? AP 上有什么描述或标志?

    对于 SL_Start 失败的问题,我停止 NWP 并重新启动,这是可以的。绝对如你所说。

    谢谢。

    朱杰

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

    你好,kobi

    另一个问题是在本示例中,我想添加一个功能,当设备间歇性连接时,机具用户可以输入远程 IP 地址,从而将数据发送到远程 TCP 服务器。

    如果像使用静态有价值的示例一样,可以将准备好的数据发送到远程 PC。  

    如果使用输入 IP 地址,我会将其保存到 保留寄存器,因为当 CC3235进入休眠状态时,它会丢失,代码如下所示

    setHibRetentionReg (gDestIPADDR);      //这种方式是 uint_32 gDestIPADDR = SL_IPv4_VAL (192,168,43,123); 此处192 ...来自输入。

    从休眠模式唤醒,请使用以下代码获取此值。

    gDestIPADDR = getHibRetentionReg ();

    但是,当运行代码时,运行的固件处理器无法从休眠模式唤醒,在先将数据发送到远程 PC 并进入休眠模式后 ,它将从看门狗重置唤醒!!!!

    为什么?

    《国家安全与发展报告》 /

    在这里,我设置的返回1来自 RTC 唤醒,返回2来自 GPIO 唤醒,返回0是另一个。然后我修改为返回(MAP_PRCMSysResetCauseGet());实际上,找到它返回5???  它是 PRCM_WDT_RESET。

    《国家安全与发展报告》 /

    Int32_t isWokenFromHib(void)

    #ifdef __MSP432P401R__
    /*从保留状态中读取唤醒原因*/
    返回(0);
    #Elif CC32XX
    IF (MAP_PRCMSysResetCauseGet ()= PRCM_HIB_EXIT)

    IF (MAP_PRCM 休眠 WakeupCauseGet()= PRCM_HIB_WAKE_CAUSE_GPIO)

    返回(2);
    }
    退货(1);
    }
    否则

    return (map_PRCMSysResetCauseGet());
    //返回(0);
    }
    #endif
    }

    《国家安全与发展报告》

    我还有另一个关于留存登记册的问题。我找不到该登记册详细信息的描述位置,以及该登记册的地址在哪里?  请告诉我一个链接。 并指向哪个页面? 非常感谢。

    #define HIB_Retention 寄存器      (0x4402FC20)

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

    LSI 是一种专有方法,它不依赖于 AP,其风险在于丢失数据包,特别是广播,它可以增加断开连接的次数(较长的间隔对某些 AP 和环境更有效,因此需要您对其进行优化)。

    物联网低功耗支持由 AP 可能支持或可能不支持的不同功能(参见编程器指南)组成(与 AH 和 ax 标准无关)。

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

    对于 保留 MCU 状态的 LPDS (使您可以保持与 AP 的连接并维护 TCP 套接字)和休眠( 导致 MCU 重置),RE 是两者之间的区别 (因此,需要重新建立与 AP 的连接,对于套接字操作也需要相同的连接)。  

    “电源”测量值显示“使用始终连接(使用 LPDS)”和“间歇性连接(使用休眠)”。

    通常,当设备的唤醒时间间隔 超过1分钟时,首选使用第二个。  

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

    谢谢你,Kobi

    了解 IOT 和 LSI 的描述。实际上,我认为,对于这两种模式,客户很难选择他们的 AP 来支持它。我有一个 AP (TP-Link)支持802.11ax。但它也不支持 IOT 和 LSI 模式。

    好的。我们将关注间歇性连接模式。

    如果在间隔工作模式下使用休眠模式,如何保存远程 IP 地址?

    在 EVM 示例中,工作模式以 uint8_t 类型保存在保留寄存器中,效果很好。

    但我保存了一个 UINT32_t 类型的数据,其中的一个大数据(C0A82B7B)。它将导致 WDT 重置唤醒,而不是从 Hib 唤醒。

    您是否为我提供了描述此注册的链接? 我找不到。 即使你提到了“程序员指南”,我也不知道你说的是哪个文档。

    下面是 CC3235规范旁边的文档。

    1. SimpleLink Wi-FiRegisteredCC3x20,CC3x3x 网络处理器用户指南
    2.应用程序报告 SimpleLink Wi-FiRegisteredCC3x3x 网络子系统电源管理
    3. SimpleLink Wi-FiRegisteredCC323x 技术参考手册
    4. SimpleLink SDK 电源管理:MSP432,MSP432E4,CC13xx/CC26xx 和 CC32xx 用户指南

    谢谢你。

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

    LSI 不会出现在任何 AP 中-它是 SimpleLink 的专有功能。

     我所指的是程序员指南(在我的第一个答案中提供了链接),是您在列出的第一个文档中所指的内容。

    有关 HIB 保留寄存器的详细信息,请参见 TRM (列表中的参考-3)。 这些寄存器 没有直接描述,但您可以通过以下方式访问它们:

    无效 PRCMOCRRegisterWrite(unsigned char ucIndex, unsigned long ulRegValue)

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

    你(们)好,Kobi

    谢谢。此 API 运行良好。现在,我可以保存数据以保留注册。

    因此,在 EVM 示例中,保存大型数据可能存在一些问题。 我不知道 0x4402FC20地址是否是指 Retain register 0。如果是,您可以看到我下面的 Retain register 0测试结果。

    ///////////////////////////////////// EVM 示例代码/////////////////////////////////////////////////

    #define HIB_Retention 寄存器      (0x4402FC20)

    无效 setHibRetentionReg (UINT32_t val)

    #ifdef __MSP432P401R__
    /*写入保留寄存器*/
    #Elif CC32XX
    HWREGB (HIB_Retention 寄存器)= val;
    #endif
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    另外, 我将 C0A8  2B7B (192.168.43.123) 数据保存为寄存器0,它始终读取40A8 2B7B。最高位始终丢失。 我认为数据类型错误。但在我直接运行  MAP_PRCMOCRRegisterWrite(0,0xFFFFFFF)后,它读出了0x7FFFFFFF。  

    所以我尝试使用 Retain register 1来保存并阅读,是的,它读出 了0xFFFFFFFF。这是可以的。 使用 Retain 寄存器0和1时,代码相同,结果不同。

    仅供参考。感谢您的帮助。

    朱杰