CC2530的功耗参数
数据手册参数:
- 主动模式RX(CPU空闲):24mA
- 主动模式TX在1dBm输出功率(CPU空闲):29mA
- 电源模式1(4us唤醒):0.2mA
- 电源模式2(睡眠定时器运行):1uA
- 电源模式3(外部中断):0.4uA
实际测量参数:
- CC2530全速运行Z-Stack Mesh 1.0.0协调器协议栈:26mA
- CC2530全速运行Z-Stack Mesh 1.0.0路由器协议栈:27mA
- CC2530全速运行Z-Stack Mesh 1.0.0终端协议栈(1秒请求一次数据):8mA
- CC2530开启低功耗运行Z-Stack Mesh 1.0.0终端协议栈(2秒请求一次数据):2秒休眠时间为1uA,2秒后唤醒发送一次数据的瞬时电流万用表无法捕捉,理论上为27mA以上。
如何进入低功耗模式
因为协调器设备和路由器设备需要常在线,是无法进入低功耗模式的,所以我们主要讨论如何让终端设备进入低功耗模式。
如何让协议栈进入低功耗模式:
添加预编译选项:POWER_SAVING
默认情况下,Z-stack里终端设备的电源管理功能是关闭的,添加预编译选项“POWER_SAVING”以开启此功能。
在“f8wConfig.cfg”文件里设置:-DRFD_RCVC_ALWAYS_ON=FALSE
这个宏定义表示是否要一直开启射频接收功能,终端协议栈默认选择是FALSE。
设置完这两个选项后,终端设备就可以正常的进入低功耗模式了。
影响低功耗模式的几个参数
1)终端节点会周期性向父节点发送数据请求命令(data request)来询问父节点是否有数据要给自己,此时需要唤醒设备并发送数据。
可以根据自己的项目需求来设置“f8wConfig.cfg”文件里“DPOLL_RATE”改变终端节点询问父节点的间隔时间,单位:ms;时间设置的越长越省电;设置为0则不进行轮询。对于一个不需要接收消息的终端设备,在它加入网络后,可将此参数设置为0
2)终端节点在发出“data request”命令后,会收到父节点的数据指示命令(data indication),然后终端将会以指定速率轮询消息队列,见“Figure 2.11”。
可以通过设置“f8wConfig.cfg”文件里“DQUEUED_POLL_RATE”来设置间隔时间,单位:ms;
3)终端设备在收到数据确认命令(data confirmation)后,就会以指定速率轮询响应消息,这个时间间隔可由“f8wConfig.cfg”文件里“DRESPONSE_POLL_RATE”来设置间隔时间,单位:ms;见“Figure 2.11”。
4)协议栈中只要有事件发生,设备就会从休眠状态中唤醒并处理事件,处理完成后再进入休眠。例如一个低功耗节点利用事件机制1秒钟闪烁一次LED灯,则协议栈将会在事件触发的时候唤醒并处理LED事件,然后再进入休眠。所以在设计低功耗设备的时候要注意应用层事件的应用。
5)关闭协议栈本身自带的硬件轮询事件。查看“hal_drivers.c”文件中的“hal_ProcessEvent”函数可知要关闭协议栈内部的LED轮询事件和KEY轮询事件,在预编译添加:HAL_LED=FALSE 和 HAL_KEY=FALSE。
快速应用
步骤 | 执行项目 |
---|---|
使能低功耗功能 | 添加预编译选项:POWER_SAVING |
关闭射频接收常开功能 | 在“f8wConfig.cfg”文件里设置: -DRFD_RCVC_ALWAYS_ON=FALSE |
设置终端设备轮询速率 | 设置“f8wConfig.cfg”文件里“-DPOLL_RATE” |
设置终端设备队列轮询速率 | 设置“f8wConfig.cfg”文件里“-DQUEUED_POLL_RATE” |
设置终端设备响应轮询速率 | 设置“f8wConfig.cfg”文件里“-DRESPONSE_POLL_RATE” |
关闭协议栈内部LED轮询和KEY轮询 | 在预编译添加: HAL_LED=FALSE 和 HAL_KEY=FALSE |