USB的HID协议怎么会这么复杂??
不学不知道,一看吓一跳!前段时间因为工作需要,需要熟悉USB的HID协议,就使用wireshark抓包工具抓取了我们日常工作中用的比较多的一个设备,即USB鼠标与电脑之间的通信协议包,其中电脑为USB Host主机,USB鼠标为Slave从机;抓取协议包后,咋一看,没看明白,怎么会这么复杂?太复杂了!!
通过查资料对数据,逐个字段进行解析,才慢慢找到感觉。
下面就以将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包;
USB鼠标插上后,电脑会识别有USB设备插入,然后会向USB设备请求该设备的一些通用信息,即通过请求设备描述符的报文实现操作;
设备描述符介绍:设备描述符说明了USB设备的通用信息,提供了关于设备、设备的配置以及任何设备所归属的类的信息;USB设备只有一个设备描述符,并且是在设备连接时主机读取到的第一个描述符;设备描述符所含的信息,被主机用来取得设备的额外内容。该报文如下:
主机请求设备的设备描述符的报文解析如下:
这只是所有通信中的一条报文,其实HID协议还有很多报文,涉及类型,请求和设置等操作,下面是截取的一部分报文:
总之,要深入理解和掌握USB的HID协议,肯定得消耗不少脑细胞!!!
涉及到底层通信协议的都很难 weifeng90 发表于 2025-4-9 22:16
涉及到底层通信协议的都很难
确实 任何一个USB底层协议都很复杂的。 USB3300芯片内部逻辑需要单片机支持吗? coody 发表于 2025-4-10 10:26
任何一个USB底层协议都很复杂的。
能吃透的绝对是大神 单片小菜 发表于 2025-4-10 11:04
USB3300芯片内部逻辑需要单片机支持吗?
USB3300是一款USB 2.0高速物理层收发器芯片,其内部逻辑不需要单片机直接参与核心功能运行,但需要外部主控芯片配合才能实现完整的USB通信功能
现在芯片越来越成熟,需要去扒底层代码的机会越来越少。 USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了 Chad1989 发表于 2025-4-10 14:10
现在芯片越来越成熟,需要去扒底层代码的机会越来越少。
是的,芯片集成和封装功能日益强大 jobszheng 发表于 2025-4-10 14:32
USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了 ...
wifi协议是不是也比较复杂? 惭愧了,还没有接触过IEEE 802.11协议 jobszheng 发表于 2025-4-10 14:32
USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了 ...
TCP协议先不谈,网口底层硬件的驱动可比USB的底层硬件驱动复杂太多了 ,,,几乎就是最复杂的外设没有之一 Wxy8030 发表于 2025-4-10 15:25
TCP协议先不谈,网口底层硬件的驱动可比USB的底层硬件驱动复杂太多了 ,,,几乎就是最复杂的外设没有之 ...
阁下,网口底层硬件驱动程序很复杂的主要原因是什么呢? 底层协议不复杂的话没法做到通用啊 zjk103 发表于 2025-4-10 17:12
底层协议不复杂的话没法做到通用啊
有道理,底层协议要适配尽量多的产品才能算的上是通用协议 jobszheng 发表于 2025-4-10 15:13
惭愧了,还没有接触过IEEE 802.11协议
阁下有空研究研究,再写个帖子给大家分享一下{:handshake:} 将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包; kepe 发表于 2025-4-24 14:42
将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包;
是的 hid协议还好吧,算比较简单了
页:
[1]
2