两个串口同时使用的情况下,怎样才能保证不会丢失数据?
串口1在做周期性的发送与接收,串口2接收数据的时间是随机的。怎样才能保证两个串口都能正常使用,
不会出现出错和丢失数据的情况?
[解决办法]
(1) 每个串口的接受和发送都设置一个独立缓冲区FIFO,长度根据具体的应用来定。
(2) 周期性的发送和接受,你发送和接受一帧数据之后,预留一定的时间给主程序去准备和处理数据,应该就不会出现数据的丢失。
(3) 对于串口2的随机性的收发,中断接受发送函数尽量短,接受时,可以先放入对应的缓冲区,接受完毕,设置对应标志,到主程序中判断。如果此时又有数据过来,中断中将其放入下一个FIFO中。理论上设置合适的FIFO长度,数据是不会丢失的。
[解决办法]
两个串口,各有个的buffer(硬件),如果硬件提供双层 buffer,中断程序比较合理(只接收转存数据),应该没有问题,
当然,再能从协议上保证那最好
[解决办法]
1楼都说了,支持。
原则就是中断服务尽量短。
用FIFO管理是非常有效的手段。
[解决办法]