Microchip
直播中

何珊

8年用户 183经验值
私信 关注
[问答]

UART未正确检测起始位,不同步

我试图通过PAR24FJ256GB110通过UART接收19200波特和8N1的一些数据。数据以前导码200x16字符开始,后跟一个ASCII字符串:<0x16><0x16><0x16>...<0x16>0x16>NAME,01/00,09:53:222314PIC一直休眠,直到由于第一个0x16,引脚改变中断将其唤醒。它切换到一个更快的时钟并启用UART。不幸的是,UART开始接收0x64字符,如果您查看位模式,就会发现0x16被移位,并且与开始/停止位混淆。在ASCII字符串开始传输之后,它得到一些帧错误,并最终开始正确读取ASCII数据,但是到那时一半的句子丢失。我需要睡觉,因为我的电池供电和传输是一分钟的距离。我如何才能让UART从一开始就正确地识别帧?

回帖(18)

丁亚念

2019-8-27 10:59:45
你必须用0x16作为序言吗?0xFF会更可靠,因为开始位是唯一的低位。否则,在启用UART之前,您将不得不在某种程度上进行比特爆炸式接收以使自己同步。
举报

丁亚念

2019-8-27 11:33:15
如果您在时钟稳定之前启用它,那么任何UART都将是“flakey”的,就在接收数据的中间,字符之间没有暂停。
举报

李昕一

2019-8-27 11:45:58
0xFF工作很好,谢谢。
举报

王玉华

2019-8-27 12:03:48
看一下LIN协议。它支持节点的睡眠和UART。如果睡眠占主导地位的话,LIN风格的唤醒是合适的。这是因为林醒可能需要一段时间。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分