找回密码
 立即注册
查看: 130|回复: 7

Ai8H使用usb库函数,怎么设置自己的PID,VID和描述

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:174
  • 最近打卡:2025-08-04 08:51:36
已绑定手机

1

主题

39

回帖

703

积分

高级会员

积分
703
发表于 2025-7-1 10:13:50 | 显示全部楼层 |阅读模式
如题,在官网下载的最新USB库函数,打开以后没有找到可以设置自己HID设备的PID,VID和设备描述符等的地方。

请问要怎么操作?
回复

使用道具 举报 送花

3

主题

2098

回帖

1044

积分

等待验证会员

积分
1044
发表于 2025-7-1 10:18:00 | 显示全部楼层
STC8H系列单片机在使用USB库函数实现HID设备时,确实需要对设备的PID(Product ID)、VID(Vendor ID)以及设备描述符进行配置。由于官方提供的USB库函数通常以通用方式封装,部分参数可能未直接暴露在API中,因此需要通过修改库文件或自定义描述符的方式来实现。

以下为具体设置方法:

一、获取标准USB描述符结构

首先,需了解USB设备的基本描述符结构,包括设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)和HID描述符(HID Descriptor)。这些描述符通常存储在一个数组中,用于向主机报告设备信息。

二、查找并修改描述符数组

在STC8H USB库中,通常会有一个名为usbdesc.c或usbdesc.h的文件,其中包含了设备描述符的定义。打开该文件后,可以找到类似如下结构:
  1. c
  2. const uint8t usbdevicedescriptor[] = {
  3.     0x12,                       // bLength
  4.     USBDESCRIPTORTYPEDEVICE, // bDescriptorType
  5.     0x00, 0x02,                 // bcdUSB (2.0)
  6.     0x00,                       // bDeviceClass
  7.     0x00,                       // bDeviceSubClass
  8.     0x00,                       // bDeviceProtocol
  9.     0x40,                       // bMaxPacketSize0
  10.     0x00, 0x00,                 // idVendor (0x0000)
  11.     0x00, 0x00,                 // idProduct (0x0000)
  12.     0x00, 0x00,                 // bcdDevice (0.00)
  13.     1,                          // iManufacturer
  14.     2,                          // iProduct
  15.     3,                          // iSerialNumber
  16.     0x01                        // bNumConfigurations
  17. };
复制代码

三、修改VID和PID

在上述代码中,idVendor和idProduct字段分别对应VID和PID。默认值为0x0000,需根据实际需求修改为合法的数值。例如:
VID:0x0483(STM32常用)
PID:0x5740(示例)

修改后应为:
  1. c
  2. 0x83, 0x04,                 // idVendor (0x0483)
  3. 0x40, 0x57,                 // idProduct (0x5740)
复制代码

四、设置设备描述符

设备描述符中的iManufacturer、iProduct和iSerialNumber字段指向字符串描述符索引。这些字符串描述符通常在另一个文件中定义,如usbstring.c。用户可在此处修改对应的字符串内容,以实现设备名称、制造商等信息的自定义。

五、编译与测试

完成上述修改后,重新编译程序并烧录至STC8H芯片。连接至PC后,可通过设备管理器查看设备信息,确认PID、VID及描述符是否已正确设置。

六、注意事项

1. 确保PID/VID合法性:建议申请官方认证的VID/PID,避免与现有设备冲突。
2. 兼容性问题:部分操作系统或驱动可能对非标准PID/VID设备存在兼容性限制。
3. 文档参考:建议查阅STC8H USB库的官方文档,了解更详细的配置说明。

综上所述,通过修改USB描述符数组中的相应字段,即可实现对STC8H设备的PID、VID及描述符的自定义设置。此过程需具备一定的USB协议基础,并结合实际开发环境进行调试验证。

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-08-04 08:43:48
已绑定手机

78

主题

2807

回帖

5789

积分

荣誉版主

无情的代码机器

积分
5789
发表于 2025-7-1 10:23:30 | 显示全部楼层
官网库没这个接口,可以使用8H程序包里范例自定义修改
https://www.stcaimcu.com/data/do ... -DEMO-CODE-V9.6.zip
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:517
  • 最近打卡:2025-08-04 07:10:33
已绑定手机

87

主题

5811

回帖

1万

积分

超级版主

DebugLab

积分
10448
发表于 2025-7-1 13:52:31 | 显示全部楼层
USB库函数不支持修改VID、PID、描述符
需要修改VID、PID、描述符请使用源代码
注意:
不要胡乱修改描述符,不要同一个VID、PID对应多个描述符,尤其是变更设备类,否则会导致注册表错乱甚至系统崩溃等不可预知的错误,轻者重装驱动可以恢复,严重者只能重装系统
学习USB强烈不建议修改VID、PID、描述符
开发新功能请使用VID=34BF PID=0000
商用如使用STCAI的VID(34BF),则PID必须向STCAI申请,或自行向USBIF申请VID,PID可自定义
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:174
  • 最近打卡:2025-08-04 08:51:36
已绑定手机

1

主题

39

回帖

703

积分

高级会员

积分
703
发表于 2025-7-3 08:14:13 | 显示全部楼层
Debu*** 发表于 2025-7-1 13:52
USB库函数不支持修改VID、PID、描述符
需要修改VID、PID、描述符请使用源代码
注意:

多谢提醒
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:174
  • 最近打卡:2025-08-04 08:51:36
已绑定手机

1

主题

39

回帖

703

积分

高级会员

积分
703
发表于 2025-7-3 08:14:35 | 显示全部楼层
erci*** 发表于 2025-7-1 10:23
官网库没这个接口,可以使用8H程序包里范例自定义修改
https://www.stcaimcu.com/data/download/DemoCode/S ...

找到了,多谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:174
  • 最近打卡:2025-08-04 08:51:36
已绑定手机

1

主题

39

回帖

703

积分

高级会员

积分
703
发表于 2025-7-3 08:17:39 | 显示全部楼层
erci*** 发表于 2025-7-1 10:23
官网库没这个接口,可以使用8H程序包里范例自定义修改
https://www.stcaimcu.com/data/download/DemoCode/S ...

遇到一个问题就是,USBHID,如果端口数据长度设置为64,往FIFO里写入的数据不足64,置位INIPRDY也不会发送给PC

点评

是的正常,HID整包发送补齐64字节,CDC就没这限制了  详情 回复 发表于 2025-7-3 08:55
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-08-04 08:43:48
已绑定手机

78

主题

2807

回帖

5789

积分

荣誉版主

无情的代码机器

积分
5789
发表于 2025-7-3 08:55:35 | 显示全部楼层
vxfk*** 发表于 2025-7-3 08:17
遇到一个问题就是,USBHID,如果端口数据长度设置为64,往FIFO里写入的数据不足64,置位INIPRDY也不会发 ...

是的正常,HID整包发送补齐64字节,CDC就没这限制了
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-5 03:47 , Processed in 0.117580 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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