文章目录
拓展阅读
前言
写这篇记录文章的起始原因:
查看at32F407的资料时看到:芯片支持USB2.0全速设备接口,想到以下几个问题
- at32F407硬件到底支持USB2.0还是USB1.1?
- at32F407需要支持usb2.0的低速,全速,高速,需要硬件支持,还是软件支持?
- at32F407提到自己是USB2.0全速设备,如果就是等于USB1.1,为什么不直接说自己是USB1.1规范?
- USB2.0与USB1.x 硬件上能区分吗?
一、USB基础知识
为了不再造轮子,看到有小伙伴总结的很好很全面,特此记录
二、USB2.0
1.usb2.0模式说明
在最初的USB1.0和USB1.1协议规范中,仅有低速(1.5Mbps)设备和全速(12Mbps)设备之分。发展到后来的USB2.0协议规范,又增加了高速(480Mbps)模式。但是需要注意的是,USB2.0协议只是USB协议的2.0版本,并不是USB高速传输模式的代名词。在USB2.0协议中,规定了可以支持3种速度模式,分别是低速(Low Speed, 1.5Mbps),全速(Full Speed, 12Mbps)和高速(High Speed, 480Mbps)。但它并未强制要求一定要具备高速模式。
很多USB芯片注明支持USB2.0协议,但是并不支持高速传输模式(这一点在选择芯片的时候要仔细看清楚)。如果你需要的是高速传输模式,那么在选择芯片时要特别注意,看它是否支持高速传输模式。如果只是看到符合USB2.0规范,就认为一定支持高速传输模式,那就错了。
像Philips的PDIUSBD12芯片,数据手册里面就明确写了,支持USB2.0协议的全速传输模式
2.USB2.0全速USB和高速USB的识别过程分析
补充:STM32 USB相关知识扫盲:USB主机如何识别设备是高速设备/全速设备/低速设备?
全速设备/高速设备:硬件部分能区分低速和全速,软件协议上区分高和全速设备,刚开始设备接入后,识别为全速模式,但是设备支持高速,此时会通过某个协议向主机通告,如果主机也支持高速,那么两者就会工作在高速模式下,反之全速
3.usb协议关系
-
代际
第一代:usb 1.0/1.1的最大传输速率为12mbps。1996年推出。
第二代:usb 2.0的最大传输速率高达480mbps。usb 1.0/1.1与usb 2.0的接口是相互兼容的。
第三代:usb 3.0 最大传输速率5gbps, 向下兼容usb 1.0/1.1/2.0 -
usb2.0兼容
原来的usb1.1已经整合usb2.0标准里了。
如下:
USB2.0支持三种传输速率:
低速(Low Speed),习惯称为USB1.0,传输速率为1.5Mbps;
全速(Full Speed),习惯称为USB1.1,传输速率为12Mbps;
高速(High Speed),习惯称为USB2.0,传输速率为480Mbps;USB2.0可以向下兼容,当USB2.0设备插入1.1接口,将只有12Mbps的传输速率。
USB可以通过线缆传送电力,能够提供最大500mA、5V的电力。
4.USB2.0与USB1.x 硬件上能区分吗?
- 疑点
- 以上文章都说明了,差分线的高低可以区分设备是全速模式还是全速模式,但并没有告诉我们usb工作在usb2.0还是usb1.x版本下面?
- 这就没办法理解,当识别高速设备的时候,设备怎么就知道自己和主机同时工作在usb2.0模式下呢?
- USB1.x总线与USB2.0总线的区别?
-
uhci(universal host controller interface):
Intel用在自家芯片组上的usb 1.1主控制器(host controller)的硬件实例。 -
ehci(enhanced host controller interface):
usb 2.0的主控制器标准接口。
EHCI英文全称为Enhanced Host Controller Interface,是增强型主机控制器接口规范,描述了一个通用串行总线USB2.0版的主机控制器的寄存器级接口。EHCI规范包括系统软件和主机控制器硬件之间的硬件/软件接口的描述,主要是为硬件组件设计,系统集成商和设备驱动程序(软件)开发 -
ohci(open host controller inferface):
一个不仅仅是usb用的主控制器接口标准,下面细分为usb,1394,或者更多(别的没有接触过)。主要是遵循csr (configuration space register)标准(另一个标准,呵呵)。是其他厂商在设计usb host controller时遵循的标准,如via, nec, ali, 包括nvidia等等。
uhci, ohci在硬件实现以及对底层软件访问上都有所不同,但二者又都完全(实际上各自多少都有些不足)支持usb 1.1 specification里边对usb host controller的要求。
同理,ehci是满足usb 2.0 specification里面对usb host controller (high speed)的要求的硬件设计。
-
- 设备模式与协议版本的关系
总结
三、USB芯片到底完成了哪些工作?
USB
芯片也分为Controller
部分和PHY
部分。Controller
部分主要实现USB
的协议和控制。内部逻辑主要有MAC
层、CSR
层和FIFO
控制层,还有其他低功耗管理之类层次。
MAC
实现按USB
协议进行数据包打包和解包,并把数据按照UTMI
总线格式发送给PHY(USB3.0为PIPE)
。CSR
层进行寄存器控制,软件对USB
芯片的控制就是通过CSR
寄存器,这部分和CPU
进行交互访问,主要作为Slave
通过AXI
或者AHB
进行交互。FIFO
控制层主要是和DDR
进行数据交互,控制USB
从DDR
搬运数据的通道,主要作为Master
通过AXI/AHB
进行交互。PHY
部分功能主要实现并转串
的功能,把UTMI
或者PIPE
口的并行数据转换成串行数据
,再通过差分数据线
输出到芯片外部。
USB
芯片内部实现的功能就是接受软件的控制
,进而从内存搬运数据并按照USB协议
进行数据打包
,并串转换
后输出到芯片外部。或者从芯片外部接收差分数据信号,串并转换
后进行数据解包并写到内存里。
3.1 每一个usb必须有usb-phy吗?
带着问题查阅资料:
STM32F407重要外设学习(基于《野火STM32库开发实战指南》)——02RCC-使用HSE/HSI配置时钟
由以上文章得知407的USB没有集成PHY,要想实现USB高速传输,只能外接PHY芯片,比如USB33000。那USB PHY时钟就由外部的PHY芯片提供。
APM32F407集成内部高速PHY,支持USB2.0通信
由以上两个文章可知 要想实现usb2.0
的高速传输需要一个usb phy
。否则只能处于全速
和低速
。