圈圈.USB鼠标流程(第3章)

ZC:本篇文章所指页码都是 PDF中的页码

 

1、(P76)按下板子上的复位开关-->程序重新运行-->必须模拟一个USB拔下的动作(ZC:Why?)-->延迟一段时间,以便主机确认设备已经断开连接(ZC:除了延时等待还有别的更好的方式吗?猫死我现在想不到更好的方式[20180317])-->模拟USB插入动作

2、(P80)(主机对设备进行)若干次的挂起/复位操作 --> 主机向设备发送数据 [ (87)主机箱设备发送 8字节的标准设备请求 (通过默认控制端点0发出)(104)获取描述符(设备描述符) ]

3、(P81)读D12的数据缓冲区

    (P84)在端点0中断输出中断函数中调用读取端点缓冲的函数,额外工作:清除中断标志(否则会一直提示中断发生)、清除数据缓冲区(否则就不能在接收数据)(ZC: 有专门的命令...) 等

4、(104)(ZC:设备返回 设备描述符) --> 主机正确收到设备描述符 --> (主机)对总线复位一次-->(主机)发送设置地址的标准请求

5、(106)(ZC:设备接收到上面的设置地址的请求后)设备设置地址-->ZC:注意,这中间没有"USB总线复位"-->主机发送获取设备描述符的请求(说明设置地址操作已经成功了,∵主机已经使用新的地址来发送请求了,若不成功 主机会检测到超时从而复位总线)--> 设备回复 设备描述符相关信息 --> 主机发送请求:获取配置描述符(请求长度为9字节[标准配置描述符],ZC:主机发来的请求包一共是8字节,里面包含的信息是请求9字节的配置描述符)--> 设备返回 配置描述符(包含信息:配置集合长度)--> 主机第二次发送请求:配置描述符 --> 设备返回 配置描述符(配置描述符、借口描述符、累特殊描述符(如果有)、端点描述符 等一起返回 (大集合/配置描述符集合))

6、(114)设备返回了9字节的配置描述符-->ZC:注意,这中间没有"USB总线复位"--> 主机发送 获取字符串描述符的请求

7、(120)ZC:图3.11.1 里面的信息 严重不足啊...需要自己看程序的输出信息了。

  主机获取语言ID --> 主机获取产品序列号 --> 主机再次获取 配置描述符(请求长度为0xFF,∴程序返回了全部的配置描述符)--> 主机再次获取 语言ID和产品描述字符串 --> 追获取设备描述符合配置描述符集合 --> 主机发送设置配置的请求

8、

9、

10、

 

posted @ 2018-03-17 15:40  DanPianJi  阅读(193)  评论(0)    收藏  举报