概述
- 最近想基于STM32,做个USB设备,但是搜索了下,USB的资料比较少,并且相关的书籍,也是比较的少,所以,打算系统的学习下USB协议相关的技术。
- USB 的官方网站:https://usb.org/
- USB 2.0 手册下载地址https://usb.org/document-library/usb-20-specification
如何学习
- 初步的看了下USB 2.0的规格书,发现内容还是比较的齐全,但是看完后,依旧不清楚如何去真正的开发一个USB设备,USB上位机如何设计,STM32 USB固件如何设计,USB主从机如何通信
- 所以,这里使用带USB功能的STM32的开发板,配合
STM32CubeMX
,生成USB Device的设备,通过实践的方式,不断的探索USB功能实现,PC上位机使用Visual Studio 2019开发,这样先用起来,技术细节,再查看USB的规格书,可能效率更高
USB基础
- USB 主机与设备,一般为PC,当然一些嵌入式设备,可以作为USB主机,像STM32,既有USB Host,也有USB Device,还要USB-OTG(主从可选)
- 为什么使用USB?我的需求是做一个USB设备,用于数据的采集、控制,类似于串口控制,使用USB,速度可能更快,如一个电源分析仪、USB-CAN协议转换,等等。
- USB 分为设备固件,使用C语言开发
- USB上位机,使用C++、C#开发
- USB 为:Universal Serial Bus 的缩写,中文可以称之为:通用串行总线
- 经常看到一个笔记本电脑只有两个USB接口,但是可以通过USB-HUB,扩展USB接口,也就是USB接口可以扩展很多个,可以为低功耗设备供电,如J-Link,也可以与USB设备进行通信
USB的速率
- USB 2.0现在分三个等级,也就是之前的 USB 1.1,也称之为USB 2.0了,只是速率低。
USB线序
- 目前USB 2.0 的线序,依旧是四根线:VBUS:5V、GND、D+与D-。
USB的通信方式
- 有四种通信方式
- Control Transfers : 控制传输
- Bulk Data Transfers :批量数据传输
- Interrupt Data Transfers :中断传输
- Isochronous Data Transfers:同步数据传输
其他的概念
- endpoint
- pipe
小结
- 通过实践不断扩充USB协议相关的知识储备
- USB是个通用的协议,不断的梳理资料,不断的总结使用经验