你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-WBA65RI评测】WireShark分析作为USB HID device设备的包和速度

[复制链接]
北方 发布时间:2025-9-10 10:08

1 NUCLEO-WBA65RI的USB 设备和应用

根据这个图,可以看到NUCLEO-WBA65RI直接从内核引接出了USB口,可以直接访问,这个可以在host也可以在device状态,速度是HS高速USB2.0.

07.JPG

2 USB HID 范例

启动cubeIDE,导入DeviceHID工程

08.JPG

编译并下载到开发板上。

这个代码是展示了在 NUCLEO-WBA65RI 开发板上使用 USBX 协议栈的示例,演示如何开发基于裸机的 USB 设备人机接口(HID)鼠标应用。该应用模拟 USB HID 鼠标设备,代码提供了构建合规 USB HID 鼠标设备所需的所有设备描述符框架及相关类描述符报告。

应用主函数调用 MX_USBX_Device_Init () 初始化 USBX,并在 while 循环中调用 USBX_Device_Process。

应用每 10ms 逐步发送鼠标位置以定制 HID 功能。每 10ms,应用调用 GetPointerData () API 更新鼠标位置(x, y),并通过 ux_device_class_hid_event_set () API 发送报告缓冲区。

连接到 PC 主机时,NUCLEO-WBA65RI 枚举为 USB HID 鼠标设备。枚举阶段,设备必须向主机提供请求的描述符(设备描述符、配置描述符、字符串描述符),供主机驱动识别设备功能。枚举成功后,按下用户按钮,设备会发送 HID 报告,每次报告应使主机端鼠标光标移动一步。

鼠标移动逻辑的代码如下,可以根据自己的设计进行修改,

static VOID GetPointerData(UX_SLAVE_CLASS_HID_EVENT *hid_event)
{
  static int8_t counter = 0;
  static int8_t x = 0, y = 0;

  /* Reset counter */
  if (counter == 16)
  {
    counter = 0;
  }
  /* Update pointer position x and y */
  if ((counter >= 0) && (counter < 4))
  {
    y = 0;
    x = CURSOR_STEP;
  }
  else if ((counter >= 4) && (counter < 8))
  {
    x = 0;
    y = CURSOR_STEP;
  }
  else if ((counter >= 8) && (counter < 12))
  {
    y = 0;
    x = -CURSOR_STEP;
  }
  else
  {
    x = 0;
    y = -CURSOR_STEP;
  }

  /* Increment counter */
  counter++;

  /* Mouse event. Length is fixed to 4 */
  hid_event->ux_device_class_hid_event_length = 4;

  /* Set select position */
  hid_event->ux_device_class_hid_event_buffer[0] = 0;

  /* Set X position */
  hid_event->ux_device_class_hid_event_buffer[1] = x;

  /* Set Y position */
  hid_event->ux_device_class_hid_event_buffer[2] = y;

  /* Set wheel position */
  hid_event->ux_device_class_hid_event_buffer[3] = 0;
}

3 Wireshark的抓包

3.1 安装相关组件

安装 Wireshark 时,需要确保勾选 USBPcap 组件,它是 Wireshark 用于 USB 协议抓包分析的插件 。安装完成后,可在 Wireshark 的 extcap 目录找到 USBPcapCMD.exe 执行文件 。

连接 USB 设备并启动 Wireshark,将需要抓包的 USB 设备连接到计算机,然后打开 Wireshark 软件,软件会显示出可用的网络接口列表 。

找到USB端口,这里是USBcap3

01.JPG

3.2 选择抓包接口

在 Wireshark 的接口列表中,找到与 USBPcap 相关的接口,双击该接口,在弹出界面中,若有需要,可以勾选要捕获数据的具体 USB 设备,然后点击确定 。

这里是第四个设备,也是一个HID设备

02.JPG

3.3 开始抓包

回到 Wireshark 主界面,点击左上角的 “开始捕获” 按钮(通常是鲨鱼鳍图标),即可开始对 USB 设备的通信数据进行抓取 。

这里按照步骤显示出初始化的六个步骤,下面是全部的endpoint配置和定义,如

03.JPG

3.4 抓包分析与过滤

抓包过程中或完成后,你可以在 Wireshark 界面查看捕获到的数据包。如果想让抓包界面显示精确的时间戳信息,可以在 “视图” 菜单中选择 “时间格式显示”,然后选择 “日期和时间” 选项 。

这是显示了前4个包的样子。

04.JPG

对应于某个包,可以仔细分析,包的数据,这里是32byte的数据。以及对应的响应时间。

不过,对于速度的计算和和捕捉,因为包太小了,而且包括了计算时间和响应时间,所以这个数据并不准确。不过足以显示正常的功能和高速usb的HS特性。05.JPG

4 抓包的过程和显示

这里的动图,显示了按button后控制模拟鼠标走了一个方形,然后后台的抓包状态过程。

3.1.gif

收藏 评论0 发布时间:2025-9-10 10:08

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版