各位大神好,
我使用TI的UART驱动进行数据透传,数据慢的时候没有问题,当数据大的时候,发生数据丢失的情况。
还有一点比较奇怪的现象:当一包数据传送完毕后(当然丢失了很多数据),再传输下一包的时候,上一包丢失的数据数据又传了过来。
一开始以为是应用层哪个逻辑不对,但是查了好久没有头绪,直到我看到这个函数:
UART_read(uartHandle, &isrRxBuf[0], UART_ISR_BUF_SIZE);
如果我传送的数据大于UART_ISR_BUF_SIZE时,CallBack函数就触发一次,会不会大于UART_ISR_BUF_SIZE的部分就留在底层的Buf中,直到下次有新的数据再来,再次触发CallBack函数,才能再次取出来。
请问,我这么分析对吗?有什么好的解决办法?我想通过RTS来控制UART的数据速度,但是怎实现呢?