有4个从设备,不停地的通过串口发送数据,4路数据发送到74hc153(4选1多路复用器),主机循环选择其中1路,通过串口接收数据。
主机开启串口接收DMA,另外配置一个二维数组buffer[channel][32],其中channel=0,1,2,3,对应4个从设备。设定每30ms,重新配置DMA的DMA_MemoryBaseAddr。
设想是第1个30ms,选通74hc153的A路,从设备1发送数据,主机DMA自动把数据全部存到buffer[0][ ]里面;下一个30ms内,从设备2的数据全部存到buffer[1][ ]里面;以此类推。
实践的结果是大部分数据都可以正确接收,就是大约有1/10的数据总是漏掉,接收不到。
有没有朋友做过类似的项目?谢谢了。 |