郁闷,ISP1362搞不定...

[复制链接]
5364|20
 楼主| computer00 发表于 2007-8-22 01:46 | 显示全部楼层 |阅读模式
可以收到out包,并且也正确,然后我返回设备描述符,但是似乎主机并未收到...<br /><br />以前在2000操作系统上,在BUS&nbsp;HOUND中,没有设置地址也是可以看到数据传输的,现在到了xp,<br />似乎只有等到设置了地址之后,才能看到数据传输了,郁闷...又没有相关仪器,没办法跟踪啊...<br /><br />哪位朋友做过ISP1362或者ISP1181的来说说,需要注意哪些地方啊?
 楼主| computer00 发表于 2007-8-22 08:51 | 显示全部楼层

晕...没人回,偶顶上去...

  
 楼主| computer00 发表于 2007-8-23 09:07 | 显示全部楼层

有点进展了...昨晚弄到4点多,但是还是没搞定,倒塌...

有点进展,发现原来自己把ack&nbsp;setup和clear&nbsp;buffer的顺序搞反了,因此一直不通.<br />但是现在还是不通,但至少已经知道以前不通是有原因的,继续再调调或许就可以了,
 楼主| computer00 发表于 2007-8-23 16:42 | 显示全部楼层

还是没搞定...不过又有点进展了,

已经收到设置地址的包了,但是不知道哪搞错了,获取描述符和设置地址的包都变成不是setup包了,结果...还得继续调试,麻烦。
gooog 发表于 2007-8-23 17:27 | 显示全部楼层

向zlg借一个工具,呵呵

  
doob 发表于 2007-8-23 20:01 | 显示全部楼层

借个usb分析仪,呵呵

  
 楼主| computer00 发表于 2007-8-24 00:25 | 显示全部楼层

倒...哪有那么容易借到的呀,还是自己慢慢试吧...

  
古道热肠 发表于 2007-8-24 11:27 | 显示全部楼层

没有仪器用串口发监视信息呀

&nbsp;&nbsp;&nbsp;&nbsp;过去搞D12时都用串口输出USB通讯的内容。好象PC也能蛮能忍受USB设备的等待的,往串口走趟,回头再来处理USB,它也照认。
 楼主| computer00 发表于 2007-8-24 16:14 | 显示全部楼层

哎……用串口看了,我将数据返回给主机,但是主机好象没

都不知道哪错了
 楼主| computer00 发表于 2007-8-25 01:22 | 显示全部楼层

终于取得了突破性进展...哈哈~~~庆祝一下~~~

我将设置地址和返回0长度的数据包搞反了...<br /><br />本来,是要先用地址0返回一个0长度的状态包,然后设备才能使用新地址.<br />所以在我的程序中,我就先返回了0长度的状态包,再来写地址寄存器.<br />但是这个过程芯片已经做了...就是说,我要先将地址写到这个寄存器中,<br />然后再来返回0长度的状态包...芯片会等到ACK后,才启用刚刚写入的地址,<br />倒塌了...都怪我看数据手册不仔细,想当然了...值得检讨。
dadodo 发表于 2007-8-25 01:38 | 显示全部楼层

恭喜一下

  
 楼主| computer00 发表于 2007-8-25 02:35 | 显示全部楼层

呵呵,多谢,倒塌睡觉去~~~~~~~

  
平常人 发表于 2007-8-25 09:52 | 显示全部楼层

哈!看样子00不但看数据手册不仔细,而且没有好好研究USB的

这个问题在USB的标准文本中讲得很清楚。<br /><br />请看USB的标准文本的9.2.6.3节和9.4.6节,9.4.6节讲了各个步骤要做什么。
 楼主| computer00 发表于 2007-8-25 10:03 | 显示全部楼层

不会吧...那请问平常人,正确的步骤是怎样呢?

难道不是先返回0长度的状态包,然后等到ACK之后,再来设置新地址吗???
平常人 发表于 2007-8-25 14:24 | 显示全部楼层

没错:SET ADDRESS的新地址是要在状态阶段成功完成后才能启用

注意:在收到status&nbsp;stage的ACK后,需要在2ms内启用新地址。请看下面抄录的USB文本中的9.2.6.3一节的第二段。<br /><br />9.2.6.3&nbsp;Set&nbsp;Address&nbsp;Processing<br />After&nbsp;the&nbsp;reset/resume&nbsp;recovery&nbsp;interval,&nbsp;if&nbsp;a&nbsp;device&nbsp;receives&nbsp;a&nbsp;SetAddress()&nbsp;request,&nbsp;the&nbsp;device&nbsp;must&nbsp;be&nbsp;able&nbsp;to&nbsp;complete&nbsp;processing&nbsp;of&nbsp;the&nbsp;request&nbsp;and&nbsp;be&nbsp;able&nbsp;to&nbsp;successfully&nbsp;complete&nbsp;the&nbsp;Status&nbsp;stage&nbsp;of&nbsp;the&nbsp;request&nbsp;within&nbsp;50&nbsp;ms.&nbsp;In&nbsp;the&nbsp;case&nbsp;of&nbsp;the&nbsp;SetAddress()&nbsp;request,&nbsp;the&nbsp;Status&nbsp;stage&nbsp;successfully&nbsp;completes&nbsp;when&nbsp;the&nbsp;device&nbsp;sends&nbsp;the&nbsp;zero-length&nbsp;Status&nbsp;packet&nbsp;or&nbsp;when&nbsp;the&nbsp;device&nbsp;sees&nbsp;the&nbsp;ACK&nbsp;in&nbsp;response&nbsp;to&nbsp;the&nbsp;Status&nbsp;stage&nbsp;data&nbsp;packet.<br /><br />After&nbsp;successful&nbsp;completion&nbsp;of&nbsp;the&nbsp;Status&nbsp;stage,&nbsp;the&nbsp;device&nbsp;is&nbsp;allowed&nbsp;a&nbsp;SetAddress()&nbsp;recovery&nbsp;interval&nbsp;of&nbsp;2&nbsp;ms.&nbsp;At&nbsp;the&nbsp;end&nbsp;of&nbsp;this&nbsp;interval,&nbsp;the&nbsp;device&nbsp;must&nbsp;be&nbsp;able&nbsp;to&nbsp;accept&nbsp;Setup&nbsp;packets&nbsp;addressed&nbsp;to&nbsp;the&nbsp;new&nbsp;address.&nbsp;Also,&nbsp;at&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;recovery&nbsp;interval,&nbsp;the&nbsp;device&nbsp;must&nbsp;not&nbsp;respond&nbsp;to&nbsp;tokens&nbsp;sent&nbsp;to&nbsp;the&nbsp;old&nbsp;address&nbsp;(unless,&nbsp;of&nbsp;course,&nbsp;the&nbsp;old&nbsp;and&nbsp;new&nbsp;address&nbsp;is&nbsp;the&nbsp;same).<br /><br />00不要紧张,我在13楼说的是你在10楼发言之前忽略了资料上的说明。
doob 发表于 2007-8-25 15:54 | 显示全部楼层

呵呵

圈圈做什么东东啊?<br />要不我也搞一下isp1362,和<br />圈圈学习一下。。
 楼主| computer00 发表于 2007-8-25 16:12 | 显示全部楼层

在做USB MIDI吉他呀,麻烦着呢

恩,看来对协议理解还是没错的,就是先返回状态,然后等它完成再设置地址.<br /><br />倒塌就倒塌在我就直接按照这个顺序去写程序了,这个芯片有个设置地址的指令,<br />指令背后跟的就是地址,我开始以为地址写进去就开始生效拉,没想到它倒考虑<br />得这么周全,要先写进去,然后芯片会等到ACK之后,再来生效...因此这里要把顺序<br />掉转过来,先设置地址,再来发0长度的状态包,之后等着数据传送完毕就行了。<br /><br /><br />我没仔细看这个指令,还另有一个原因,就是因为以前我用过philips的另一个USB<br />芯片,PDIUSBD12,我就是按照先返回状态包,再设置地址来搞的,结果正确了...<br />可能运气好吧,哎.&nbsp;不过,前几天问题不在这里,那时还根本没到设置地址阶段呢,<br />只收到一个请求设备描述符的东东,后来我慢慢调,终于看到有设置地址的指令了,<br />我设置地址后,接下来就没有响应了,我就知道肯定是设置地址这个地方我搞错了,<br />再倒回去把数据手册中关于设置地址这个命令仔细的读了一遍,才发现原来是这么一回<br />事...
doob 发表于 2007-8-25 17:58 | 显示全部楼层

看oo的帖子就是学习,很好!

  
isbit 发表于 2007-8-25 18:19 | 显示全部楼层

ao,芯片的处理方法问题啊

qjy_dali 发表于 2007-8-27 10:57 | 显示全部楼层

建议研究USB的朋友用USB分析仪,呵呵

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

14716

帖子

213

粉丝
快速回复 在线客服 返回列表 返回顶部