dffzh 发表于 2025-4-9 16:04

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

涉及到底层通信协议的都很难

dffzh 发表于 2025-4-10 08:49

weifeng90 发表于 2025-4-9 22:16
涉及到底层通信协议的都很难

确实

coody 发表于 2025-4-10 10:26

任何一个USB底层协议都很复杂的。

单片小菜 发表于 2025-4-10 11:04

USB3300芯片内部逻辑需要单片机支持吗?

dffzh 发表于 2025-4-10 11:21

coody 发表于 2025-4-10 10:26
任何一个USB底层协议都很复杂的。

能吃透的绝对是大神

dffzh 发表于 2025-4-10 11:24

单片小菜 发表于 2025-4-10 11:04
USB3300芯片内部逻辑需要单片机支持吗?
USB3300是一款USB 2.0高速物理层收发器芯片,其内部逻辑不需要单片机直接参与核心功能运行,但需要外部主控芯片配合才能实现完整的USB通信功能

Chad1989 发表于 2025-4-10 14:10

现在芯片越来越成熟,需要去扒底层代码的机会越来越少。

jobszheng 发表于 2025-4-10 14:32

USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了

dffzh 发表于 2025-4-10 15:09

Chad1989 发表于 2025-4-10 14:10
现在芯片越来越成熟,需要去扒底层代码的机会越来越少。

是的,芯片集成和封装功能日益强大

dffzh 发表于 2025-4-10 15:10

jobszheng 发表于 2025-4-10 14:32
USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了 ...

wifi协议是不是也比较复杂?

jobszheng 发表于 2025-4-10 15:13

惭愧了,还没有接触过IEEE 802.11协议

Wxy8030 发表于 2025-4-10 15:25

jobszheng 发表于 2025-4-10 14:32
USB协议非常复杂,另一个非常复杂的是蓝牙协议。
相对而言,TCP/IP协议倒是属于简单的了 ...

TCP协议先不谈,网口底层硬件的驱动可比USB的底层硬件驱动复杂太多了 ,,,几乎就是最复杂的外设没有之一

dffzh 发表于 2025-4-10 16:15

Wxy8030 发表于 2025-4-10 15:25
TCP协议先不谈,网口底层硬件的驱动可比USB的底层硬件驱动复杂太多了 ,,,几乎就是最复杂的外设没有之 ...

阁下,网口底层硬件驱动程序很复杂的主要原因是什么呢?

zjk103 发表于 2025-4-10 17:12

底层协议不复杂的话没法做到通用啊

dffzh 发表于 2025-4-10 17:20

zjk103 发表于 2025-4-10 17:12
底层协议不复杂的话没法做到通用啊
有道理,底层协议要适配尽量多的产品才能算的上是通用协议

dffzh 发表于 2025-4-10 17:22

jobszheng 发表于 2025-4-10 15:13
惭愧了,还没有接触过IEEE 802.11协议

阁下有空研究研究,再写个帖子给大家分享一下{:handshake:}

kepe 发表于 2025-4-24 14:42

将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包;

dffzh 发表于 2025-5-6 16:04

kepe 发表于 2025-4-24 14:42
将USB鼠标插入USB接口后,鼠标和电脑之间的一段通信协议包;

是的

oxlm 发表于 2025-5-9 09:47

hid协议还好吧,算比较简单了
页: [1] 2
查看完整版本: USB的HID协议怎么会这么复杂??