最近在做CC2541 UART相关工作,我发现Serial-to-BLE Bridge的DEMO CODE里是没有定义POWER_SAVING的。。我想加入睡眠流程。做了如下改动,DMA_PM设置为0,一切设置跟没有定义POWER_SAVING一样,使能DMA和UART接收。然后通过一个IO口中断唤醒芯片(假设称之为MOTION脚),当有UART数据要接收时,set HAL_PWRMGR_HOLD_EVENT事件,禁止睡眠。进入轮询模式。
这样做我发现。手动拉低MOTION脚唤醒MCU,然后再发送没有问题,如果是通过程序控制,在拉低MOTION脚后一段延时后发送数据,数据接收就不正常了,这个延时我设置为8个毫秒一样接收不正常,在我理解,进入中断则MCU已经从睡眠被唤醒,UART接收为何不正常我找不到原因。
希望得到你们的帮助,非常感谢。
Scienve Xie:
UART接收需要等待32MHz晶振稳定才行。会不会是延时不够长。
Barbara Wu:
请问所说的数据接收不正常是指完全收不到数据还是收到错误的数据?
在用程序拉低MOTION脚后,UART口的管脚的状态能否测量?如果能,测量出来的值是否正常?