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:如何进入 MCU LPDS?

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/999821/cc3235modsf-how-to-enter-mcu-lpds

器件型号:CC3235MODSF
Thread 中讨论的其他器件:SysConfig

您好!

我按如下方式配置了 SysConfig。

当模块通电时、我像下面那样设置 IP 和 NWP 电源。 (我的项目基于"at_commands"示例)

以下是问题:

如果没有操作、MCU 和 NWP 将自动进入 LPDS。 对吗?

但在设置 NWP 电源后、我的器件上的电流消耗约为18mA、不再需要如上一个日志所示的操作。 似乎 MCU 未进入 LPDS。

2.当我发送 AT 命令(如"AT+wlanget=connection")时,MCU 进入 LPDS 后,MCU 会从 LPDS 唤醒?

还是应该控制 GPIO 13以将其唤醒?

谢谢、

Calvin

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

    MCU 和 NWP 将自动进入 LPDS、但在本例中、UART 会阻止 MCU 进入 LPDS。

    检查以下主题(并阅读其参考的驱动程序电源管理指南)

    https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/896411/cc3235modsf-questions-about-some-code-of-at_commands-example

    基本上、在 UART RX 上等待(这是 AT CMD 所做的事情)会阻止 MCU 进入 LPDS (本应自动完成)。

    此示例设置 RXDISABLE (ISEE InitTerm ())并使用 UART_readPolling -因此应用程序不会进入 LPDS (您需要将应用程序线程置于阻塞或睡眠模式、以便启用 OS 低优先级线程、使器件进入 LPDS)。  

    如果您将 UART_readPolling 替换为 UART_read - MCU 将进入 LPDS、但它不会通过 UART 命令唤醒。 因此、您需要使用其他方法来启用 LPDS (例如使用 gpio13)。 当前代码不支持这一点。

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

    您好、Kobi、

    感谢您的解释。

    我将  UART_TERM.c 中的所有 UART_readPolling 更改为 UART_read 并对其进行测试、但电流消耗没有变化。

    我在 at_commands.c 中添加了两个挂钩函数、以查看是否进入 LPDS。

       

    之后、当启动时、enterToLPDS 调用。

    进入 LPDS 的挂钩函数在启动时始终调用?

    添加挂钩函数后, ATCommands_displayBanner()不会执行。

     at_commands.c 的 mainThread 无法正常工作。 如何使用挂钩函数?

    2.我是否需要在 at_commands.c 的代码中添加 Power_enablePolicy()?

      它可以省略、因为它是从 SysConfig 复选框中选中的。 对吗?

    谢谢、

    Calvin

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

    为什么需要挂钩函数?

    它通常仅用于调试(例如切换 LED)。 这是不需要的。

    电源_enablePolicy 已在您的情况下启用(根据 syscfg 文件和 调用挂钩的情况 )。

    如果 enterLPDSHookFxn 为 NULL (或 函数不执行任何操作)、 RESUMELPDSHookFxn 是否被调用?

    BR、

    Kobi   

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

    您好、Kobi、

    我找到了即使在将  UART_readPolling 更改为 UART_Read 后也无法进入 LPDS 的原因。

    我从 UART 配置中选中了"Use DMA"框。   这是原因。

    取消选中后、LPDS 工作正常。

    但是、对于电源策略、基于 AT 命令的项目似乎不太适合它。

    我的器件的主 MCU 会向 CC3235发送多次 AT 命令以连接 AP、

    连接远程服务器、发送和接收通信数据。

    在电源策略中、CC3235自动进入 LPDS、

    因此、在 发送 AT 命令之前、我的器件的主 MCU 每次都必须唤醒 CC3235。 我认为这不是优雅的。

     

    1.能否向 CC3235发送自定义 AT 命令以进入 LPDS? (手动控制)

    例如、如果 我的器件 的主 MCU 向 CC3235发送"AT+ENTER_LPD"之类的命令、  

    它进入 LPDS 并使用 gpio13将其唤醒。

    有可能吗?

     

    2. CC3235无法正确读取主 MCU 发送的 AT 命令时会出现问题。

    例如、下面是主 MCU 的 RX 日志。 这是主 MCU 发送"AT+wlanget=connection"后来自 CC3235的回波。

    (我通过选中"使用 DMA"测试了这一点、因为尚未通过 GPIO 实现唤醒。)

    [2021-01-01T00:06:21][DBG][WIFI.c:1388][ATRx:49]-]"

    AT+wlanget=conne,
    错误:解析参数,-4
    "]

    这似乎是因为我将 UART_readPolling 更改为 UART_read。

    是否有任何解决方案?

     

    谢谢、

    Calvin

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

    1.是的,您需要自己添加此类命令。  应 使用它  来启用和禁用电源策略。

    您还可以考虑将此命令替换为空闲超时(每次处理 AT 命令时都会重置)、该超时将在到期时启用电源策略。

    2.我不熟悉这个问题。 也许 该应用程序具有延迟来响应导致缓冲区溢出的中断(我相信您可以通过读取 UART 状态来检查此情况)。 您可以尝试处理任务优先级(我不确定设计示例时是否考虑了此用例)。 您还可以考虑降低波特率或添加硬件流控制(w RTS/CTS)。  

    如果在 AT 命令传输期间禁用电源策略、则可以重新启用轮询模式。  

    BR、

    Kobi

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

    你好、Kobi、

    最好使用计时器。

    我正在尝试通过 GPIO 唤醒。 如何在 SysConfig 中设置 GPIO?

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

    您的电源配置似乎正常(如果 GPIO 仅 用作 LPDS 唤醒源、则无需配置该 GPIO)。

     请使用"功率测量"示例作为参考。

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

    您好、Kobi、

    我通过在计时器回调函数和唤醒 GPIO LPDS 函数中手动进行电源策略控制来解决此问题。

    谢谢!