找回密码
 立即注册
查看: 21|回复: 2

usb-cdc VS usb-hid

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-10-16 08:20:14
已绑定手机

5

主题

14

回帖

91

积分

注册会员

积分
91
发表于 11 小时前 | 显示全部楼层 |阅读模式
在实验箱连接上ISP时,有usb-cdc和usb-hid两种状态,两种状态都可以用,但是有没有什么办法可以人为选择两种状态之一?目前似乎是机器自动选择。
截图202510161101576017.jpg
回复

使用道具 举报 送花

3

主题

1879

回帖

606

积分

等待验证会员

积分
606
发表于 11 小时前 | 显示全部楼层
在使用实验箱进行ISP(In-System Programming)操作时,USB接口通常支持多种通信协议,其中常见的包括USB-CDC(Communication Device Class)和USB-HID(Human Interface Device)。这两种模式虽然都能实现设备与主机之间的通信,但其功能定位、通信机制及适用场景存在显著差异。

一、USB-CDC 与 USB-HID 的基本区别

1. USB-CDC(虚拟串口)
定义:USB-CDC 是一种虚拟串口通信协议,模拟传统串口(如RS232)的行为,使得设备可以像串口设备一样进行数据收发。
特点:
适用于需要串口通信的场合,如Bootloader升级、串口调试等。
需要主机端安装虚拟串口驱动(如CH340、CP2102等)。
支持较大数据量的连续传输。
优点:
通信协议标准,适合长数据帧传输。
可以通过串口调试工具(如SecureCRT、XCOM)直接操作。
缺点:
驱动依赖性强,部分操作系统下可能需要手动安装驱动。

2. USB-HID(人机接口设备)
定义:USB-HID 类设备主要用于键盘、鼠标等人机交互设备,但因其无需驱动、即插即用的特性,常被用于嵌入式设备的数据通信。
特点:
支持小数据包(通常64字节以内)高速传输。
无需额外驱动,兼容性强。
通信方式基于中断传输,响应快,适合实时性要求高的场景。
优点:
即插即用,系统兼容性好。
不依赖驱动,跨平台能力强(Windows、Linux、macOS均支持)。
缺点:
数据包大小受限,不适合大量数据传输。
需要自行设计通信协议,开发复杂度略高。

二、ISP 模式下为何会存在两种状态?

在ISP模式下,实验箱通常会根据芯片内部的Bootloader机制或硬件引脚配置来决定使用哪种USB通信方式。例如:
自动识别机制:部分芯片(如STM32系列)在进入Bootloader后,会根据内部配置或外部引脚状态自动选择USB-CDC或USB-HID作为通信接口。
Bootloader配置:某些厂商的Bootloader支持多协议切换,但默认情况下是根据硬件条件自动选择。

因此,当前“似乎是机器自动选择”的情况,实际上是Bootloader根据预设规则做出的判断。

三、是否可以人为选择USB-CDC或USB-HID模式?

是的,在大多数情况下是可以通过特定方式人为选择使用USB-CDC或USB-HID模式的,具体方法包括:

方法一:修改Bootloader配置
如果使用的是开源或可定制的Bootloader(如STM32的官方Bootloader),可以通过修改源码中与USB类相关的配置选项,指定使用CDC或HID。
例如,在STM32的Bootloader中,通常会通过宏定义(如USEUSBCDC 或 USEUSBHID)来选择通信协议。

方法二:硬件引脚控制
一些芯片允许通过特定引脚(如BOOT引脚)的状态来决定启动模式及通信方式。
例如:在进入ISP模式时,通过拉高或拉低某个GPIO引脚,引导系统选择不同的USB类协议。

方法三:通过上位机工具控制
某些专用的ISP工具(如ST官方的STM32CubeProgrammer)支持在连接设备时选择通信协议。
例如,当设备进入Bootloader后,上位机软件会检测可用接口,并允许用户手动选择使用HID或CDC模式进行通信。

方法四:自定义Bootloader切换逻辑
若使用自研Bootloader,可以设计一个交互逻辑,例如:
设备上电后等待一段时间,若检测到特定按键按下,则进入CDC模式;
否则,默认进入HID模式;
或者通过串口/USB命令切换模式。

四、选择建议

| 场景 | 推荐模式 | 原因 |
|------|----------|------|
| 需要串口调试、传输大量数据 | USB-CDC | 支持大包传输,协议成熟 |
| 跨平台使用、无需驱动安装 | USB-HID | 兼容性强,即插即用 |
| 实时性要求高 | USB-HID | 响应速度快,中断传输机制 |
| 需要与串口调试工具对接 | USB-CDC | 可直接使用串口调试工具 |

五、总结

USB-CDC和USB-HID在ISP模式下各有优势,虽然系统默认可能采用自动选择机制,但通过修改Bootloader配置、硬件引脚控制、上位机工具或自定义逻辑,完全可以实现人为选择使用USB-CDC或USB-HID。建议根据实际需求选择合适的通信方式,并在开发阶段明确配置,以提升系统的兼容性与易用性。

如需进一步技术支持(如具体芯片的Bootloader修改方法或引脚定义),可提供具体型号,以便提供更详细的指导。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:585
  • 最近打卡:2025-10-16 07:20:54
已绑定手机

86

主题

6279

回帖

1万

积分

超级版主

积分
11748
发表于 9 小时前 | 显示全部楼层
如连接到的芯片是USB转双串口,HID和双CDC共存是正常的,选择HID或CDC1下载
截图202510161318342249.jpg
如是USB Writer,是进入了下载状态,USB连接哪个芯片就是给哪个芯片通过HID下载
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 22:39 , Processed in 0.126844 second(s), 65 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表