本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能,结合SDK提供的代码包分析USB的基本常识
USB(Universal Serial BUS,通用串行总线),主机通过VID
和PID
来识别不同设备,
参考资料:【STM32 USB通讯协议实战】
【USB设备设计】-- CDC 设备开发(虚拟串口设备)
关于CDC设备介绍可参考:【沁恒官方B站视频介绍】
CDC设备是USB协议中定义的一种通信设备子类。例如常见的 COM口UART协议,以太网口IP协议等。通过CDC协议可以将USB设备虚拟成通信设备,通过指定的传输协议和数据传输方式同USB设备进行通信。CDC设备的优点:
endpoint
的概念:端点是主机与设备之间通讯数据的来源。主机与设备之间通讯时最终总会用于设备上的各个端点。
每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机靠这个地址对USB设备进行访问。在设备内部,设备会将地址分的更细,设备会分出一些端点,每个端点在设备端都会有唯一的端点号,每个端点地址对应一个方向。具体的参考: USB中的端点详细了解(转)
分享一个超强的HID调试助手
单片机多功能调试助手 V1.7.8 绿色免费版
参考:【CH582 USB Device CherryUSB】
CH582f 芯片的USB引脚为 PB10
PB11
,有8个端点
参考资料: CH582m模拟JoyStick使用USB与电脑通信
HID类的JoyStick描述符
CompoundDev
工程,配合下方的描述符能够实现①直接接电脑,在设备管理器中能够查到被电脑识别为 HID- compliant game contorller
;
描述: 以上开发板的MCU是CH571,板载没有USB转串口协议的芯片,但是将设备插到电脑的USB口,电脑缺识别为串口,名称为 USB-SERIAL CH341A
,这是什么原理呢?
猜测: 带USB 功能的MCU 通过USB引脚传输数据,应用层将USB引脚的数据封装为 串口协议,这样设备插到PC端就会被识别为串口设备;
关于工程的解析以及修改,请参考博文:
【沁恒蓝牙mesh】CH58x USB功能开发记录(二)