USB标准
软件控制部分协议
USB 1.1 UHCI/OHCI
USB 2.0 EHCI
USB 3.0 XHCI。
USB主机控制器有3种规范
UHCI(Universal Host Controller Interface)
这种规范主要是Intel、Via芯片公司提供支持PC主板的;
由 Intel 生产,适用于 USB 1.0 和 USB 1.1。使用 UHCI 时需要得到 Intel 的许可。该控制器支持低速模式和全速模式。
OHCI(Open Host Controller Interface)
这种规范是微软提出来的,主要应用在非PC系统上的嵌入式领域上的USB芯片;
由 Compaq、 Microsoft 和 National Semiconductor 生产, 适用于 USB 1.0 和 1.1。
该控制器支持低速模式和全速模式, 并且它的效率比 UHCI 更高, 因为可以执行更多硬件功能。
EHCI(Enhanced Host Controller Interface)
这种后来为提高USB速度而提出的规范,它支持最高速度为480Mbps。
在 USB-IF 要求发布单一主控制器规范后,已经生产了该控制器,它适用于 USB2.0。
EHCI 仅支持高速传输,并且将低速和全速传输委托给 OHCI 或 UHCI 控制器执行。
XHCI(eXtensible Host Controller Interface)
是Intel最新开发的主机控制器接口,广泛用户Intel六代Skylake处理器对应的100系列主板上,支持USB3.0接口,往下也兼容USB2.0
USB 实现模块
Controller + PHY
USB电气特性
VCC
GND
D+
D-
ID
USB 与串口线
USB 其实 是 两根 串口线
一个 负责 从slave 到 host 的传输
一个 负责 从host 到 slave 的传输
USB 协议栈
USB协议栈 在 两个方面实现
1. 软件
例如stm32官方给的 usb 库
2. 硬件
stm32f405的usb控制器1 :stm32f405的引出管脚 PA11(OTG_FS_DM)(USB_D-) PA12(OTG_FS_DP)(USB_D+)
stm32f405的usb控制器2 :stm32f405的引出管脚 PB14(OTG_HS_DM)(USB_D-) PB15(OTG_HS_DP)(USB_D+)

STM32 USB相关概念
USB on stm32 参考 AN4879
注意
stm32f7x3 的 OTG HS 不用 外接 usb transceivers , 就可以支持 HS
其他的 OTG HS 都需要 用 ULPI 接口 外接 usb transceivers , 以支持 HS
注意
在stm32中, "USB" 和 "USB OTG HS" 和 "USB OTG FS" 是三种不同的IP
硬件层面的概念
如何区分
usb 协议版本 速度(bps)
1.0/1.1 12M/1.5M
2.0 480M

主->从 下行
从->主 上行
软件层面的概念
- stm32 ST提供的2种代码(传统代码和cube代码)
传统代码根据芯片类型分为三套
3套usb代码
设备(slave)端
host端
关注点
usb 插入时 , device 和 host 侧 的 枚举 过程
数据传输过程
复位过程
挂起过程
唤醒过程
对应 host侧和 slave侧 的usb中断
usb 两根线的时序
封装时序
包
其他
拓扑结构
根集线器(笔记本上的插口可能不是根集线器,而是根集线器分出来的集线器)
usbhub(非根集线器)
设备
线序
差分双绞线
工作方式
设备插入
2.主机检测到根集线器状态改变(D+D- 从0到1 ) 并 发出一个命令(1.使能端口 2.配置端口)
3.设备发行设备信息
4.主机收到设备信息,分配(1.唯一表示地址0-127 2.驱动程序),并发出内部设置请求
设备拔出
将设备从可用资源列表中移除
usb软件流程
1.数据通信都由usb主机发起.
2.usb主机在软件及硬件层面分为
2.1 客户软件
界面
设备驱动
发起一次传输
提供数据缓冲区以发送 和 接收 数据
2.2 usb系统软件(软件)
usb 核心驱动
usb 控制器驱动
2.3 usb总线接口(硬件)
根集线器
为usb系统提供一个或多个连接点(端口)
主控制器
完成主从设备间数据的实际传输(包括编解码,差错控制)
3.usb设备在软件及硬件层面分为
概念1
usb总线接口
usb设备中的串行接口引擎(SIE)
usb逻辑设备
一个端点的集合
usb功能单元
一个接口的集合
概念2
配置(低功耗和高功耗)
1个usb设备含有1-n个配置,1个配置含有1-n个接口
接口(大容量接口和音频接口)
1个接口含有1-n个端点
端点(控制,数据输入,数据输出)
数据传输