请教各位,处于功耗考虑,我想让cc2530处于休眠中,串口收到数据时再唤醒。请问该如何实现这个功能?
Viki Shi:
如果收数据是一个定时事件,即每隔一段时间接收一次,这个时间是固定的,那可以通过睡眠定时器唤醒;如果选择更省电的PM3模式,则需要中断唤醒
yin tony:
回复 Viki Shi:
请问在Z-stack下,怎么设置中断唤醒啊?需要调用什么函数?
yin tony:
回复 Susan Yang:
谢谢!
zhibin wang:
回复 Susan Yang:
Susan Yang 你好:
我也遇到了同样的问题,想使用IO进行中断唤醒。你给的链接打不开了。
请问是在Z-Stack的按键处理函数中调用唤醒的函数就可以了么?调用什么函数呢?
感激不尽!
user4796768:
回复 Susan Yang:
你好,Susan Yang!我最近也遇到了同样的问题:串口中断唤醒模块, 看到你发的链接www.61ic.com/…/51623.html ,我打不开,不知道还有其他什么方法,谢谢!
YiKai Chen:
回复 user4796768:
基本上,你要用另一個IO去喚醒cc2530,串口中断是無法唤醒cc2530的
user4796768:
回复 YiKai Chen:
我试过将P0_4引脚连接到UART口的RX上,通过串口发送数据,P0_4产生中断来唤醒模块,具体这样实现的
HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
{HAL_ENTER_ISR();
if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT){//PCON = 0x00;osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
CLKCONCMD &= ~0x40;//设置系统时钟源为32MHZ晶振while(CLKCONSTA & 0x40);//等待晶振稳定为32MCLKCONCMD &= ~0x47;//设置系统主时钟频率为32MHZ
}
/*Clear the CPU interrupt flag for Port_0PxIFG has to be cleared before PxIF*/HAL_KEY_SW_6_PXIFG = 0;HAL_KEY_CPU_PORT_0_IF = 0;CLEAR_SLEEP_MODE();HAL_EXIT_ISR();
}
但是这样还是不能去读取数据,不知道是什么原因?
YiKai Chen:
回复 user4796768:
但是这样还是不能去读取数据,不知道是什么原因?CC2530有被喚醒嘛?怎樣不能去读取数据?
xiuqiang chen:
回复 YiKai Chen:
串口不另选引脚也是可以唤醒的,uart0为例。配置P0_2中断模式(注意配置为外设,不是通用引脚),中断函数内设置为外接电源(不睡眠),接收串口数据并处理,处理完后设置为电池供电(进入睡眠)。期间不用更换P0_2引脚的配置,P0-2既能触发中断又能接收串口数据(该方法参考论坛chen_lei的指导,在次表示感谢)。该用法已经过测试,不完美之处是只要给zigbee(P0_2)发送6个以上字符,就能唤醒zigbee;只有zigbee认为有效的数据处理完后才能恢复睡眠。如果zigbee接收到6个字符以上的无效数据,zigbee将一直处于唤醒状态,直到接收到下一个有效串口数据才能恢复睡眠状态。欢迎大家一起探讨好的解决方法。