本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能,结合SDK提供的代码包分析USB的基本常识
【沁恒蓝牙mesh】CH58x USB功能开发记录(一)
- 1. USB基本常识
- 1.1 **USB 设备类别:**
- 1.2 **USB设备实现方法:**
- 1.3 **CDC设备:**
- 1.4 **USB 中的端点`endpoint` 的概念:**
- 2. 几个USB调试助手网站
- 3. CH582 USB
- 4. USB接口工程解析
- 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
- 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
- 📣 系列专栏:沁恒蓝牙mesh二次开发 🍁
- 💬格言:写文档啊不是写文章,重要的还是直白!🔥
1. USB基本常识
USB(Universal Serial BUS,通用串行总线),主机通过VID
和PID
来识别不同设备,
- VID(Vendor ID,供应商识别码),2字节
- PID(Product ID,产品识别码),2字节
- PVN(Product Version Number,产品版本号)
参考资料:【STM32 USB通讯协议实战】
1.1 USB 设备类别:
- 人机交互类设备HID(Human Interface Device)
- 通信类设备CDC(Communicate Device Class)
- 大容量存储设备MSC(Mass Storage Class)
- 视频类设备UVC(USB Video Class)
- 音频类设备UAC(USB Audio Class)
1.2 USB设备实现方法:
- 设备描述符实现:配置从机类型,方便主机加载从机对应驱动及对从机数据的识别
- 配置描述符实现:配置设备专用的描述符,方便启用特定的设备操作和特性;配置从机端点信息,方便主机从端点读/写数据
1.3 CDC设备:
【USB设备设计】-- CDC 设备开发(虚拟串口设备)
关于CDC设备介绍可参考:【沁恒官方B站视频介绍】
CDC设备是USB协议中定义的一种通信设备子类。例如常见的 COM口UART协议,以太网口IP协议等。通过CDC协议可以将USB设备虚拟成通信设备,通过指定的传输协议和数据传输方式同USB设备进行通信。CDC设备的优点:
- 免驱动:使用标准的USB接口和通信协议,部署方便。例如USB虚拟COM口,无需安装驱动即可使用
- 支持多种通信协议:支持很多通信领域的通信协议,可以满足不同行业,不同场景的需求
1.4 USB 中的端点endpoint
的概念:
端点是主机与设备之间通讯数据的来源。主机与设备之间通讯时最终总会用于设备上的各个端点。
每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机靠这个地址对USB设备进行访问。在设备内部,设备会将地址分的更细,设备会分出一些端点,每个端点在设备端都会有唯一的端点号,每个端点地址对应一个方向。具体的参考: USB中的端点详细了解(转)
2. 几个USB调试助手网站
分享一个超强的HID调试助手
单片机多功能调试助手 V1.7.8 绿色免费版
3. CH582 USB
参考:【CH582 USB Device CherryUSB】
CH582f 芯片的USB引脚为 PB10
PB11
,有8个端点
4. USB接口工程解析
参考资料: 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功能开发记录(二)