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.

[参考译文] CC1310:使用电池监控器唤醒 CC1310

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1164091/cc1310-use-battery-monitor-to-wake-up-cc1310

器件型号:CC1310

我的客户希望在 CC1310待机模式下使用电池监控器来检测低电池电量情况、当电压降低50mV 时、电池监控器应唤醒 CC1310以切换 GPIO。

是否有这样的示例? 我从 TRM 中了解到、电池监控器将在电压更新时生成 AON 事件 BATMON_VOLT、但我不确定如何利用该事件唤醒 CPU。

此致、

水阳

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

    您好、Shuyang、

    在 CC1310上、电池电平变化时只有一个事件。 这是您刚才提到的 BATMON_VOLT 事件。 不能仅在电压降低时生成事件。 这是否足以满足客户需求? 即、器件将在电压发生任何变化(至少50mV)时唤醒。

    谢谢、
    尼古拉伊
     

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

    Nikolaj、您好!

    BATMON_VOLT 事件应该足以满足客户的用例、我的问题是何时触发此事件? 如果 CC1310处于待机模式、当电压上升/下降超过50mV 并唤醒 CPU 时、是否会自动触发此事件? 如何判断器件是否从 BATMON_VOLT 唤醒?  

    此致、

    水阳

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

    您好、Shuyang、

    要根据 BATMON_VOLT 事件从待机模式唤醒、可以  使用以下代码将 BATMON_VOLT 设置为 MCU 唤醒可编程事件之一的源:

    AONEventMcuWakeUpSet(AON_EVENT_MCU_WU2, AON_EVENT_BATMON_TEMP);

    请注意、您需要包含 driverlib 中的 aon_event.h。 您还需要确保您使用的唤醒事件不会被系统的其他部分使用。 (我知道 AON_EVENT_MCU_WU0用于 RTC、 AON_EVENT_MCU_WU1用于 IO)

    然后、您应该使用如下所示的代码为 BATMON_VOLT 事件注册回调函数。

    AONEventMcuSet(AON_EVENT_MCU_EVENT0, AON_EVENT_BATMON_VOLT); // Set the event source of AON_PROG0 to AON_EVENT_BATMON_VOLT
    IntRegister(INT_AON_PROG0, INT_AON_PROG0_CallbackFxn);       // Register callback function for AON_PROG0 (which is set to AON_EVENT_BATMON_VOLT)
    IntPendClear(INT_AON_PROG0);
    IntEnable(INT_AON_PROG0);                                    // Enable interrupt for AON_PROG0

    请注意、您需要包含 driverlib 中的 aon_event.h、interrupt.h。

    在回调函数中(在我的示例中名为 INT_AON_PROG0_CallbackFxn)、您需要通过调用 AONBatMonNewBatteryMeasureReady (在 driverlib 中的 aon_batmon.h 中声明)来清除事件。

     

    此致、
    尼古拉伊

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

    Nikolaj、您好!

    非常感谢您的详细回答!

    此致、

    水阳

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

    Nikolaj、您好!

    客户尝试通过  将代码集成到 pinStandby .c 中来使用 BATMON_VOLT、如下所示:

    但它不起作用。 您能否帮助回顾实施情况并提出错误的建议? 谢谢。

    BR、

    水阳

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

    您能解释一下客户看到的症状吗?

    此外、根据我的经验、这在调试时不起作用。 因此、您需要断开调试器。  

    此致、
    尼古拉伊

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

    Nikolaj、您好!

    客户的器件在执行代码后挂起、无论处于调试模式还是脱机运行。

    如果注释掉以下句子、程序运行正常。

    //IntRegister(INT_AON_PROG0, INT_AON_PROG0_CallbackFxn);       // Register callback function for AON_PROG0 (which is set to AON_EVENT_BATMON_VOLT)
    //IntPendClear(INT_AON_PROG0);
    //IntEnable(INT_AON_PROG0);   
    

    此致、

    水阳

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

    Nikolaj、您好!

    客户在 cmd 文件中添加了.vtable_ram :>SRAM,然后它运行正常。 我认为上一个项目中错过了矢量地址。

    感谢您的帮助!

    此致、

    水阳