我使用接收串口中断来获取数据,其中RX的FIFO等级为7/8. 同时也开启了timeout中断。在正常情况下,数据接收都是正常的,并且我可以通过在中断中增加一个计数器,当timeout中断来了后就可以记录数据包长度。但是当数据包长度为14的倍数时,在最后一个字节接收完后,只触发RX接收中断,而不触发timeout RT中断,这样我就无法判断数据是否接收完毕导致无法知道数据包长度了。。
请问有什么方法可以解决这个问题吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用接收串口中断来获取数据,其中RX的FIFO等级为7/8. 同时也开启了timeout中断。在正常情况下,数据接收都是正常的,并且我可以通过在中断中增加一个计数器,当timeout中断来了后就可以记录数据包长度。但是当数据包长度为14的倍数时,在最后一个字节接收完后,只触发RX接收中断,而不触发timeout RT中断,这样我就无法判断数据是否接收完毕导致无法知道数据包长度了。。
请问有什么方法可以解决这个问题吗?
这个是我手动加的功能,比如其他设备给你发了50个bit的数据,UART将会触发三次RX中断和一次timeout中断。每读一个byte我的cnt就加一,当timeout触发,我就认为cnt值就是数据包长度。这样就能记录最终长度50
但是当其他设备给我发了28个bit,在FIFO第二次达到14个bit触发条件之后,它只触发RX中断,不会触发timeout中断。由于我现在的应用场景作为接收方不知道即将收到多少数据,所以我不能用RX中断来判断当前数据是否结束,我只能通过timeout中断来判断。现在timeout不会触发导致我不知道当前一帧数据包有多少个bit。