测试了官方lanuchpad的rfWsnConcentrator和rfWsnNode的功耗,把LED,按键等外设都关闭了,其电流消耗一直稳定在7mA左右,请问如何将其功耗降低下来?
Viki Shi:
参考这边帖子: e2echina.ti.com/…/435288
Leo Xiong:
按照TI工程师的说法:TIRTOS在所有任务pend后,系统将自动进入idle任务,然后进入低功耗模式。
但是,我把 rfWsnNode 节点关闭,这样 rfWsnConcentrator 就不会接收到包,那么 rfWsnConcentrator 收包任务就会被阻塞,而且我看了确实被pend了,但功耗仍然在 7mA左右???顺便说明一下:rfWsnConcentrator只留了一个收包任务,其他显示任务都关闭了。
Leo Xiong:
回复 Viki Shi:
按照TI工程师的说法:TIRTOS在所有任务pend后,系统将自动进入idle任务,然后进入低功耗模式。
但是,我把 rfWsnNode 节点关闭,这样 rfWsnConcentrator 就不会接收到包,那么 rfWsnConcentrator 收包任务就会被阻塞,而且我看了确实被pend了,但功耗仍然在 7mA左右???顺便说明一下:rfWsnConcentrator只留了一个收包任务,其他显示任务都关闭了。
Viki Shi:
The ConcentratorRadioTask handles the radio protocol. This sets up the EasyLink API and uses it to always wait for packets on a set frequency. When it receives a valid packet, it sends an ACK and then forwards it to the ConcentratorTask.
rfWsnConcentrator会一直等待节点的包,rfWsnNode才会定时进入休眠,功耗测试请用rfWsnNode
Leo Xiong:
回复 Viki Shi:
好吧。但是,rfWsnNode进入休眠后的电流还有1.5mA(一直让任务pend,不发包),这个正常吗?EasyLink rfWsnNode如何达到 rfWakeOnRadioRx 例子的功耗(10uA以下)呢?我们的应用是要求节点实现类似 rfWakeOnRadioRx 的功能。
Leo Xiong:
回复 Leo Xiong:
rfWakeOnRadioRx 没有Long Range 模式, rfWsnNode 可以配置为Long Range 模式,但又实现不了 WOR 功能。。。
Viki Shi:
回复 Leo Xiong:
一般来说,long range下使用wor没有意义,具体解释请参考这边: e2e.ti.com/…/642024
Leo Xiong:
回复 Viki Shi:
但问题是wsn node的功耗一直下不来。lancuhpad开发板,官方原始的wsnnode例程,即使把main函数中的所有用户任务都注释掉运行,还有1mA的电流消耗
Leo Xiong:
回复 Viki Shi:
问题原因找到了:
我们的应用中用到了UART,且要求UART RX随时接收,应此创建了UART任务,在任务循环中,我们通过 UART_Read函数的阻塞模式来接收 UART数据。如下:while (1){UART_read(m_uart_handle, &rx_data, 1);if (m_rx_callback){m_rx_callback(&rx_data, 1);}}只是你们TI的 UART_Read 的阻塞模式有问题,不能阻塞任务。在 UART_Read前加一条等待event的语句(如下),然后再测试功耗就下来了。while (1){/* Wait for event */(void)Event_pend(m_uart_event_handle, 0, 0xFFFFFFFF, BIOS_WAIT_FOREVER);UART_read(m_uart_handle, &rx_data, 1);if (m_rx_callback){m_rx_callback(&rx_data, 1);}}
Viki Shi:
回复 Leo Xiong:
赞,感谢提供反馈