阅读:904回复:1
【求助】怎么才能提高传输速度??我的应用是这样的,usb设备用于采集数据,然后发送到PC。 固件中采用两个缓冲区的方法,一个缓冲区接收的时候另一个用于发送,每传输一次缓冲区互换。每个缓冲区如果填满数据大概是6k byte,一个数据长度为24字节,缓冲区容纳240个数据。 与Pc的通讯采用如下机制:每次传输以PC发送的请求开始,固件收到请求后开始发送数据,端点每次传输最大64字节,因此,在发送开始后,在端点的发送完成中断里面继续发送数据,直到所有数据发送完成。 PC端DLL函数是这样的:发送一个请求(同步方式writefile)后,用异步readfile循环读数据,每次读完数据把数据放到传递来的缓冲区中,直到返回的数据长度不等于64时退出。然后上层的应用程序再循环调用这个DLL函数。 现在的现象是:如果固件每秒钟收到1000个数据,整个传输过程可以顺利的完成,可以通过文件记录看到所有的数据都正确接收了,并且每次读到的缓冲区里面的数据个数大概在20个左右。 当每秒钟接收的数据达到2000个时,就出现了很明显的丢包,大量的数据处理不过来了。 这样算下来,传输速度只有20多K字节每秒,是不是太慢了一点? 我首先觉得是固件处理速度的问题,把固件的总线频率涨到了24M,没什么效果,接着我又把接收数据的功能去掉,只是定时增加缓冲区的索引,还是没效果;最后我甚至把写端点的代码都去掉了,只是告诉端点数据长度而不写,节省单片机的处理时间,但是结果还是差不多。。。 所以我想问一下,是不是我上位机接收数据的方法不合适?还是跟驱动有关?还是其他什么原因? 20多K的速度也实在是太慢了。。。 恳请高手指教! 先谢过了! |
|
沙发#
发布于:2009-01-19 22:58
|
|