wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3050回复:15

usb基本问题 - 关键字 带宽,ping,等待,pid,nak,ack (200分)

楼主#
更多 发布于:2004-10-09 08:19
1
我在写usb 主机驱动,协议上说,只当有可获得的带宽时,批传送才会发生。如果USB 有较多的空闲带宽,则批传送发生
地相对频繁,如果空闲带宽较少,可能有很长时间没有批传送发生。
这里的带宽是怎么获得的?

2
在usb2.0中批量传输是不是有个ping的概念? 这个ping 是怎么实现的? 在发送 bulk 传输out 的之前,必须发送ping么?

3
主机发送数据后,是不是应该有个等待时间,如果超过这个时间从机还没有反映就把刚才的数据重发。 这个等待时间怎么确定? 重发是硬件自己就会做,还是需要我们的软件来做。

4
主机,或者是从机收到的数据都是硬件就把数据解析了,我们看到的已经不是usb 封包了,可我想知道这次包的 pid 怎么办? 怎么才能看到封包的pid。

5
主机或者从机怎么才能发送nak,ack 等应答包? 也是硬件做的吧?
接收呢?接收到nak,ack 能不能通知我,接收到的是什么。


问题多了点,各位能多帮帮忙。  先谢了~

我现在用的主机:vt6202 从机:isp1581
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-10-09 14:37
唉,顶一下。

是不是问题描述的不清楚?

pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-09 14:42
用户被禁言,该主题自动屏蔽!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-10-09 16:01
哈哈,难道楼上就是传说中的雪山飞狐 ?

 :D
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-09 16:08
用户被禁言,该主题自动屏蔽!
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-10-09 16:20
呵呵,可别这么说。

多谢帮忙!

 :D

才知道你的名字该怎么念。 哈哈
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-09 16:26
5,都是硬件做的.
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-10-09 16:37
ren 兄isp1581 可不可以通知我到来的bulk传输的握手包是nak 还是ack 。

它好象最多只能把nak 也触发中断。 但这样,我就不能确定,到达的包是nak 还是ack了。




wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2004-10-10 11:44
有必要顶一下了。
freeyoung
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2004-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-10 11:49
我使用的isp1161A1做usbhost也碰到了同样的问题。经常接收数据时得到NAK的反应。需要多次接收才能真正接收到数据。照理说应该是ACK时才有中断的呀。是不是philip的芯片都有这个问题?还是有某些寄存器的设置有问题?
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2004-10-10 14:36
我使用的isp1161A1做usbhost也碰到了同样的问题。经常接收数据时得到NAK的反应。需要多次接收才能真正接收到数据。照理说应该是ACK时才有中断的呀。是不是philip的芯片都有这个问题?还是有某些寄存器的设置有问题?



如果是接收到nak也触发中断,那是寄存器设置的问题。可以设置仅仅ack 时触发中断,也可以设置 ack 和 nak 都触发。

1161我不清楚,1581中有个中断配置寄存器(地址10H)就是设置这个的。

按理说,1161同样也应该有个类似的寄存器。

可能主机和从机不一样吧。 我做的 6202 也没注意到有这样的寄存器。



[编辑 -  10/10/04 by  wdy9927]
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2004-11-29 08:31
结帖了!

虽然有些问题还是不太清楚!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-11-29 09:24
ren 兄isp1581 可不可以通知我到来的bulk传输的握手包是nak 还是ack 。

它好象最多只能把nak 也触发中断。 但这样,我就不能确定,到达的包是nak 还是ack了。




 


这个其实不用区分的,不管是nak还是ack,都代表端点中没有数据了!
也就是说端点是空的,因此你只要收到中断,就可以往端点里写数据
另外我建议你你设置中断寄存器时设成对第一个nak和所有的ack产生中断,这样没出现一个ack之后最多出现一个nak,否则会出现很多的nak,如果这些nak都产生中断你就做不了什么事了,非常频繁。
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2004-11-29 10:09
恩。 是,我试过了,不停的产生中断。

其实我那时候是想能不能想办法把是nak产生的中断,和ack产生的中断分别出来。 但恐怕是不行~

jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-11-30 09:31
分辨不了,不管是nak还是ack,在中断寄存器中都只有一bit表示
只能判断是否有中断,无法判断该中断是nak还是ack,不过有一个不算太好的办法,理论上说在你写满了一个数据包后,第一个收到的是ack,之后的都是nak,不知道这个对你是否有意义,你可以对中断数量记一下数
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2004-11-30 10:28
谢ren 兄!

ren 兄果然够意思!  :D

游客

返回顶部