STM32F4高速USB2.0项目i开发记录 四川自贡
来源:互联网 发布:apache ftpclient加密 编辑:程序博客网 时间:2024/05/05 03:10
USB2.0协议概述
最近项目越来越紧张了,北斗的都没搞完,检测的又来啦,都来不及看我的女朋友,唉程序员苦,看到这文章的朋友都知道。。。
USB发展到现在,主要流行1.1、2.0、3.0这几个版本,而3.1暂时只有少量笔记本在用。
主流版本区别:
USB1.1,支持全速12Mbps和低速1.5Mbps。
USB2.0,兼容1.1,增加了高速480Mbps。
USB3.0,兼容2.0,增加了超速5Gbps。
在用户的角度,使用USB设备是非常方便的。但是,在开发人员的角度,可是谈USB色变。
这是因为,USB硬件接口非常简单,导致上层协议非常复杂。
由上图所示,自下而上,USB硬件接口提供物理的通信链路,EHCI等主机控制器负责调度各端点的数据流,USB驱动协助操作系统和USB设备交换数据同时能烧写固件到USB设备,GUI则让用户轻松操纵USB设备,服务器云端数据库提供各种各样的USB驱动。
USB协议,是一个主从式的协议,所有的通信都由主机发起,设备不能发起。下图,展示了USB家族的主要成员。
USB Host,即USB主机,一般是PC机。
USB Device,即USB设备,有USB键盘、U盘等,而USB Hub集线器是一种特殊的USB设备。
USB OTG,OTG即On-The-Go,同时具备USB主机和USB设备的功能,数码相机就带有OTG的功能。
以下,细说USB2.0的方方面面。
一、USB硬件接口。
1.1 接插件。
由上图所示,USB座有很多种类型,主要分为:公/母、直插、贴片、单/双层、扁/方,等几种类型。
可以看到它只有四根线,分别是VBUS、DP(或D+)、DM(或D-)、GND。此外,还有屏蔽罩,一般屏蔽罩是通过一个100nF的电容连到GND的。
1.2 连接线。
USB线,也分几种:公对公/公对母,带磁环,带屏蔽等。
注意:USB线不能太长,否则设备可能无法正确工作。
1.3 热插拔。
热插拔。它能让你在不断电的情况下,插拔USB设备。
如果要支持热插拔,必须在VBUS、DP、DM三根线上,加上过压、过流保护,在未上电时DP和DM要保持高阻态。
另外,要利用金手指长短来控制上电顺序,插入时首先让电源线接通,让电源稳定之后,再接通信号线,拔出时顺序正好相反。这样有效防护接口被损坏。
1.4 上下拉电阻。
一般,在USB主机的DP、DM都接了下拉15K欧电阻。
对于低速设备,DM接了上拉1.5K欧电阻。
对于全速设备,DP接了上拉1.5K欧电阻。
对于高速设备,一接在主机的时候DP接了上拉1.5K欧电阻,后面经过握手协议之后,DP上断开1.5K欧电阻。
1.5 ESD防护。
一般支持USB接口的芯片ESD防护做得不够好,这个时候要另外加ESD芯片。如下图的USBLC6。
1.6 端接。
端接,目的是做阻抗匹配,特别是高速480Mbps对信号质量要求较高。
一般使用串联端接,在DP、DM上串联22欧电阻。
1.7 UTMI+和ULPI接口。
有一些不带USB接口的处理芯片,比如,51单片机、FPGA等。它们都不能直接处理USB总线上的DP、DM的差模信号。
所以,芯片厂商开发了一些USB PHY芯片,可以把DP、DM上的差模信号转成共模信号。
其中,成为业界标准的接口,有UTMI+和ULPI。
如下图所示,UTMI+接口一共有31根信号线。
如下图所示,ULPI接口一共有12根信号线。
UTMI+和ULPI,在功能上是等价的。
UTMI+和ULPI区别在于,ULPI需要读写寄存器,而UTMI+只需直接拉高或拉低信号线。
如下图所示,ULPI是在UTMI+的基础上封装了一层。
显然,UTMI+接口的信号线太多,占用大量的PCB空间,才需要推出ULPI接口。
市场上,大多数的USB PHY芯片都是ULPI接口。
1.8 检测USB设备速度的流程描述。
对于低速设备,在DM引脚上拉1.5K。
对于全速设备,在DP引脚上拉1.5K。
对于高速设备,则需要握手协议。
a、USB主机检测到全速设备,即:DP引脚上拉1.5K。
b、USB主机复位总线,即向总线发送SE0,此SE0持续时间不得小于2.5us。
c、高速设备检测到SE0持续时间不小于2.5us后,向总线发送Chirp K信号,此Chirp信号持续时间不小于1ms且不大于7ms。
d、总线回复到SE0状态。如果USB主机支持高速模式,则必须在Chipr K信号结束后100us内做出响应。
e、USB主机在Chipr K信号结束后100us内做出响应,向总线发送连续的Chirp K/J对,每个Chirp K信号或Chirp J信号的宽度不小于40us且不大于60us,每2个相邻的Chirp K和Chirp J信号之间的间隔不应大于2.5us。
f、高速设备在检测到连续的最少3对Chirp K/J对后,在500us内必须断开DP上的上拉电阻,并连接D+和D-上的对地高速端接电阻,完成高速握手,进入高速传输模式。
高速模式的握手协议,反应在USB3300的时序,如下图所示。
附录:相关资料。
1、USB2.0官方手册。
2、USB设备类手册。
3、USB3.0官方手册。
4、USB3.1官方手册。
5、EHCI官方手册。
6、USB3300数据手册。
7、USB3500数据手册。
8、UTMI官方手册。
9、ULPI官方手册。
10、《Linux设备驱动程序》(内附Linux下的USB驱动教程)
11、《深入浅出Windows驱动开发》(内附Windows下的USB驱动教程)
- STM32F4高速USB2.0项目i开发记录 四川自贡
- stm32f4**开发相关记录
- 安装USB2.0驱动,获取极端高速
- Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速传输系统设计(软件及硬件)
- Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速传输系统设计(软件及硬件)
- Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速传输系统设计(软件及硬件)
- FX2L-USB2.0高速控制器IO操作入门
- USB2.0的高速、全速及低速设备的检测
- USB2.0速度识别--区分低速-高速-全速
- USB2.0的高速、全速及低速设备的检测
- 实现USB2.0高速数据传输的问题探讨
- USB2.0 速度识别--区分低速-高速-全速
- USB2.0开发系统概要
- 使用stm32f4的usb之前的工作-usb2.0简单了解
- 使用CH272用作USB2.0的开发
- 基于USB2.0与FPGA技术的高速数据采集系统的设计
- 关于USB2.0和USB高速传输模式的一点说明
- ti dsp(tms320VC5502)+isp1581 usb2.0高速数据采集方案(1)
- 分布式系统事务一致性解决方案
- Quartz总结(三):动态修改定时器一
- 多级选择组件解决实践
- OPNET网络仿真分析-1.4、OPNET文件存储内容
- SecureCRT 日志时间戳
- STM32F4高速USB2.0项目i开发记录 四川自贡
- Quartz与Spring集成
- OPNET网络仿真分析-1.5、OPNET中英文对比
- Viewpager中嵌套RecyclerView 再嵌套水平的recyclerView 滑动时候,事件
- rcnn-fast-rcnn--faster-rcnn 对比及相关原理解释
- C++随机整数,随机小数
- 如何用消息系统避免分布式事务?
- 【机房收费】登录界面流程图
- 遍历Map的四种方法