此内容由EEWORLD论坛网友REMY原创,如需转载或用于商业用途需征得作者同意并注明出处
1.什么时候返回0长度数据包
2.Set_Configure 与Get_Cinfigure
3.事务的格式有哪几种,如何切换?四种传输模式由端点决定?
CONTROL/BULI/INTERRUPT/ISOCHRONOUS TRANS,由控制端点进行枚举设备,枚举过程中主机获取设备端点描述符,根据端点描述符的bmAttributes位来确定设备枚举结束后使用何种方式传输数据。(非控制事务的传输切换没看到,主观感觉并没有多大用处)
4.未产生应答信号的原因?
接收设备没有能力接收数据或发送设备没有能力发送数据
5.字符串描述符索引值?
字符串描述符索引值不能重复。字符串索引值为非零时表设备具有该字符串描述符。USB主机通过索引号读取字符串描述符,索引号为0时表语言ID。
6.HID报告描述符设置原则?
参考HID CLASS,HID USAGE TABLE,做出相应报表需要注意的是报告描述符长度在HID类描述符里设置,长度一定要统一,不然设备枚举将会出错,具体规则解释下面链接给出了比较全面的介绍,但是还存在疑问:1.如何开集合,2.根据描述符的定义如何组合需要返回的数据(虽然在HID类说明手册58页给出示例,但是还有点摸不着头脑,我自己用CH559做了个测试但是用BUSHOUND抓包出现乱码,准确的说不是乱码,只是数据是什么我不能解析)?
7.设备类、子类协议该如何定义?
分层看,在设备描述符里可以定义通信设备类(可在接口描述符里定义)集线器类个人健康设备类…而在配置描述符中可以配置该设备支持那些接口,并由此可接着定义下面的接口描述符,由接口描述符提出该接口用的是何种协议:HID/MASS STORAGE/??
8.主机如何通过描述符的哪些条目来加载驱动,如何确认已经枚举过的设备而不重新查找INF文件?
9.这个是自己踩坑踩出来的:设备枚举时在非标准请求,0端点返回STALL总线会给设备频繁复位。查了手册发现下段文字能给予解释。(USB2.0协议手册650页)
STALL indicates thata function is unable to transmitor receive data, or that a control pipe request is not supported