阅读:1472回复:3
请教一下关于USB的传送
usb基本上是被动的过程,也基本上是基于中断的,接受中断我可以理解,对于pipe的out过程,PC发给DEVICE后,device就可以得到某个pipe或者端点的接受中断,但是小弟对发送中断不太好理解?是数据刚来就发生了中断还是数据发送完了再来中断?另外,我用busbound调试usb,并没有一个上微机来发in令牌给device要求其发送数据,那么busbound如何获得device送出的数据?我的理解是:仅仅把数据放到device的发送fifo中然后使能端点,如果没有pc发送in令牌,这个数据是发不出去的。那么这个in令牌谁来发出?busbound会发出么?还是由操作系统定时发出?谢谢
|
|
沙发#
发布于:2007-07-18 07:12
一样困扰着我,等待高手回答
|
|
板凳#
发布于:2007-07-19 22:57
这个啊
我能回答一些,现在一般带USB接口的芯片,都可以称之为智能的USB SIE, 他能够完成一些USB协议之间通讯,握手等功能,这部分是不需要耗掉MCU的资源的,只有收到有用的数据,或者有要发的数据才需要MCU参入. 关于BUSHHOLD,具体的工作原理我说不上来,但是他只能抓到有用的传输数据,对与一些包的头啊,未啊,校验啊,令牌,是不能看到,如果要看到数据线上传输的完整的数据,需要借助与硬件,有一种设备CATC,有兴趣去了解哈. |
|
|
地板#
发布于:2007-07-20 13:41
我来回答吧:
1、对于中断传输IN,你的理解是对的,PC端会以一定的间隔发送读请求,对于中断的OUT的,当你把数据送至USB SIE的FIFO中去,并置发送使能。SIE会把数据送到USB BUS上去的。然后发送中断表示传输完成。 2、对于BULK的传输,当然也需要PC上的驱动发出请求,不然数据是送不上去的。当你插上USB设备的时,你能看到一些GET_DESCRIPTOR的请求,这些也需要驱动的支持。可能你看到的是假象,或者是你的驱动中发出的IN请求而不是在你的应用程序中。这样说,你明白了吧。 |
|
|