原创 USB2.0 BULK方式传输造成数据丢失的原因及解决办法

2013-10-21 15:56 3181 27 28 分类: 消费电子

 

1、数据丢失原因:
 
(1)主要原因是Windows不是实时系统,不能保证每次都是准时地完成BULK IN操作,特别是有其他进程运行时(如:笔记本的电源管理、实时杀毒等)。此外如果机器上有其他USB设备,也会造成USB带宽受限引起BULK 传输的实时性不能保证,造成数据丢失。
 
(2)BULK传输要进行CRC校验,一旦发现有错,数据作废,需要重传,但这是实时系统不允许的,当然也就造成数据丢失。
 
(3)Device的数据缓冲区容量不够大,以至于HOST稍有停顿,缓冲区就会溢出,造成数据丢失。
 
(4) 如CY7C68013A数据手册46页图21所示, 在Slave FIFO Asynchronous Write模式, SLWR周期必须 >=120ns,即SLWR频率<=8.3MHz,否则会导致端点FIFO中的数据丢失。
 
2、解决办法:
 
(1)卸载主机中所有影响USB带宽和实时性的软件模块,特别是笔记本的电源管理和杀毒软件,拔掉(卸载)其它USB Devices。
 
(2)加大Device的发送Buffer(例如在数据源于端点之间加个大容量的FIFO,如:IDT72V2103等)和Host的接收Buffer容量, 加大HOST每次BULK传输的总字节数(可减少“微帧”间隔时间)。
 
(3)如果对个别数据出错(是出错,不是丢失!)的要求不是很严格(如用于观测的图像数据,个别数据出错看不出来,但丢失数据就有可能错行,彩色图像还会错色),可改用ISO方式(注意ISO每帧必须是1024字节),即使传输出错(可能是个别数据出错,对视频图像影响不大!)也保留数据,不需重传,尽量保证传输的实时性,减少数据丢失。
 

文章评论1条评论)

登录后参与讨论

用户1406868 2013-10-22 21:17

有点废话,关键数据不搞帧协议?不搞校验?系统实时性不高卸些杀毒就可以了?FIFO片子 是那么容易用在USB上的?楼主大概是没干过啥活的项目经理。
相关推荐阅读
用户1037795 2014-09-29 14:57
高速LVDS接口信号完整性处理实例
  一、系统介绍 EMCCD相机由图像传感器、驱动电路、FPGA(Spartan-3)、LVDS接口和电源等组成。LVDS输出接口使用2片DS92LV1021,每片实现10bit并行数据到...
用户1037795 2014-08-20 14:15
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
  当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图...
用户1037795 2014-08-12 07:50
NiosII程序编译时出现onchip_mem不够问题及解决方法
开发Altera Nios II软件可使用Nios II IDE或 Nios II Software Build Tools for Eclipse(即:Nios II SBT for Eclip...
用户1037795 2014-08-11 15:08
Altera QuartusII及Cyclone IV E使用经验
  1、仅C8L、IC8L、C9L使用1.0V核电压(VCCINT),其它速度的均使用1.2V核电压。 2、对于作为LVDS传输的Bank必须接2.5V的VCCIO,参考数据手册表1-20...
用户1037795 2014-08-07 14:39
Altera FPGA带NiosII内核程序的JTAG下载方法总结
  1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 ...
用户1037795 2014-08-06 10:18
Quratus II中 Nios II 硬件设计工具SOPC Builder与Qsys的区别
  1、 SOPC(System On a Programmable Chip.)即可编程片上系统,SOPC Builder是Quartus II中传统的Nios II 硬件设计工具,可以灵活...
我要评论
1
27
关闭 站长推荐上一条 /2 下一条