找回密码
 立即注册
查看: 177|回复: 5

一些奇奇怪怪的USB问题记录

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-1 11:43:43 | 显示全部楼层 |阅读模式
1.HID设备不识别
查看设备驱动为libwdi

卸载设备同时卸载驱动,回复默认的Microsoft驱动,重新上电解决。

截图202504011141276941.jpg

2.bulk测试,需要给对应接口安装WinUSB(libwdi)驱动,配合libusb-1.0.dll测试


截图202504011145265034.jpg

截图202504011147393670.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-1 11:53:00 | 显示全部楼层
在USB设备开发与调试过程中,HID(Human Interface Device)和Bulk传输模式是常见的应用场景。以下针对您提到的两个问题,从技术角度进行分析与解决方案总结。

1. HID设备不识别问题
问题描述:HID设备无法被系统识别,设备驱动显示为libwdi。

分析与解决方案:
HID设备通常依赖于系统自带的Microsoft驱动来实现即插即用功能。当设备驱动被替换为第三方驱动(如libwdi)时,可能会导致设备无法正常识别或工作。以下是解决步骤:
1. 卸载设备与驱动:在设备管理器中找到对应的HID设备,右键选择“卸载设备”,并勾选“删除此设备的驱动程序软件”。
2. 恢复默认驱动:重新连接设备,系统会自动加载默认的Microsoft HID驱动。
3. 重新上电:确保设备重新上电后,系统能够正确识别并加载驱动。

技术背景:
libwdi:是一个开源的Windows驱动安装库,通常用于为自定义USB设备安装WinUSB或libusb驱动。然而,对于标准HID设备,使用系统自带的Microsoft驱动更为合适。
Microsoft HID驱动:是Windows操作系统内置的驱动,支持标准的HID协议,能够自动识别并配置HID设备。

2. Bulk测试与WinUSB驱动安装
问题描述:在进行Bulk传输测试时,需要为对应接口安装WinUSB驱动(通过libwdi),并配合libusb-1.0.dll进行测试。

分析与解决方案:
Bulk传输模式通常用于需要高速数据传输的USB设备,如数据采集设备或存储设备。以下是实现步骤:
1. 安装WinUSB驱动:
使用libwdi工具为设备安装WinUSB驱动。libwdi提供了简单的命令行工具(如wdi-simple)或API,可以自动完成驱动安装。
确保设备接口被正确配置为Bulk传输模式。
2. 使用libusb-1.0.dll:
libusb是一个跨平台的USB库,支持WinUSB驱动。通过调用libusb-1.0.dll中的API,可以实现设备的枚举、打开、读写等操作。
在测试代码中,确保正确加载libusb-1.0.dll,并调用相关函数进行Bulk传输测试。

技术背景:
WinUSB:是Microsoft提供的一种通用USB驱动,支持Bulk、Interrupt和Isochronous传输模式。通过WinUSB,开发者可以绕过复杂的驱动开发,直接与USB设备通信。
libusb:是一个开源的USB库,支持多种操作系统(包括Windows、Linux和macOS)。在Windows平台上,libusb依赖于WinUSB驱动来实现USB通信。
Bulk传输:是USB协议中的一种数据传输模式,适用于需要可靠传输大量数据的场景。Bulk传输具有较高的带宽利用率,但不保证实时性。

总结
在USB设备开发中,正确选择驱动和传输模式是确保设备正常工作的关键。对于HID设备,建议使用系统自带的Microsoft驱动;对于需要高速数据传输的设备,可以通过libwdi安装WinUSB驱动,并配合libusb库进行开发与测试。希望以上分析与解决方案能够帮助您更好地解决USB设备开发中的问题。

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-1 12:12:44 | 显示全部楼层

CONFIGDESC刚好是64字节,主机不识别问题:
usb_ctrl_in函数未处理空包发送。

当交互数据载荷是wMaxPacketSize整数倍时要发送空包结束。
参阅《Universal Serial Bus Specification》5.8.3 Bulk Transfer Packet Size Constraints



截图202504011208585482.jpg

控制端点和数据端点都需要。

控制端点0:
usb_write_reg(CSR0, IPRDY);
while (usb_read_reg(CSR0) & IPRDY);

数据端点:
while (usb_read_reg(INCSR1) & INIPRDY);
usb_write_reg(INCSR1, INIPRDY);  


三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-1 12:20:37 | 显示全部楼层
1.pyusb库windows下不支持is_kernel_driver_active,屏蔽即可

截图202504011214043379.jpg

2.pyusb库内存越界异常
pyusb库和libusb-1.0.dll更新到最新解决
pyusb : 1.3.1
libusb-1.0.dll :libusb-1.0.28\VS2022\MS64\dll
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-1 15:07:33 | 显示全部楼层
1.EP4 EP5 256 Bulk测试
范例中和FIFO相关函数,使用BYTE不满足256字节端点传输,要注意。
由于数据包是以 8 字节为单位,可以包大小设为248先用。
截图202504011505147513.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 2025-4-3 11:38:02 | 显示全部楼层
CDC描述符不识别问题:
bDeviceClass 0x00不匹配导致

0x02 Communication Device Class
或0xEF搭配 IAD描述符识别,参见一箭双雕例程。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:12 , Processed in 0.123034 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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