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.

[参考译文] CC2652P:检测来自 Z-Stack 的 I/O 状态变化

Guru**** 2460850 points
Other Parts Discussed in Thread: CCSTUDIO, Z-STACK, CC2652P, ENERGYTRACE

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1256626/cc2652p-detect-i-o-state-change-from-z-stack

器件型号:CC2652P
主题中讨论的其他器件:Z-STACK、CCStudio、 ENERGYTRACELAUNCHXL-CC1352P1

我已导入并修改 zed_sw 应用程序、如下:添加了 z_power_test、添加了 power_test_poll_ACK、使用了 CUI_disable、使用了 xBOARD_DISPLAY_USE_UART、优化设置为3、在0dBm 下无线电设置为600ms、使用 POWER_SOURCE_BATTERY。 可实现10uA 的电流。  现在已经足够好了。 自动网络连接工作正常。

我想做一件简单的事情。 ZigBee 终端设备具有某种按钮类型(打开或关闭)的 I/O 可处理。 功耗至关重要、目的是尽可能降低开销。

浏览完文档和线程之后、似乎 需要一些建议:

1.我看到 hal_key.c 应该有 HalKeyExitSleep ()在一个旧的论坛条目-不确定这是否仍然存在和/或相关。 如果是、那么问题是如何导入该 文件、然后确保执行针对按键导致退出 ZigBee 睡眠时所做的一些代码。

2.使用传感器控制器可能是 一种替代方法,尽管尚不清楚如何在触发后中断 Z-Stack 睡眠。

3、我真的想做什么(不会增加功耗超过绝对必要,而且比那些更便宜):

a)接收有关按钮状态更改的通知、并向控制器发送消息、然后重新进入睡眠状态。 通过添加的线程轻松完成、但价格昂贵。 或

b)每次 ZigBee 以轮询速率(60000 ms)唤醒时检查按钮状态、然后根据最近一次已知的情况测试当前按钮状态、如果有变化、则向控制器发送消息(延迟是可以的)。 理想情况下、在不修改 Z-Stack 代码的情况下、只需通过回调或类似操作即可。 这感觉最高效、但不确定如何向网络周期添加一些额外的代码。 有可能吗? 或

c)使用传感器控制器、根据按钮变化设置变量、唤醒 Z-Stack... 同样的情况:需要另一个线程和信标(a)或者添加一些要在 ZigBee 线程中执行的代码(b)。

问题是功耗。 只要我再添加一个线程即可获取按钮回调(例如10行代码)、10uA 就会变为500uA、从而将电池寿命缩短到无法使用的水平。  

摘要:如何实施具有1-2个按钮的开关、以便在向控制器发送偶尔的打开/关闭消息时、像每天5-10次一样消耗参考文档中提到的功率?

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

    实际上、zed_sw 实现 BTN-1并使用中断、您可以参考它的实现。

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

    谢谢你的答复。

    遗憾的是、这对功耗问题没有帮助。

    参考代码部分是 CUI 的一部分、为了更接近基准功耗、需要禁用该部分。 以任何形式再添加一个事件循环来处理 I/O 状态更改会显著增加;无论是回调还是定期检查。

    在检查传入消息的 Z-Stack 事件循环之后、最好的方式是添加要执行的代码-所以不需要其他事件循环或从睡眠中唤醒?

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

    Z-Stack 事件循环应仅由计时器事件或中断服务触发、以便节省功耗。

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

    您好、Sandor、

    感谢您参考 《Z-Stack 用户指南》的电源配置部分。  即使在使用 cui_disable 来移除开销后、您也应该能够提取 zcl_sampleapps_ui.c 中与 CONFIG_BTN_LEFT/ RIGHT 相关的段以及 按钮 TI 驱动程序。  通过这种方法、您将能够恢复这个特定的 GPIO 功能、同时保持 LED/UART 功能处于禁用状态。  您不应考虑  hal_key.c、因为它涉及弃用的解决方案实现。  使用此选项仍 可实现与您之前观察到的功耗数几乎相同的结果。

    此致、
    瑞安

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

    您好、Ryan、

    我很包容。 我对 CCStudio 12.2.0执行的所有操作:

    -导入 zed_sw

    - Open zed_sw.syscfg -> Z-Stack/电源管理全部到60000并将器件切换到 CC2652P1FSIP (我们的芯片是 CC2652P1)、开发环境发生了一些传输

    -设置 Build / Arm 编译器/优化为3

    -设置预定义符号: xBOARD_DISPLAY_USE_UART, CUI_DISABLE , Z_POWER_TEST , POWER_TEST_POLL_ACK

    - in zcl_samplesw_data.c set zclsample.c 设置 Sw_Power = prophe_source_battery;

    -构建项目

    -退出 CCSTUDIO、断开连接的 XDS-110

    -已重新连接 XDS-110并从 Flash Programmer 中选择2:XDS-110下的 CC2652P

    - CC26XX/CC13XX 强制批量擦除

    -选择.out 文件并上传至 CC2652P、验证:回读->成功!

    - XDS-110弹出/未加电、从 Flash Programmer 2退出、重新加载了 CCStudio

    -已删除 TMS/TCK 后、将 XDS-110与 CC2652P 重新连接

    -使用 CR2032和 AA 电池运行 EnergyTrace 并运行5分钟。 CR2032结果为14天、AA 电池寿命为1年零1个月。

    -我按照 CUI_DISABLE 中的示例添加了按钮处理程序,并重新测试。 CR2032结果为14天、AA 电池寿命为3个月。

    为什么功耗高于正常水平是否存在一些硬件设计问题、或者无论如何都会产生这样的结果?


    我记得看到很多人对 CC13XX/CC26XX 的功耗有问题-阅读大多数论坛帖子-我不记得有任何愉快的"是的、它已得到解决"之类的回答。 我是否应该只从其他制造商订购开发套件-因为似乎没有解决方案?

    谢谢!

    桑多尔

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

    该问题可能就是您要开始使用的示例、因为根据 迁移指南、LAUNCHXL-CC1352P1应该是 CC2652P1的开发基础。  您可以评估 gpiostandby 示例以确认您是否正确评估了 EnergyTrace、或使用独立的功率分析仪或万用表设备来测量电流消耗。  请以毫安或微安为单位说明您的数字、如果正确设置了工程和硬件、则 zed_sw 或 gpiostandby 都应该是~ 1微安。

    此致、
    瑞安