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.

ZIGBEE低功耗PM2模式的睡眠时间设置

Other Parts Discussed in Thread: CC2530, Z-STACK

我在协议栈中进行了各项设置,经过调试发现CC2530已进入了PM2定时器睡眠模式,但不知道具体怎么设置想要睡眠的时间?

若使用osal_start_timerEx最大只能睡眠65s,我想设置更长时间的睡眠!

另外,经过万用表和示波器测量(串接10欧的电阻),发现睡眠时的功耗达到了5mA,这个电流值太大了,与CC2530说明文档不符!我的测量方法是没有问题的,请问是什么导致了这个大电流的?

  • 数据手册上写的是最小系统的休眠电流1uA

    如果你用Z-stack的话,休眠时间不是你自己定,而是有系统自己设定,每次都是以最近发生的那个osal_timeout作为休眠时间。

  • Ztack中定义的最大定时器睡眠时间是510s,如果睡眠时间不是自己定义的,请问该如何实现最大时间的定时器睡眠呢???谢谢

  • 你好,我想问的是:每次都是以最近发生的那个osal_timeout作为休眠时间,怎么样知道osal_timeout的值是多少?

  • 这个timeout主要分为两类,一类是应用层事件的timeout,另外一类是MAC层事件的timeout,

    应用层的timeout的时间,是在osal_pwrmgr_powerconserve( void )函数中,通过osal_next_timeout();获得的。

    MAC层的timeout时间,是通过halSleep( uint16 osal_timeout )函数里面,通过MAC_PwrNextTimeout();来获得的。

  • 其实在osal_pwrmgr_powerconserve中也是调用了halSleep, 我通过加断点debug发现,每次给halSleep传入的都是300左右,这就导致了unit会不断睡眠和唤醒,这个现象是联网正常的时候才出现的,如果连不到网络,频率会慢一些,不顾依然会不断睡眠唤醒。

    我想知道,如何让一个设备连入网络后,进入长时间睡眠?除非用按键来中断唤醒。

  • 我也想知道 节点在进入网络后,进入深度休眠PM3模式,由按键,或是其他形式的中断来唤醒,比如一些传感器,传感器在搜集完毕数据后给2530中断信号,将2530从PM3模式中唤醒然后将传感器的数据发送到协调器,我看了不少资料,就是没有一个系统的讲解,有说这样能有说那样的,迷惑很久了,希望TI的大大们帮开一个主题将将这个吧

  • 您好,现在我无法知道自己是否进入了PM2模式,现在测得的电流是0.01mA,大概和官方文档里PM2的睡眠电流还有10倍的差距。所以我想请问一下:

    1. 怎么查看系统是否进入了PM2模式

    2. 针对Ztack2.5.1a,从系统正常功耗工作到低功耗PM2工作的具体设置流程是怎么样的。

    希望您能解答一下,谢谢

  • 您好 我也在做zigbee协议栈的低功耗 可是结果电流总在1ma-10ma左右 ,貌似进不去低功耗休眠pm2.想请教下 您是怎么设置的

  • 休眠时间不是可以通过以下三个函数修改吗?

     NLME_SetPollRate(?);//ms
      NLME_SetQueuedPollRate(?);
      NLME_SetResponseRate(?);

  • 你的电路中是否有外围器件,比如LDO 或者LED 之类的

  • 嗯 是的 我发现是有一个led没关掉。。。换了底板后忘了检查led的高低电平驱动了。。。白白浪费了很多时间

    谢谢提醒

  • 进入低功耗休眠需要两步,1:加POWER_SAVING   2:在配置文件中令DRFD_RCVC_ALWAYS_ON=FALSE。完成这两步即可实现PM2。你觉得没进入休眠可能是因为你的休眠时间太短所以你看不到休眠的效果,至于休眠时间,这个是系统决定的,VV大神有详细解释过。

  • 你好W:

              你在http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx这个帖子中说用 ZDApp_StopJoiningCycle( void )让节点停止搜寻网络,可以达到节电的目的,可是我经过测试此时还有8mA的电流,还是挺费电的,如何才能进一步的降低功耗。期盼您的回复,谢谢!

  • 你好W:

              你在http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx这个帖子中说用 ZDApp_StopJoiningCycle( void )让节点停止搜寻网络,可以达到节电的目的,可是我经过测试此时还有8mA的电流,还是挺费电的,如何才能进一步的降低功耗。期盼您的回复,谢谢!

  • 大大们   我也在节能方面遇到一些问题     我让终端连上网后  

    osal_start_timerEx( SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );

    登记一个5S的事件  黄灯 每1S 闪一次  这是 -DPOLL_RATE=1000  每一秒数据请求的,  然后4S 后闪一次, 这是5S的,现在的问题是  我用协调器给终端发数据,终端接收到2次后 就接收不到了   复位后才接收到   ,没找到原因   球TI大神  详解

  • 你需要确认下 在调用这个Stop函数的时候 状态是什么

    devState == DEV_INIT || devState == DEV_NWK_DISC

  • VV 你好!

          一个低功耗的zigbee设备 如果想减低功耗,既要将醒来工作的时间尽量缩短,又要适当的加长睡眠时间(两次醒来之间的间隔)

         如果唤醒周期不变的情况下,

         1. 如何缩短工作周期呢?

         2. 工作中可以从那些项上进行降低功耗呢?

         3. 如何去估算出 从醒来到 睡去的     工作的时间    呢?

  • 通过osal_start_timerEX()函数可以进行休眠吗?

  • 你好!BEACON到下一个BEACON之间,怎么进入休眠状态?

    我的end device 在BEACON到下一个BEACON之间有8mA电流,入网成功后,就进入uA级别的休眠状态。

  • 1,工作周期是跟你的实际应用相关的

    2,代码执行的效率等等,不必要的操作之类的

    3, 附件文档,是测试估算功耗的办法,可以参考下。

  • 休眠后,怎么传输数据,比如A要通过B给C传输数据,B休眠了???

  • 你这是什么理解,首先 协调器  和路由 在需求上是上点的  不考虑节能, 节能是在终端上的,   节能的通讯的前提是   你要知道   协调器 与终端的通信机制,

    比如 协调器A  给终端B 通讯  ,终端B 节能   有个事是5S 的轮询 事件, 也就是5s 唤醒一次,   A 给B 发数据时,B是在唤醒的时候 接收到A的数据

  • 终端节点才有休眠功能,而终端节点只对他的父节点收发数据。只有醒来的时候才会去向他的父节点查询是否有存有他的数据。

  • 你好,能请问一下,如果我的任务休眠时间足够长,但是-DPOLL_RATE=1s,这样节点就会每隔1s询问父节点,那岂不是说我1s就唤醒一次了?所谓的休眠时间足够长没有用?我是新手,求指导,非常感谢

  • poll rate 既然为1 s , 那休眠的周期就是 1s醒来1次 询问他的父节点 是否有属于他的消息!!!

    你的所谓休眠时间足够长   是什么意思?

  • 你好,休眠时间足够长就是假如我现在想要一个任务睡眠10分钟后唤醒,难道-DPOLL_RATE也要设置为10min的值?不然岂不是每次睡眠都会因为-DPOLL_RATE提前唤醒,这样哪里来的我要的睡眠10分钟的效果,不知我表达的是不是清楚了,我已经被这个问题困惑很久了,求各位大大们解惑

  • 启动休眠机制的终端设备,  唤醒有两种形式,

    一种是  用户自己在应用层 上设计 用户的唤醒, 比如你用osal_start_timerEx() 函数定义一个事件。

    另一种就是 Poll rate 时间到了, 底层自动 唤醒 发出data request 到父节点。

    如果一个设备  用户定义了  5s 的任何休眠 周期, 那么 设备5s 后 唤醒 然后进入任务中

    如果此时Poll rate 又设置为1s, 那么它就是每1s 为唤醒一次,  然后到了第5s  即有 Poll rate 的唤醒,又有 任务层的唤醒。

    如果 POll rate 只设置为0, 那么它就只有 5S 唤醒一次的 任务 定时。

  • 你好,太感谢了,我大概有点明白了!想再请问一下,如果像你说的我有一个自定义的5s任务,然后我的poll rate设置为0,这样终端设备还能收到协调器发送过来的数据么?

  • 不能!

    父节点 发给 休眠设备的 信息都会缓存起来, 只有 终端设备 Poll  父节点的时候,  才能获取到这些信息。

    自定义任务 完成的只是 程序上 应用层的逻辑  =====》  “主动” 的 用户逻辑。

    应用层 应该 没有函数可以 实现Poll  rate  的功能

  • 你好

       因为我最近在学习CC2530 睡眠唤醒,有很多困惑,也有你的问题  。。

       我想请教下你, 如果想进入睡眠模式,是不是只要把 几个配置设置一下就行了呢,    不用在应用层再添加程序了吗

       睡眠下,你的电流是怎么测到的呢,用的什么仪器呢,我不知道怎么测工作电流。

       如果你看到了这个问题,希望可以帮助我下。。。非常感谢你

       我的邮箱892781037@qq.com

  • 你好,请问你的这个问题解决了吗,我现在也遇到这个问题,实在无法解决,我就打算换个协议了。如果您愿意回复我,可以加我qq1714040125

  • 请问您解决定时500s的问题了吗,我也是遇到一样的问题,不知道您是否介意教授我一下怎么设置休眠时间500s,是利用类似osal_start_timerEx()这样的函数吗??

  • 您好,请问

    节点在进入网络后,进入深度休眠PM3模式,由外部中断来唤醒,搜集完毕数据后给2530中断信号,将2530从PM3模式中唤醒然后将传感器的数据发送到协调器,请问现在这个方案您解决了吗?有没有好的方式,最近比较迷惑这个

  • 请问问题解决了吗?我也遇到了相同问题

  • 終端設備只要定义POWER_SAVING應該會自動進入sleeping Mode.
  • 你好,我已经设置过了,可是电流仍达到了10mA