rimrock
驱动小牛
驱动小牛
  • 注册日期2002-10-15
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1786回复:5

bulk mode

楼主#
更多 发布于:2003-03-03 17:06
我想用bulk模式传输数据,从协议上看,bulk的buffer是64字节,我如何传输1k到4k的数据?具体流程是什么样的?
LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-03-03 21:39
每一个包是64字节,但是一次传输(1MS时间片内)是可以有很多包的,因为包尺寸小,所以占用带宽少(或者优先级低),在有别的传输如ISO传输时可能BULK的包的个数会减少,因为必须要保证ISO的带宽。但是在没有别的传输的时候,BULK的效率是非常高的,比如包尺寸为64,在1MS里可能会有17个包一起传输,把带宽基本上全部利用起来,速度非常快。
luckyrex
驱动小牛
驱动小牛
  • 注册日期2002-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分185分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-04 10:35
不知道贴主所说的1k到4k的数据要多长时间内传完。如果只是要传这么多数,不管时间的话,用个循环,多发几次不就可以了。
rimrock
驱动小牛
驱动小牛
  • 注册日期2002-10-15
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-04 13:17
我是想问:用writefile(hd,buffer,4k)来写数据,到usb总线上只能看到64字节的包,在驱动里如何写?还有,再单片机这端,我要一直接收数据直到有一个包为零或包长不到64菜认为这一次写操作完成,对吗?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-04 14:58
在驱动里应该是最多一次可以写64KB到下一层驱动,然后底层驱动把这些数据分批传到硬件。USB芯片里应该有一个专门的寄存器(16位的,最大是64KB)保存每次传输的要传的数据量,你在固件里读这个寄存器得到要传的数据总量,每接收一个包就把计数值减去64,直到收完为止。

一直接收数据直到有一个包为零或包长不到64菜认为这一次写操作完成,对的,你如果不计数的话这样判断也可以。

rimrock
驱动小牛
驱动小牛
  • 注册日期2002-10-15
  • 最后登录2004-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-04 21:57
谢谢楼上的老大,你的解释很清楚。我在研究研究固件的编程方法是如何读数据的。
游客

返回顶部