TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CC2530在PM2,PM3模式下,通过串口唤醒的问题。

各位TI工程师:

大家好!最近在做一个项目,需要CC2530和MCU串口通信,但是只有(RX,TX,VCC,GND)四线连接通信。CC2530需要工作在PM3(未入网时的功耗模式PM2(入网后的低功耗模式)。通过串口来唤醒,目前串口波特率为9600.

基本原理是:在低功耗模式(PM2,PM3)下,串口引脚(P0.2,P0.3切换为外部中断IO),通过串口发送的数据,比如:连续几个0xF0来唤醒,唤醒后切换到串口模式,接收串口数据。

但是结果不是很理想,在PM2模式下,多次发送数据才能唤醒。如果把MCU发送的串口数据头改为F0 00,这样效果要好一些,但是还是有不会唤醒的情况。并且发现在PM3模式下还不能唤醒。

请问各位,有什么好的建议吗?谢谢!

Viki Shi:

低功耗模式下32M晶振关闭,会影响串口使用。建议先用IO中断唤醒系统,然后再进行串口操作

xuezheng su:

回复 Viki Shi:

谢谢你的回复!我的串口中断是如下处理的:
//bool valid=FALSE;if (HAL_KEY_SW_1_PXIFG & HAL_KEY_SW_1_BIT)/* Interrupt Flag has been set */{HAL_KEY_SW_1_PXIFG = ~(HAL_KEY_SW_1_BIT); /* Clear Interrupt Flag *///此三处屏蔽掉后,不能发送串口数据PICTL &= ~(0x01);//Clear the edge bit P0IEN &= ~(0x04);//P0_2 中断禁止IEN1 &= ~(0x20);//端口0 中断禁止//g_keys |= HAL_KEY_SW_1;osal_pwrmgr_task_state( zclSample_TaskID, PWRMGR_HOLD );NLME_SetPollRate(1000 );NLME_SetQueuedPollRate( 100);NLME_SetResponseRate( 100 );osal_start_timerEx( zclSample_TaskID,SAMPLE_USE_ENABLEUART_TIMEOUT_EVT,2000);SLEEPCMD &= 0xfc;SLEEPCMD |= 0;PCON = 0x00;//唤醒P0SEL |= 0x0C;P0DIR &= ~(0xFC);P0DIR |= 0x08;InitUART0();//valid = TRUE;}
请问,这样对吗?求指点!

斌斌有礼:

回复 xuezheng su:

从PM3进入中断,不能立即使用osal_start_timerEx(),你可以先使用osal_set_event()置出一个事件,在这个事件里使用osal_start_timerEx()。

xuezheng su:

回复 斌斌有礼:

谢谢指导!

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC2530在PM2,PM3模式下,通过串口唤醒的问题。
分享到: 更多 (0)