共2条
1/1 1 跳转至页
ARM7,ISP1581 ARM7+ISP1581高速检测时列举始终不成功
问
我用ARM7+ISP1581,全速模式下已经跑通,列举成功,能正确收发数据。接入设备总线复位后,便有主机发来的高速检测请求中断,但列举不能成功。
FS模式下列举时主机发送的请求按顺序如下:
80 06 01 00 00 00 00 40 00 05 00 01 00 00 00 00
80 06 01 00 00 00 00 12 80 06 02 00 00 00 00 09
80 06 02 00 00 00 00 FF 80 06 03 00 00 00 00 FF
80 06 03 02 04 09 00 FF 80 06 03 00 00 00 00 FF
80 06 03 02 04 09 00 FF 80 06 02 00 00 00 03 E8
00 09 00 01 00 00 00 00 80 06 01 00 00 00 00 12
收到主机发来的高速检测请求中断后的列举过程少FS时的最后三个请求,即在取得string描述符后便不再发送setup请求包。主机这样重复几次后仍然如此,便进入全速列举过程。
我的PCB中D+,D-两根线布得不好,直接飞线后才在全速模式下列举成功的,不知道这对高速的列举有没有影响(高速的列举也是在全速下进行的,所以觉得不太可能是这个问题)。
在全速的成功列举中,我用BusHound仅抓到80 06 02 00 00 00 00 FF,其他都是get status,clear feature,set feature. 用USB Monitor也只能抓到最后三个请求信息get configuration descriptor,set configuration,get device descriptor.
望那位高人指教!多谢! 答 1: 以前做过,很久了 答 2: 小弟入行不久,能给些建议吗? 答 3: 叫列举不大习惯,大家一般都用枚举。get status,clear feature,set feature 这些应该是对根集线器的操作。
你再仔细检查一下枚举过程以及数据,对照协议好好分析一下,看哪里错了没有。我还没搞过USB的HS,所以这个问题也不大清楚。估计是返回的数据错误了。 答 4: 哈哈 是应该叫枚举! 我是参照一个别人的MSP430+ISP1581进行移植的,在他的固件程序中FS和HS只有bulksize设置的不同,FS是64字节,HS是512字节,其他的在固件程序上都一样。我也觉得问题可能有两个:硬件布线的干扰(D+、D-线已经飞线了)、RREF管教的接法(现在接12K电阻后接AGND);固件程序中HS返回值不对,但我用了几个工具都不能完全抓到枚举的信息(用优盘试的时候好象可以抓到大多数信息)。 答 5: :)我用BusHound抓全速枚举成功的时候,就是在那些对根集线器的操作后有个Get Configuration (80 06 02 00 00 00 00 FF),其他的设备描述符都没有抓到。BusHound的Set Command我也感觉用的不太好,没有起到什么分析作用,可能还是自己不太会用吧。 答 6: 枚举都一样的吧最好还是在中断中完成枚举,如果你用os,且如果不是在中断中传输应该要关中断 答 7: :)我用了os,但USB目前是在单任务下跑的,应该没有中断的问题吧
而且我已经在FS下跑通了
FS模式下列举时主机发送的请求按顺序如下:
80 06 01 00 00 00 00 40 00 05 00 01 00 00 00 00
80 06 01 00 00 00 00 12 80 06 02 00 00 00 00 09
80 06 02 00 00 00 00 FF 80 06 03 00 00 00 00 FF
80 06 03 02 04 09 00 FF 80 06 03 00 00 00 00 FF
80 06 03 02 04 09 00 FF 80 06 02 00 00 00 03 E8
00 09 00 01 00 00 00 00 80 06 01 00 00 00 00 12
收到主机发来的高速检测请求中断后的列举过程少FS时的最后三个请求,即在取得string描述符后便不再发送setup请求包。主机这样重复几次后仍然如此,便进入全速列举过程。
我的PCB中D+,D-两根线布得不好,直接飞线后才在全速模式下列举成功的,不知道这对高速的列举有没有影响(高速的列举也是在全速下进行的,所以觉得不太可能是这个问题)。
在全速的成功列举中,我用BusHound仅抓到80 06 02 00 00 00 00 FF,其他都是get status,clear feature,set feature. 用USB Monitor也只能抓到最后三个请求信息get configuration descriptor,set configuration,get device descriptor.
望那位高人指教!多谢! 答 1: 以前做过,很久了 答 2: 小弟入行不久,能给些建议吗? 答 3: 叫列举不大习惯,大家一般都用枚举。get status,clear feature,set feature 这些应该是对根集线器的操作。
你再仔细检查一下枚举过程以及数据,对照协议好好分析一下,看哪里错了没有。我还没搞过USB的HS,所以这个问题也不大清楚。估计是返回的数据错误了。 答 4: 哈哈 是应该叫枚举! 我是参照一个别人的MSP430+ISP1581进行移植的,在他的固件程序中FS和HS只有bulksize设置的不同,FS是64字节,HS是512字节,其他的在固件程序上都一样。我也觉得问题可能有两个:硬件布线的干扰(D+、D-线已经飞线了)、RREF管教的接法(现在接12K电阻后接AGND);固件程序中HS返回值不对,但我用了几个工具都不能完全抓到枚举的信息(用优盘试的时候好象可以抓到大多数信息)。 答 5: :)我用BusHound抓全速枚举成功的时候,就是在那些对根集线器的操作后有个Get Configuration (80 06 02 00 00 00 00 FF),其他的设备描述符都没有抓到。BusHound的Set Command我也感觉用的不太好,没有起到什么分析作用,可能还是自己不太会用吧。 答 6: 枚举都一样的吧最好还是在中断中完成枚举,如果你用os,且如果不是在中断中传输应该要关中断 答 7: :)我用了os,但USB目前是在单任务下跑的,应该没有中断的问题吧
而且我已经在FS下跑通了
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
