芯片为cc2530 ,协议栈使用的是z-stack 3.0.1.我这边需求是,在低功耗设备里使用串口,串口使用ISR模式。在设备睡眠之前将串口接收器禁用,其他设置不变,并将IO口设置成普通IO模式,之后将RX对应的脚设置成上拉输入,下降沿中断,之后进入睡眠。当接收到串口数据时,通过IO中断唤醒,之后在中断处理函数内将IO口重新设置成UART模式,并将串口接收器使能。具体问题如下:
现在设备正常接收到的串口数据是这样的,先接收一个唤醒字节0xF0,等待1ms再发送正常数据,若80ms内为接收到数据返回,则重发一次唤醒+正常数据。现在问题是,设备能够正常唤醒,但是第一个数据包和重发数据都不能正常接收到,若在这之后,睡眠之前有新的数据包,程序能够正常处理并返回。
问题如下:
1.设备在IO唤醒并重新设置IO口为UART模式之后,串口需要多久才能正常工作?
2.会有哪些原因导致串口接收不到前面两条串口数据?
3.若要保证至少接收到第一条数据的重发数据,需要进行哪些设置?
Alvin Chen:
回复 user4078994:
是的,需要32M晶振。这个没有测试过,你可以自己去试试。
YiKai Chen:
回复 user4078994:
串口正常工作需要32M晶振,如果我沒記錯,我的經驗好像要到200ms才能正常接收
user4078994:
回复 Alvin Chen:
好的,谢谢了