hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1809回复:13

大侠,请教host读写u盘枚举过程中的超时问题

楼主#
更多 发布于:2004-09-23 18:39
我发送的第一个setup包就会超时,包的内容是80,06,0001,0000,1200,其中的1200是经过字节交换的。进入usbXfer经转换后成为0012,然后发送给u盘,返回的结果是每次都是超时。都快把人磨死了,
我用的是12m的有源晶振,没有办法啊,我没有48m的有源晶振,用的方法是把7脚(我的sl811是plcc封装28脚)置1,这样内部就会倍频,成为48mhz,请问超时会是这个原因吗?请指教啊。
如果是的话我就去换有源的48兆晶振。
等候回音
新手上路,各位大侠莫不理睬
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-24 09:31
你发IN令牌没?芯片手册上要求是多少的晶振,你最好按他要求的.

[编辑 -  9/24/04 by  metalwing]
新手上路,请多关照.
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-24 09:41
按手册上说12MHZ应该可以.
新手上路,请多关照.
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-24 10:30
手册上说12m可以,但是是有源晶振,但是我使用无缘的一样可以起振
新手上路,各位大侠莫不理睬
eifire
驱动牛犊
驱动牛犊
  • 注册日期2003-06-10
  • 最后登录2005-12-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-24 10:40
我用的是无源的12M晶体,一样可以。
你的SETUP包是错的,发到usbXfer中不应是0012,而应是1200,低位字了为0x12,应先发。
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-24 10:49
不是吧,在ep0Xfer()中特地执行了unsigned int wLen = WordSwap(setup->wLength);将它转换过来的,难道反而错了?
谢谢指点,我立刻运行试试
新手上路,各位大侠莫不理睬
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-24 10:56
你的SETUP包是错的,发到usbXfer中不应是0012,而应是1200,低位字了为0x12,应先发。

我试过了,不行啊,还是一样超时。
新手上路,各位大侠莫不理睬
eifire
驱动牛犊
驱动牛犊
  • 注册日期2003-06-10
  • 最后登录2005-12-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-24 11:06
我没有用它的ep0xfer,而是直接将数据包(0x80,6,0,1,0,0,0x12,0)写入一缓冲区,然后调用usbxfer。通讯一直是好的。
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-24 11:13
是一样的吧,反正都是发这几个数据过去的,
设置寄存器SL811Write(EP0Status,((endpoint&0x0F)|pid));
SL811Write(EP0Counter,usbaddr);
SL811Write(EP0Address,data0); SL811Write(EP0XferLen,xferLen); SL11Write(IntStatus,INT_CLEAR);
然后      SL811Write(EP0Control,cmd);就发出去了吗?
我的QQ是170153870,我可以看看你的资料吗?
新手上路,各位大侠莫不理睬
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-24 11:34
我用的是无源的12M晶体,一样可以。
你的SETUP包是错的,发到usbXfer中不应是0012,而应是1200,低位字了为0x12,应先发。

你也是把sl811的CM引脚置高电平,使得时钟倍频达到48mhz的吗?
我的电路图如下,这样有问题吗?
附件名称/大小 下载次数 最后更新
2004-09-24_myusb_05.SCH (21KB)  12
新手上路,各位大侠莫不理睬
eifire
驱动牛犊
驱动牛犊
  • 注册日期2003-06-10
  • 最后登录2005-12-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-24 16:56
你的原理图中,USB插座部分的连线与说明有点矛盾。正确的接法是:
 +5V,DATA-,DATA+,地。
 如果DATA-和DATA+接反的话,检测设备的速率可能是反的,因为全速设备接上时DATA-变高,而低速设备接上时DATA+变高。
你的晶振若能起振,则说明接线没有错误。
另外,你的SL811的三个3.3V电源端可以加三个104的电容(0.1u)试试。
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-24 17:57
这个问题应该不存在的,我可以顺利检测到u盘是全速设备。晶振起振是没有任何问题的,而且我已经在3.3v和地之间连接了两个0.1u的电容滤波,也在5v和地之间连了4个0.1u的电容滤波了啊,原理图做的时候没有画上去( :P)我再加一个滤波电容好了。
你的QQ不可以说吗?
新手上路,各位大侠莫不理睬
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-09-25 09:11
你在总线上看命令是否发过去了,如果发过去了,那你的电路一般就没
问题.
你的设备应该是好的设备吧,用他到现成的HOST上试一下,并记下响应
的数据,再到你的HOST上试一下,记下响应数据,比较一下有什么不同.
最好发上来,看一下.
新手上路,请多关照.
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-09-25 11:58
怎么在总线上看命令有没有发出去?
不是写ep0control这个寄存器就可以了吗?我写入的是27,就是发送数据了。
我没有现成的host啊
新手上路,各位大侠莫不理睬
游客

返回顶部