打印

USB Host是不是一直不停的发IN令牌

[复制链接]
4009|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kokoromi|  楼主 | 2013-5-16 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB输入或者输出数据要发送IN或者OUT令牌,我想问的是,如果主机要输入数据,但是主机并不知道设备的数据什么时候发,并且设备要发送数据还要依赖于主机发送的IN令牌,感觉这样就会导致主机需要连续不断的一直发IN令牌才行啊,否则根本没法接受数据的啊?是不是这样? 如果是这样的话,我感觉在设备枚举完之后主机就得不停的发IN令牌来侦测设备有没有数据发送。USb协议里说总线3ms没没有活动则挂起设备,但按照前面说的,总线永远都不会空闲啊,因为主机一直都在发IN令牌啊,这到底该怎么理解啊?有没有人知道的,说一下啊~ USB这块不明白~

相关帖子

沙发
GZZXB| | 2013-5-16 20:23 | 只看该作者
帮你顶下

使用特权

评论回复
板凳
sinc_mark| | 2013-5-17 13:01 | 只看该作者
我也帮忙顶下,求科普!

使用特权

评论回复
地板
insignal| | 2013-5-17 13:05 | 只看该作者
总线不会空闲的
sof始终在发

host是否需要发in
还需要看device使用的驱动
如果驱动需要读取数据
驱动会告诉usbd
然后总线上会一直发in
直到返回数据 或者驱动超时

使用特权

评论回复
5
kokoromi|  楼主 | 2013-5-17 21:17 | 只看该作者
insignal 发表于 2013-5-17 13:05
总线不会空闲的
sof始终在发

如果SOF始终在发的话,那总线挂起岂不是永远都不会发生了?协议里规定的那个3ms总线没有活动要挂起有啥用呢?
还有,如果说驱动决定是否发IN令牌,那么驱动怎么知道设备什么时候要发数据给Host? 设备发送数据完全是不可预料的啊,感觉主机只有不停地发IN令牌才行啊?

使用特权

评论回复
6
john_lee| | 2013-5-17 22:52 | 只看该作者
kokoromi 发表于 2013-5-17 21:17
如果SOF始终在发的话,那总线挂起岂不是永远都不会发生了?协议里规定的那个3ms总线没有活动要挂起有啥用 ...

对于不知道的设备 IN,比如 CDC 设备,确实需要主机不停地发 IN token,但有两个条件:
1、主机上有程序要使用该设备(打开了设备)。
2、Bulk 传输的 IN(和 OUT),需要在 Isochronous 和 Interrupt 传输完成之后,才能使用剩余的带宽进行传输。

使用特权

评论回复
7
insignal| | 2013-5-18 21:19 | 只看该作者
usb是主从架构
只有host允许,device才能发数据。如果是pc当host,这个host包含了hci以及usbd以及更上层的驱动直至应用。cdc hid键盘鼠标之类的设备之所以不断发in,那是驱动不断在请求in,所以hci才发in。应用只是看不到而已,并不是host不知道要接收数据。

sof可以停发,要么是device自己请求进入suspend,要么就是host强制device进入suspend

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

344

帖子

3

粉丝