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.

[参考译文] CC2651R3SIPA:CC2651R3SIPA 上关断模式下的 GPIO 唤醒行为

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1519782/cc2651r3sipa-gpio-wakeup-behavior-in-shutdown-mode-on-cc2651r3sipa

器件型号:CC2651R3SIPA

工具/软件:

尊敬的 TI 支持部门:

我使用的是 CC2651R3SIPA、对基于 GPIO 的从 SHUTDOWN 模式唤醒有疑问。

我们已将两个 GPIO 引脚配置为唤醒源:

  • 容量 :高电平有效

  • 功能 :低电平有效

当单独测试每个唤醒源时、系统会正确地从关断状态唤醒。 但是、我们观察到以下意外行为:

  1. 如果器件在时进入 SHUTDOWN 模式 功能 保持低电平 (ACTIVE)、并保持此状态、切换 容量 会从低到高 不会 触发唤醒。

  2. 同样、如果器件在以下情况下进入 SHUTDOWN 模式 容量 保持高电平 (ACTIVE)、并保持此状态、切换 功能 会从高电平变为低电平 不会 触发唤醒。

  3. 如果我们首先使已经有效的引脚 (FUNC 或 CHARGE) 返回到其无效状态、然后切换另一个引脚以生成唤醒边沿、则系统会正确唤醒。

根据这种行为、如果一个 GPIO 引脚在进入 SHUTDOWN 模式时已经处于活动状态(并保持活动状态)、则另一个引脚的唤醒边沿会被忽略。

这种行为是否符合器件规格?
如果是、您能否提供使用多个 GPIO 作为从 SHUTDOWN 状态唤醒的源的指导或最佳实践?

~我的代码~

GPIO_setConfig (CONFIG_GPIO_FUNC_L、GPIO_CFG_IN_PU |GPIO_CFG_SHUTDOWN_WAKE_LOW);
GPIO_setConfig (CONFIG_GPIO_CHST_L、GPIO_CFG_IN_PD |GPIO_CFG_SHUTDOWN_WAKE_HIGH);

~寄存器值~Ω
  FUNCpin 寄存器

  CHARGEpin 寄存器

我随附了我的实施方案和注册屏幕截图以供参考。

此致、
Hiroki Saitoh

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

    嗨、Hiroki、

    我复制了您报告的行为、器件规格对于进入 SHUTDOWN 模式时的活动唤醒引脚的相关内容比较模糊。  我建议您在进入 SHUTDOWN 模式之前评估引脚状态、以确定它对两个引脚是否有效、并考虑反转 ACTIVE 引脚的唤醒电平、或等待两个引脚都处于非活动状态、然后再最终实现 SHUTDOWN 模式。

    此致、
    Ryan

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

    尊敬的 Ryan:

    感谢您的确认。

    只是为了确认我的理解:
    您提到、规范中未明确定义在唤醒引脚已处于活动状态时进入 SHUTDOWN 模式时的行为。

    因此、没有特定或建议的权变措施、这不被视为我们的实现中的错误。
    相反、开发人员需要实施一种适合其用例的策略、例如在关断之前检查引脚状态或更改唤醒条件逻辑。

    我的理解是否正确?

    此致、
    Hiroki Saitoh

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

    电源 TI 驱动程序使用 Power_shutdown、最终调用 SysCtrlShutdownWithAbort 、它具有基于有效唤醒引脚的关断中止条件、但它具有应用程序可能未遵守的先决条件要求。  因此、这进一步表明您是正确的、因为开发人员应实施一种应用策略来在关断条件之前处理活动唤醒引脚。

    此致、
    Ryan

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

    尊敬的 Ryan:

    感谢您发送编修。
    我已经查看了您分享的有关的文档链接SysCtrlShutdownWithAbort()。 根据说明、在调用此函数之前、应用程序必须同时使用IOCIOShutdownSet()和配置 IOIOCIOIntSet()、并使用PRCMPowerDomainOn()和启用外围电源域PRCMPeripheralRunEnable()

    我遵循了这些说明并相应地实施了设置、但遗憾的是、行为没有改变。

    我有几个问题来确认我的理解:

    1. 从 SHUTDOWN 模式唤醒的序列是否会根据锁存唤醒事件的某些寄存器值的变化启动?
      如果是、您能否告诉我哪个寄存器保存此唤醒事件并触发关断唤醒序列?

    2. 我认为从待机状态唤醒的机制与关断状态唤醒的机制不同。
      您能否说明或提供从 SHUTDOWN 模式唤醒的详细序列?
      如果任何文档或参考资料中对此进行了介绍、如果您能分享这些链接、我将不胜感激。

    非常感谢您的支持。
    Hiroki Saitoh

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

    我应该已经指定、附加代码最多会允许 API 拒绝关断请求、而不是更改关断行为。

    我建议您查看第 7.6.4 节“待机 模式“和“7.6.5 关断模式 “、或者查看 TRM 与中的 Power_sleep 和 Power_shutdown API 源 \source\ti\drivers\power\PowerCC26X2.c 来解决您的问题。

    此致、
    Ryan

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

    尊敬的 Ryan:
    非常感谢。

    在您之前的响应中、您提到了唤醒引脚已处于活动状态时的关断行为有点模糊。
    为了澄清这一点、我想确认以下几点:

    如果器件在其中一个配置的唤醒引脚已处于活动状态时进入 SHUTDOWN 模式、然后激活另一个唤醒引脚、则器件会进入 不会 从 SHUTDOWN 中唤醒。
    了解这是器件规格中的预期行为是否正确?

    此致、
    Hiroki Saitoh

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

    嗨、Hiroki、

    在确认此情况下的预期设备行为之前、我正在内部与其他利益相关者同步。

    此致、
    Ryan

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

    您好、Ryan、
    希望您做得好。

    只是想仔细观察我们前面讨论过的条件下的预期器件行为。
    您的内部讨论是否有任何更新?

    提前感谢您的支持。

    此致、
    Hiroki

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

    感谢您的耐心。  我继续等待内部确认、但就我的调试完成而言、我只能假设在“满足所有条件“之前不会开始关闭、我 认为这包括未主动设置关断唤醒引脚。  在 正式声明之前、我仍在寻求内部确认。

    此致、
    Ryan

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

    嗨、Hiroki、

    根据 CC2652R1 TRM的第 7.6.5 节“关断状态“:

    当配置为从 SHUTDOWN 模式唤醒 (IOC:IOFGxx.WU_CFG) 时、IO 焊盘是电平敏感的。 当输入电平与设定电平(WU_CFG - 10:低电平, — 11:高电平)匹配时、焊盘将生成一个内部信号。 如果多个引脚配置为从关断状态唤醒、则必须仔细考虑以允许正确触发唤醒事件。 由于来自 IO 焊盘的信号在内部进行“或“运算以形成一个路由到内部边沿触发块的信号、因此当其中一个输入信号保持有效时、在释放有效输入之前、内部边沿检测块上不会有边沿信号。 换句话说、如果一个引脚保持有效(高电平或低电平,具体取决于配置)、则其他引脚在第一个引脚被释放或变为无效之前不会生成唤醒事件。

    这应该应用于所有 CC26XX TRM、包括  CC2651R3SIPA、相关团队现在已在文档中了解到这种监督。

    此致、
    Ryan

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

    非常感谢。
    您分享的有关 CC2652R1 的 TRM 片段似乎与我在当前设置中遇到的行为非常吻合。

    另外、在您的答复中、您提到“在满足所有条件之前、不会开始关闭。“
    这是否意味着除非所有配置的唤醒源都处于非活动状态、否则器件不会进入 SHUTDOWN 模式?

    在我的实现中、我已经对其进行了相应设置、以便长按开关可触发 MCU 关闭。
    根据此设置、在按住开关时是否不会发生关断的预期行为?

    此致、
    Hiroki

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

    很抱歉您的困惑、感谢您的支持。
    我一直在使用 LED 来确定系统是否进入关机状态。
    然而,我最近意识到 LED 是关闭之前调用Power_shutdown(),
    因此它无法准确指示器件是否实际关断。

    是否有一种简单的方法可以确认Power_shutdown()器件是否真正置于关断模式?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另外、在您的答复中、您提到“在满足所有条件之前、不会开始关闭。“
    这是否意味着除非所有配置的唤醒源都处于非活动状态、否则器件不会进入 SHUTDOWN 模式?

    正确。

    这是否意味着除非所有配置的唤醒源都处于非活动状态、否则器件不会进入 SHUTDOWN 模式?

    我在按住 SHUTDOWN 唤醒引脚的同时调试了一个项目、发现它在 SysCtrlShutdown while 循环中停止。  因此、器件在此状态下不会处于关断状态、它会主动等待活动关断唤醒引脚。

    是否有一种简单的方法来确认是否Power_shutdown()真的将器件置于关闭状态?

    您可以像我所演示的那样调试项目、使用电源分析仪工具测量功耗、或与非关断唤醒 GPIO 交互以确定它们是否处于活动状态(例如,按钮不再执行操作,或者心跳 LED 定期停止切换)。

    此致、
    Ryan

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

    尊敬的 Ryan:

    关于“在满足所有条件之前不会开始关闭“的规范、我在我的设备上执行了一些测量以验证行为。

    当唤醒引脚 (FUNC) 配置为低电平有效且使用内部上拉电阻时、测试了待机和关断模式下的功耗、同时处于工作和非工作状态:

    • 待机模式(唤醒引脚运行): 253 μA

    • 待机模式(唤醒引脚无效): 65 μA

    • 关断模式(唤醒引脚有效): 150 μA

    • 关断模式(唤醒引脚无效): 63 μA

    根据这些结果、即使唤醒引脚处于活动状态、与待机模式相比、关断模式下的电流消耗也会显著下降。 因此、即使唤醒源处于运行状态、器件似乎仍可能进入 SHUTDOWN 模式。

    根据规格、我期望使用该器件 不会 如果任何唤醒源处于活动状态、则进入 SHUTDOWN 模式。
    这是否意味着我的器件 不会 在唤醒引脚处于活动状态的情况下、是否实际上处于关断模式? 或者、无论唤醒引脚状态如何、关断模式都有可能开始?

    请你澄清这一点。

    此致、
    斋藤博树

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

    无论唤醒引脚活动如何、这些测量值都相当高、因为关断模式预计 器件上的 1 μA 功耗小于。  这可能是由于测量方法/工具或测试板上的其他有源器件造成的。

    我认为唤醒引脚激活的关断模式比待机模式的功耗更低、因为所有其他差分外设在关断序列期间都已关闭、但在满足所有条件之前、关断模式不会真正开始。

    此致、
    Ryan

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

    感谢您的答复。 我认为电流消耗较高是因为我使用定制评估板进行测量。
    我将尝试测量 MCU 专门消耗的电流、以确定其贡献。

    此外、我相信我现在对规范有了更好的了解:

    1. 除非、否则器件不会进入 SHUTDOWN 模式 全部 唤醒源处于非活动状态。

    2. 如果唤醒源是 编程 在 SHUTDOWN 期间、即使其他唤醒源变为活动状态、器件也不会唤醒。

    这就是我目前对行为的理解。
    但是、① 点和 ② 点之间似乎存在矛盾。

    如果器件无法进入 SHUTDOWN 模式、除非 全部 唤醒源处于非活动状态、则不应 ② case 2 μ s(唤醒源在关断期间处于活动状态)。
    我的理解是否正确?

    此致、
    斋藤博树

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

    在所有唤醒源处于非活动状态之前、器件不会真正进入 SHUTDOWN、之后在现有 SHUTDOWN 模式期间激活唤醒源将唤醒器件。  因此,没有矛盾。

    此致、
    Ryan

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

    非常感谢。
    根据您解释的行为、除非器件进入 SHUTDOWN 模式、否则器件不会进入 SHUTDOWN 模式 所有唤醒源都处于非活动状态 —我想确认一点:

    根据 TRM、它指出:

    “当其中一个输入信号保持有效时、在释放有效输入之前、内部边沿检测块上不会有边沿信号。“

    但是、如果无法启动 SHUTDOWN 直到所有唤醒源都处于非活动状态 、然后 当任何唤醒源处于活动状态时、绝不应出现正在进行关断的情况

    从这个意义上讲、此 TRM 说明是否涉及理论边沿情况、或者是否存在唤醒源在关断期间可以处于活动状态的实际情况?

    此致、
    斋藤博树

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

    我认为这里有人在争论语义、此时我们最终观察到、在所有唤醒引脚都处于非活动状态之前、关断模式将不会执行(即功耗)或正确运行(即唤醒)。

    此致、
    Ryan

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

    感谢您的澄清。
    我知道、从规格和行为的角度来看、在所有唤醒引脚都处于非活动状态之前、关断模式都无法正常工作。

    感谢你对这一问题的支持和确认。
    此致、
    斋藤博树

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

    抱歉、我想确认最后一件事。

    我要实现的是在用户长按开关时关闭 MCU。
    由于长按是一个用户操作,我希望交换机将在调用后不久释放Power_shutdown().

    此开关也配置为唤醒源。 因此、关断后、再次按下同一开关将唤醒 MCU。

    鉴于、当我调用时Power_shutdown()、唤醒源(开关)仍处于活动状态。

    因此、我的理解是、只有在释放开关后 MCU 才会进入实际的关断状态(即唤醒源变为非活动状态)。

    这种理解是否正确?


    此致、
    斋藤博树

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

    鉴于我们先前的评估、这似乎是正确的说法。

    此致、
    Ryan

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

    再次感谢您的支持。

    我现在知道、根据器件行为、在所有配置的唤醒源变为非活动状态之前、MCU 实际上不会进入 SHUTDOWN 模式。

    在我们的系统中、应用层会调用Power_shutdown()来启动关断。 但是、由于用户行为、可能会Power_shutdown()在一个或多个唤醒源仍处于活动状态时调用。

    我的问题是:

    从 TI 器件规范的角度来看、是否可以保证Power_shutdown()在唤醒源处于活动状态时调用是安全的并且受支持?

    换言之、规范是否正式涵盖了这种情况、我们是否可以依赖系统在内部等待唤醒源变为无效状态、然后再完成到 SHUTDOWN 模式的转换?

    我想确认这是否是有效且受支持的用例、或者我们是否必须在在在Power_shutdown()应用程序级别调用之前始终确保所有唤醒源处于非活动状态。

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

    在未满足所有关断条件的情况下、当前调用 Power_shutdown 并不存在问题、因为只要最终用户知道在满足所有条件之前不会充分利用关断模式及其低功耗优势、就会在电源 TI 驱动程序和器件硬件内处理这种情况。

    此致、
    Ryan