阅读:2798回复:6
急! USB 枚举不成功 (收不到PC的空数据包)
1. PC setup过来 数据: "80 06 00 01 00 00 40 00" 这是请求Device Descriptor.
2. 给Host回复Descriptor: "12 01 10 01 00 00 00 08", 并收到Host的ack了 3.但是没有收到 host的Zero length 数据包, 过段时间 host重发Device Descriptor请求,会重复步骤 1-2 三次, PC显示"无法识别的设备" 请问各位大侠 有可能是什么问题,该如何解决. (用的NS9604 USB chip.) |
|
沙发#
发布于:2007-01-12 21:34
是设备端的驱动
|
|
板凳#
发布于:2007-01-14 17:02
因为你发的数据只有8个字节,是错误的数据包,对于Device Descriptor,设备需要回18个字节。你发这18个字节试试:“12 01 10 01 - ff 00 00 08 45 53 34 12 - 00 01 01 02 00 01”
|
|
地板#
发布于:2007-01-15 09:22
楼上的朋友说得没错,可我曾经在WIND ME 的系统下也试过这样的问题:枚举的时候PC发给设备的第一条命令“80 06 00 01 00 00 40 00”时只给它8个数据,如果你给18个就枚举不成功,第一次给8个字节后PC会重新再发一次同样的命令,此时再给18个字节,整个枚举过程就能完成,不知道是系统问题还是使用的USB IC的不同的问题?
******************************************************************** 义隆 USB IC <1>低速 IC,传输速率1.5MBit/S EM78M612: 16PIN,18PIN,20PIN,24PIN,带有A/D,EEPROM,PWM功能,有EP0和EP1两个端点。 EM78M611: 20PIN,24PIN,40PIN,44PIN(QFP),A/D,EEPROM, PWM功能,有EP0,EP1,EP2三个端点。 <2>全速 IC:传输速率12MBit/S EM78M680: 20PIN,24PIN,40PIN,40PIN(QFP),A/D,EEPROM, PWM功能,有5个端点。 主要应用于: 1: USB和并口/PS2的转换 2: USB 密码锁/小U盘 3: USB无线激光鼠标笔发射/接收 4: USB 无线鼠标、键盘 5: 电脑多媒体软件遥控器/接收器 6: USB摇杆/玩具飞机模拟遥控器 7: USB SKYPE电话 8: USB网络彩灯 9: USB按摩器/计步器 10:USB网卡/USB声卡/USB喇叭 11: 运动器材与电脑通信设备 12:U盘,读卡器等数据速度传输要求比较快的产品 我司是台湾义隆单片机的一级代理商,集销售和开发于一体,我USB部门拥有多位经验丰富的USB硬件开发工程师和电脑端USB驱动,应用程序软件开发工程师。能根据客户不同产品的功能选用信价比最好的IC,并在短周期内完成客户的方案! 欢迎大家来电洽谈! ********************************** 深圳广硕电子 USB开发部 联系人:吴先生 TEL:0755-83762428 EMAIL:HLXYWSS@163.COM ADDRESS:深圳市福田区华强北路赛格科技园4栋中12D ********************************** |
|
地下室#
发布于:2007-01-15 09:54
似乎。。host只会发送ACK(已经表示收到了数据)
不会发送Zero length的数序包 谢谢。。 ![]() |
|
5楼#
发布于:2007-01-16 19:50
先顶起,慢慢学习一下。
|
|
6楼#
发布于:2007-01-18 14:11
枚举的过程3步曲如下:
1.pc->usb function: SETUP packet(eg: get device descriptor). 2.pc->usb function: pc send IN packet, usb funciton back 18 bytes data. 3.pc->usb function: pc send OUT packet, usb functio response zero length packet. 所以,你的问题在于是否收到out packet. 解决方法是重点检查你的usb register中out包接收命令是否已经打开,或者是否将out数据准备好了,其工作方式依芯片不同而不同. 至于楼上说到先发8个数据的目的, 是host为了得到这个数据包的大小(usb function数据包的第1个字节(比如0x12)), 一般host不对这个包进行结构分析.等到下一setup包,pc就会要求usb function传输指定字节(0x12)数据. |
|