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.

[参考译文] CC2640:CC2640在特定时间后休眠和唤醒

Guru**** 2581345 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/592645/cc2640-sleep-and-wakeup-of-cc2640-after-certain-amount-of-time

器件型号:CC2640

您好!

我想将 cc2640设置为睡眠模式、然后它应该会在特定的时间后唤醒。  

您能否为我提供可用于此目的的 API 指南? 测量时间的最佳方法是什么?

正在等待您的回复。

此致

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

    您好、Mabbas、

    尝试使用 Task_sleep (ticks)。 请注意、对讲机将自动确保 BLE 连接保持活动状态、但除此之外、您将处于睡眠状态。

    请注意、您可以使用 Clock_tickPeriod、它的每个节拍周期以微秒为单位。

    此致、
    反叛分子

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

     你好,Rebel,

    感谢您的回复。  

    我希望控制器在几秒钟的广播时间后进入睡眠状态。 然后、它应唤醒几秒钟。  

    可以帮帮我吗?

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

    您好、Mabbas、

    啊、你绝对可以做到这一点-你只需使用 GAPRole API 将 GAPROLE_Adv_enabled 设置为 false。

    控制器不会执行任何操作、因此只需将应用任务置于睡眠状态、整个处理器就会一直保持睡眠状态、直到(假设没有其他任务)您的任务唤醒。

    请注意、在连接时执行此操作不会执行任何操作。 如果您想在连接时关闭控制器、可以执行重置、然后执行上述步骤。 您将失去连接、但控制器将处于睡眠状态。 如果要保持连接、可以增加连接间隔或增加从设备延迟。

    此致、
    反叛分子

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

    我使用以下函数来实现它。

    静态空 clock_callback (UARg 参数)

    uint8_t advertEnabled = false;
    GAPRole_SetParameter (GAPROLE_Adverte_enabled、sizeof (uint8_t)、
    advertEnabled (advertEnabled)(&D);



    void timer_test ()

    Util_constructClock (&periodicClock1、clock_callback、10000、0、false、0x01);
    Util_startClock (周期时钟1);


    静态空 SimpleBLEPeripheral_taskFxn (UARg a0、UARg A1)

    //初始化应用程序
    SimpleBLEPeripheral_init();
    timer_test();
    //应用程序主循环
    对于(;)


    Clock_callback 函数被调用、但我观察到对广播没有影响(未禁用)。

    正在等待您的回复。

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

    小心、不应在 SWI 中执行栈调用。 使用任务间消息发布到应用程序任务、以通过计时器的回调执行调用

    这可能是您没有看到效果的原因。

    此致、
    反叛分子

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如 Rebel 和 SW 开发指南所述、请勿在回调或处理程序函数中进行阻止 API 调用。

    定期进行 ADV 的一种方法是在初始化期间将 gapRole_AddertOffTime 初始化为非零值。

    //在自动恢复广播之前,广播结束后的非活动时间(以秒为单位)持续时间
    //值为零将不会重新启动广播
    //请注意,广播持续时间由可发现模式设置(有限或一般)决定
    //以及 TGAP_GEN_DISC_ADV_MIN 或 TGAP_LIM_ADV_TIMEOUT 的相关 GAP 参数
    uint16_t gapRole_AddertOffTime = 0;

    因此、如果将 TGAP_GEN_DISC_ADV_MIN 设置为30秒、并将 gapRole_AddertTime 设置为15秒。 ADV 将持续30秒、然后进入睡眠模式持续15秒、然后自动恢复 ADV。

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

    您好 

    我尝试了以下操作:

    将 gapRole_AddertOffTime 设置为非零值。 但监听器显示设备根本没有广播。

    我还有 TGAP_GEN_DISC_ADV_MIN 至30秒和 gapRole_AddvertOffTime 至15秒、但监听器仍然没有从器件发出广播。

    正在等待您的回复。