1. USB模式:低速-1.5Mb/s,全速-12Mb/s,高速-480Mb/s。
2. 注意并不是符合2.0协议的USB设备就一定支持高速模式。
3. USB的拓扑结构为主从结构,主机叫Host,从机叫Device。
4.USB主机一般包括多个USB主控制器和多个根集线器,然后根集线器下再接USB集线器,然后USB集线器上再接USB设备。
5.一个USB主机下最多可以接127个设备。注意地址0永远是给为初始化的设备用的。
6.每个USB的包都是以同步域开始的,由于同步域是一连串的0,所以在数据线上表现为一连串的脉冲,这样方便设备进行时钟的同步。
7.断点0是每个USB设备都必须要具备的。
8.非0端点必须要在Set Configuration之后才能使用。
9.USB设备有许多的子类,如通信类,显示类,HID类。由于Windows系统自带了HID类设备的驱动程序,所以如果设备为HID类,则不需要自己开发驱动程序,只要设备做成标准的HID设备,然后使用Windows的标准API即可访问USB设备。
10.HID设备HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符,一个接口对应定义一个HID描述符。
11.HID只支持控制和中断传输方式。
12.HID设备必须要有默认的控制管道和一个中断输入端点,中断输出端点是可选。
13.USB的报告描述符规定了该报告的一些信息,那么USB的通讯报告都必须符合报告描述符的要求,比如ID,逻辑最大最小值,长度等,不符合的报告是不能发下去的,当然不符合的报告也不能发上来。
14.在STM32的USB库里,要在usb_prop.c这个函数里设置好USB的接收发送的最大字节,USB包不能超过这个设置的最大值。
15.USB的报告描述符里定义的REPORT_COUNT是指的报告的内容的字节数,注意不包括报告ID。
16.报告描述符必须包含的选项:
Input( Output or Feature ),Usage,UsagePage,LogicalMinimum,Logical Maximum,ReportSize,ReportCount.
16. REPORT_SIZE是表示报告大小(即这个字段的宽度),就是说报告里每个字节的有效宽度,比如REPORT_SIZE为0x01,则报告里的数据每个字节只有一位有效,也就是数据最大值为1
17.BUS Hound工具不能主动读USB设备,他只是捕获数据,必须有另外的程序来对USB设备进行读时,他才能捕获数据。