|
这几天遇到了一个问题,那就是中断接收数据往外发,如果上一帧数据没有发送完这帧数据就进来,那么就会覆盖数据,导致出错,该如何解决。
看了好多帖子,也有一些方案,感觉不是很好。
主要是两个问题:1 如果数据来了,中断是关的,那么就会导致数据丢失。
2 这帧数据来了,而上一帧数据并没有发送完成导致覆盖,那该怎么办?
我的解决办法是,把接收到的数据存到一个buf里面,然后DMA发送之前,把要发送的数据长度和数据地址赋值给相应的寄存器。当buf满的时候在重头再存,那么这两个问题都会得到解决。至于中间中断代码的处理时间,还待优化。
|
|