USB2.0系列—HID设备(usb2 enhanced host controller)
USB接口是上位机(如电脑)和下位机(如我们自己开发的单片机板子)最常用的通信方式之一。USB有各种不同版本,有USB2.0,USB3.0,USB3.1等等。
USB2.0 又分为Low-Speed,Full-Speed,以及High-Speed。USB2.0 Full-speed理论上支持12Mbits/s,最大的有效数据速率为1.2MBytes/s。在通常的应用场景下,这个速率是足够的,而且支持USB2.0 Full-speed的MCU比较多,如STM32F1系列,MCU设计成本也相对较低。因此,本次只专注于USB2.0 Full-speed的介绍。
物理接口上,USB2.0的通信线路是USB接口上的D+和D-,USB2.0设备接入枚举的终端电阻如下所示:HOST即我们通常意义上的电脑,Device为我们的下位机。(STM32F103系列的上拉电阻需要外接,其他MCU可能会集成进内部)
另外,USB2.0的Device耗电在配置前要小于100mA,配置后不能超过500mA。
USB的数据的传输类型分为4种:控制,中断,批量,以及同步。在本文中讲的HID设备是中断的传输方式。传输速率为1.2Mbyte/s,每次通信的最大Bytes为64位。其实,我们日常生活中接触到很多HID设备,如鼠标,键盘等。
那么,为什么会选择HID设备作为通信方式呢?最主要的原因,HID设备的电脑驱动是通用的,不需要为专门的USB设备装驱动,开发驱动等。我只需要将下位机配置HID设备,电脑将会设别到,然后通过Vendor的方式进行通信即可。
STM32F103有专门的HID库实现了HID设备,这样,我们下位机的开发将方便很多,HID的描述符如下:(有了USB描述符,HOST就会知道设备VID,PID以及基本的数据格式,比如数据传输最高为几位,最低为几位,数值的大小范围,数值是几位的等等)
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END = { /* USER CODE BEGIN 0 */ 0x05, 0x8c, //0x05:USAGE PAGE 0x09, 0x00, //0x09:USAGE 0xA1, 0x00, //0xA1:COLLECTION //下面开始数据配置 0x09, 0x00, //0x09:USAGE 0xA1, 0x00, //0xA1:COLLECTION 0x09, 0x00, //0x09:USAGE 0x15, 0x00, //0x15:LOGICAL MIN 最小数为0x00 0x26, 0xFF, 0x00, //0x26:LOGICAL MAX 最大数为0XFF 0x75, 0x08, //0x75:REPORT SIZE;0x08:8位bit 0x95, 0x40, //0x95:REPORT COUNT;0x40:最大64 bytes传输 0x91, 0x02, //0x91:OUTPUT;0x02:Var(可变量) //上面OUT格式 0x09, 0x00, //0x09:USAGE 0x15, 0x00, //0x15:LOGICAL MIN 0x26, 0xFF, 0x00, //0x26:LOGICAL MAX 0x75, 0x08, //0x75:REPORT SIZE 0x95, 0x40, //0x95:REPORT COUNT 0x81, 0x02, //0x81:INPUT; 0x02:Var(可变量) //上面IN格式 //有两个 COLLECTION,就需要两个END COLLECTION 0xC0, //END COLLECTION /* USER CODE END 0 */ 0xC0 /* END_COLLECTION */ };
上面就是其中一个HID的数据格式配置,确定是可用的,我里面有注释,大概介绍了每个数据含义。
还有设备的VID和PID描述,还是设备名称等,在这里不做介绍,因为这个在STM32F103的HAL库里面已经封装好了,感兴趣可以看一下。
后面文章会介绍STM32F103 HAL库实现USB HID设备。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-3679.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 3月4日|22M/S,V2ray/Clash(小猫咪)/SSR免费节点订阅链接每天更新
- 3月5日|20.2M/S,SSR/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 3月6日|20.1M/S,V2ray/SSR/Clash(小猫咪)免费节点订阅链接每天更新
- 3月1日|19.4M/S,V2ray/Clash(小猫咪)/Shadowrocket(小火箭)免费节点订阅链接每天更新
- 3月2日|21.9M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 3月7日|18M/S,Clash(小猫咪)/V2ray/Shadowrocket(小火箭)免费节点订阅链接每天更新
- 2月27日|21.1M/S,SSR/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 2月26日|22.8M/S,Clash(小猫咪)/SSR/V2ray免费节点订阅链接每天更新
- 3月9日|22.9M/S,Clash(小猫咪)/V2ray/Shadowrocket(小火箭)免费节点订阅链接每天更新
- 3月8日|22.6M/S,Clash(小猫咪)/SSR/V2ray免费节点订阅链接每天更新
最新文章
- 3月24日|22.4M/S,V2ray/Clash(小猫咪)/SSR免费节点订阅链接每天更新
- 3月23日|18.8M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 3月22日|19.8M/S,Clash(小猫咪)/V2ray/SSR免费节点订阅链接每天更新
- 3月21日|22.2M/S,V2ray/Clash(小猫咪)/SSR免费节点订阅链接每天更新
- 3月20日|22.8M/S,V2ray/SSR/Clash(小猫咪)免费节点订阅链接每天更新
- 3月19日|21.1M/S,V2ray/Clash(小猫咪)/SSR免费节点订阅链接每天更新
- 3月18日|18.7M/S,V2ray/Shadowrocket(小火箭)/Clash(小猫咪)免费节点订阅链接每天更新
- 3月17日|20.1M/S,SSR/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 3月16日|18.9M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 3月15日|22.4M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新