阅读:1474回复:3
关于in token后数据上传得问题
我想问一下,
控制传输的时候,当pc发一个in token,请求长度为60B,但是设备端由于没来得及有buffer放这些数据或者来不及凑齐这些数据,假设只有30B数据,他会立即发30B数据上去,然后等下一次再收30B发上去吗?还是一定要凑齐满之后才发上去。 我看到一本书上讲的意思,好像是当in 方向的时候,设备发上去的大小可以小于pc请求的大小。那时不是说前者是可以的呢?还请大家指教。 |
|
沙发#
发布于:2007-10-17 21:21
今天做了下试验, 当pc发一个in token,请求长度为60B,但下面我实际只发30B,pc就认为结束了,后面我继续发30B数据,pc也是收不到的。我是用bus hound做的试验。我想了原因,是不是pc收到这样的情况把它作为短包,而短包是作为结束标志的。
另外,今天经过公司同事发现,实际上是设备端先填到usb端点数据,然后pc发了in token后,数据才送到pc上去。这是我们的芯片net2272的datasheet上写的,我不知道是不是其他usb芯片也是这样。很困惑。 |
|
板凳#
发布于:2007-10-19 11:09
这个IN TOKEN是和具体的传输类型实现有关的. 也就是说, 在USB驱动中, 你可以实现接收到多少数据或接收到全部数据应返回它. 比如:HID中GETFEATURE中请求是你必须返回全部要求数据. 但我建议你仔细定义你的通信协议, 返回要求的数据.
|
|
|
地板#
发布于:2007-10-19 22:38
谢谢回答。我还是有点困惑。
不知道你的意思是不是这样的:设备返回的数据可以小于等于pc请求的数据呢? 然后你建议我是要返回正好pc请求的数据。 那如果我返回小于的话,会有什么问题呢? 还有你指的“定义你的通信协议, 返回要求的数据”,是不是就是说考虑这种数据不够的情况 再次感谢 |
|