当前位置: 代码迷 >> 嵌入开发 >> 串口-大批量数据收发,该如何解决
  详细解决方案

串口-大批量数据收发,该如何解决

热度:8317   发布时间:2013-02-26 00:00:00.0
串口-大批量数据收发
大家好,小弟目前正在做一个项目,里面涉及到上位机通过串口(RS232)与DSP进行大批量数据的收发,板子上用的通信芯片是MAX3111EEWI,自带一个8-word-deep-receive FIFO,好像不处理的情况下一包数据只能接收16个字节。
之前的程序中数据收发过程为轮询式的,大概过程是这样的:上位机给DSP的数据按包发送,DSP这边一个个依次接收,收到一个赋给另一个变量,而且这样接收的时候最多的时候上位机一次只能发送13、14个字节,再多的话就不稳定了,DSP这边经常收不到或者收不全。
现在的问题是这样的,由于特殊要求上位机与DSP需要进行大批量数据的收发,一次最多可能达到1000多个字节(暂定1041个字节),这样的情况下上面提到的轮询式收发机制已经不能用了,所以想问问各位大侠像这样数据量比较大的时候,一般都用什么样的收发机制,有没有什么更好的办法呢,看看有没有什么思路或者建议,很着急啊,谢谢大家

------解决方案--------------------------------------------------------
通讯的时候,数据肯定是要经过FIFO的,你也说了FIFO大小只有8个字,那也就是16个字节吧。这样一个数据包只能包16个字节是很正常的事情。你所说的之前用的轮询式,我猜测应该是把大体积的数据分割成多个小体积的数据分次发送的意思吧,这样就必须在数据包中标明该数据包包含的小体积数据,在大体积数据中的位置。这样的结构占去一两个字节用于数据位置的说明也是很正常的。
如果你想要一次进行大批量的数据收发,基本上还是要走上面这种轮询式的老路,在函数内分割和整合数据,而你调用函数的时候,看起来就好像一次收发成功的一样。当然这个分割整合的结构怎么搭配,作业完成的信号通知怎么交互,直接影响到整个函数的效率。这也是考验程序员水平的地方
------解决方案--------------------------------------------------------
不明白这是啥意思,不过我也在做一个硬件相关的软件,好多都不懂,在这里转了好长时间了。。。。迷茫。。。。
------解决方案--------------------------------------------------------
事实上,只要你想要做1000字节的大数据包通信,而且由一个函数来完成这个操作。那么你就必须给这个大数据包预留一个FIFO空间出来,这是没有办法的事情。在函数运行的过程中,数据必须要有一个可以依托的空间,这是通信环节中的必然条件。也因此,通信的数据包吞吐能力,实际上就是有你能够给予的FIFO空间大小能力决定的
------解决方案--------------------------------------------------------
探讨
引用:
事实上,只要你想要做1000字节的大数据包通信,而且由一个函数来完成这个操作。那么你就必须给这个大数据包预留一个FIFO空间出来,这是没有办法的事情。在函数运行的过程中,数据必须要有一个可以依托的空间,这是通信环节中的必然条件。也因此,通信的数据包吞吐能力,实际上就是有你能够给予的FIFO空间大小能力决定的


c_rabbit,你好。你这里提到的……

------解决方案--------------------------------------------------------
大包-》分成小包,但到了小包的时候,受硬件条件限制,只能是16个字节。
  相关解决方案