1.介绍
这是我第一次接触USB的HID通信协议,以往基本都是使用串口,这算是一个新的知识,所以也稍微查询了一下资料,也看了一下其他人的测评,大概对HID有了初步的了解,下面就看一下这个流程吧。
2.HID介绍
USB设备描述符-概述
当插入USB设备后,主机会向设备请求各种描述符来识别设备。那什么是设备描述符呢?
Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。
描述符的作用就是通过命令操作作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作。
USB有那些标准描述符?
USB有5种标准描述符:设备描述符 、配置描述符、字符描述符、接口描述符、端点描述符 。
描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。其中可能还会有获取设备序列号,厂商字符串,产品字符串等。
上面是我从别的地方摘过来的,整体大概就是这么一个意思。
3.HID代码简单分析
首先打开【MM32F013x_Lib_Samples_V1.03\MM32F013x_Samples\LibSamples\USB\USB_HID_Suspend】这里面的例程,官方给出的例程已经非常好了,接下来下载坛友提供的HID助手【https://download.eeworld.com.cn/detail/fxyc87/614379】,这个助手功能挺强大的。
打开HID调试工具,可以看到HID整体界面如下图所示,这时候点击查找USB,如果开发板已经下载例程,则列表里会出现如下图红框中的名称,这就是MM的HID设备名称。
接下来运行看一下,可以看到接收速度非常快,这里可以大致的统计一下速度,约为35000字节每秒。
35000字节每秒代表的速率是多少呢,35000X8就等于通信速率,大约为280000bit/s速率还是挺可观的。
最后来看一下代码,也是比较简介的,在while循环中不停的发送数据,所以会一直接收到数据。
引用: bianjianm 发表于 2020-11-20 22:25 不错 不错,我也试下
是啊,这个对于我来说是新东西,你也试试。