swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1709回复:13

大家开发用sl811hs是遇到这样的问题了么

楼主#
更多 发布于:2004-05-24 14:18
我用sl811hs和我自己做得从设备通信
我用的是cypress的程序,我感觉他们的程序是不是有点问题啊?
我的一次发送setup包,我的从设备可以收到。问题的关键在于
我第二次发in包的时候,老是出现timerout或者是stall。因为
descriptor18个字节,而我用的是d12做的从设备,端点0最多支持16个字节,问题的关键是不是在这里呢?
请教大家又没有遇到同样的问题的?
多谢先了。
我已经完成了d12的从设备
大家可以交流
swhit@hit.edu.cn
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-24 18:35
我用sl811hs和我自己做得从设备通信
我用的是cypress的程序,我感觉他们的程序是不是有点问题啊?
我的一次发送setup包,我的从设备可以收到。问题的关键在于
我第二次发in包的时候,老是出现timerout或者是stall。因为
descriptor18个字节,而我用的是d12做的从设备,端点0最多支持16个字节,问题的关键是不是在这里呢?
请教大家又没有遇到同样的问题的?
多谢先了。
我已经完成了d12的从设备
大家可以交流
swhit@hit.edu.cn


你发给我的email已经回了,不知道行不行。本来想这里也回一下,给你增点人气:)但懒得再弄了。
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-24 19:28
你发在那个信箱里了?
是swhit@hit.edu.cn么?
我怎么没有收到?
麻烦你再发一次好么?
多谢先了!
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-24 19:32
这个swhit.student@sina.com信箱
原件没保存:(
收到了吗?

[编辑 -  5/24/04 by  flyhye]
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-24 19:43
哎!
真是倒霉!
这个信箱很久没用了
现在进不去了。
我刚刚更新完我的信信箱。
我还是十分的谢谢你。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-24 19:45
看到了没?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-24 19:48
你可以在给我发一次么?
我就是在第一次发送setup包
然后我的设备还收到了sl811hs发送的setup数据。
并且返回ack。
然后我在发送别的数据包
肯定是timerout!
有的时候也是stall。
拜托了!
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-24 19:55
个人认为你的USB设备枚举过程不对,给你看一下我抓的usb setup起始包:
PID:SETUP  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA0  data:80  06  00  01  00  00  40  00  CRC16:94dd  idle:5
PID:ACK  idle:2e1a
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA1 data:12  01  10  01  00  00  00  08  CRC16:7711  idle:8
PID:ACK  idle:2e16
PID:OUT  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA1 data:CRC16:0000  idle:5
PID:ACK  idle:2e5a
PID:SETUP  ADDR:00  ENDP:00  CRC5:02  idle:3
// 你应该到了这里就……
// 接下来应当设置地址
PID:DATA0  data:00  05  02  00  00  00  00  00  CRC16:16eb  idle:5
PID:ACK  idle:2e1a
// d12响应,请看代码set_address()函数,发一空包响应
PID:IN  ADDR:00  ENDP:00  CRC5:02  idle:3
PID:DATA1 data:CRC16:0000  idle:7
PID:ACK  idle:2e57
// host接收到ACK后再向该地址发setup包
PID:SETUP  ADDR:02  ENDP:00  CRC5:15  idle:3
PID:DATA0  data:80  06  00  01  00  00  12  00  CRC16:f4e0  idle:5
PID:ACK  idle:2e1a
PID:IN  ADDR:02  ENDP:00  CRC5:15  idle:3
PID:DATA1 data:12  01  10  01  00  00  00  08  CRC16:7711  idle:8
PID:ACK  idle:2e17

你的问题应该跟timeout和stall没什么关系,看看是不是我说的这个原因。
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-24 20:13
你说抓到的数据确实对的啊。好像cypress的程序就是这样的思想。你可以留下你的e-mail么?我给你说说我的仔细的情况。我自己做的device可以知道sl811hs发送的数据。开始的时候,我发送的数据是pid setup,80 06 00 01 00 00 18 00,然后我的device里面正好收到了这组数据。不知你有没有用过d12?d12只有在收到一组合法的数据的时候,才产生中断。我的device得到的数据确实是80 06 00 01 00 00 18 00,然后我的device就发送device_descriptor。这有18 byte。我的sl811hs在发送pid in ,这个时候,有时候可以返回ack,大多数的时候返回stall。然后我就读取缓冲区,发现第一个字节确实是0x18。不过接下来的数据好像是错的。然后再发送pid out空包,device就返回timerout错误。我又换了另一种命令方式,先发送set_address的setup包,00 05 02 00 00 00 00 00,我的device也受到了这组数据。可是当我的sl811hs在发送空包的时候,永远得到的是timerout。你用sl811hs的中断了么?
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-24 20:48
你说抓到的数据确实对的啊。好像cypress的程序就是这样的思想。你可以留下你的e-mail么?我给你说说我的仔细的情况。我自己做的device可以知道sl811hs发送的数据。开始的时候,我发送的数据是pid setup,80 06 00 01 00 00 18 00,然后我的device里面正好收到了这组数据。不知你有没有用过d12?d12只有在收到一组合法的数据的时候,才产生中断。我的device得到的数据确实是80 06 00 01 00 00 18 00,然后我的device就发送device_descriptor。这有18 byte。我的sl811hs在发送pid in ,这个时候,有时候可以返回ack,大多数的时候返回stall。然后我就读取缓冲区,发现第一个字节确实是0x18。不过接下来的数据好像是错的。然后再发送pid out空包,device就返回timerout错误。我又换了另一种命令方式,先发送set_address的setup包,00 05 02 00 00 00 00 00,我的device也受到了这组数据。可是当我的sl811hs在发送空包的时候,永远得到的是timerout。你用sl811hs的中断了么?


俺的email:happy_flyhye@hotmail.com
太晚了,要回去吃饭了,你把一些相关的东西发过来看看,咱们再好好商量商量
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-24 20:56
谢谢flyhye。
我可以参考一下你的init
和usbXfer的实现么?
多谢了。
我想我的问题肯定是处在这上面。
我用的cpu不是mcs51。
所以不知道该怎么用中断。
tao_qiang
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-09-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-25 09:06
D12和811我都做过,没又碰到你这种问题,程序我也是用的CPRESS的,没什么问题。你是不是811初始化不对啊?
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-25 10:36
请教tao_qiang
你用sl811hs的时候,是怎么初始化的么?
可以说说么?
不胜感激!
swhit501
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-05-25 10:50
请教tao_qiang
d12把d+1.5k的电阻上拉,我选择的是d12和sl811直接相连。这样sl811hs在speed_detect的时候应该是高速设备了。sl811hs初始化
0x0f中写入0xae,0x05中写入0x08用来reset设备,0x05中写入0x00然后0x06,写入0x61
接入d12后,发现是高速设备
0x0f中写入0xae,0x0e中写入0xe0
0x05中写入0x05
0x03中写入0x50
0x00中写入0x01
这有问题么?
请教了
游客

返回顶部