谷动谷力

 找回密码
 立即注册
查看: 2456|回复: 0
收起左侧

知芯上篇 | APM32F407集成内部高速PHY,支持USB2.0通信

[复制链接]
发表于 2022-1-10 20:21:34 | 显示全部楼层 |阅读模式
本帖最后由 sunsili 于 2022-1-13 15:01 编辑
7 U& |% E1 P+ [7 `1 D2 ?: L* }! W5 z2 ^: b! k$ G
知芯上篇 | APM32F407集成内部高速PHY,支持USB2.0通信5 u; ~( B6 U5 f2 }) i/ C

: C. s! o" b# ?7 T% z" s0 C) c, Y3 L
极海APM32F407系列USB模块介绍 ·

9 h+ ~2 o' m. p) R4 K6 J
. ~% G0 ]7 [5 |/ U

极海APM32F407系列工业级高性能MCU,支持USB2.0协议,兼容低速(1.5Mbps)、全速(12Mbps)和高速模式(480Mbps)。高速模式下集成了内部的PHY(物理层),可以节约外部器件成本,操作简便。

APM32F407高速模式下支持4K字节的专用RAM管理数据FIFO传输。单独一帧不需要应用程序参与,从而达到最大的传输带宽。作为设备时,支持最多6个端点,作为主机则支持最多12个通道。支持OTG标准,允许在主机和设备之间进行动态角色切换,支持模块内嵌的DMA传输。

% B" t/ h  d9 N7 L6 h
640?wx_fmt=jpeg.jpg

5 F8 n! a0 ^2 p' f  I! G: j在功耗方面,APM32F407内置电源管理模块,在USB模块挂起时可关闭USB模块所有时钟源来降低功耗,还能通过停止物理层时钟节省其翻转而产生的动态功耗,同时支持OTG应用的主机关闭Vbus降低功耗。由此可知,APM32F407的USB模块可高效地实现USB2.0协议,通过多个管道和FIFO缓存区使传输达到最大的USB带宽,符合OTG补充标准,功耗管理表现优秀。) u8 z9 }  K% B( l* b3 v$ ^4 {
USB简介 ·

6 l0 t3 x: y5 D% p, \3 T" y, a7 u9 D6 Y0 \2 \3 S& A  B( ?
USB(Universal Serial Bus)即通用串行总线,作为一种传输速度快、使用方便、连接灵活的数据通信技术被市场广泛使用,但大家对它的了解有多少呢?今天极海芯君就与大家来聊聊USB的发展历程、通讯形式。
# Z" P# X9 S4 a5 D. W3 k! [2 C
USB传输标准进化史 ·

' T2 x4 y/ v& D$ S
8 [; |* e) _2 E. h9 L

自1996年USB-IF(USB Implementers Forum)组织发布USB 1.0标准以来,USB已经演化了诸多版本。其中 USB1.1支持1.5Mbps低速模式和12Mbps全速模式,而USB2.0作为MCU常用数据通信版本,在兼容低速和全速的同时,还支持480Mbps的高速模式。

( Q4 N+ O' C3 l. R1 g3 T
USB标准版本
标准
版本
发布
日期
官方代号
最大传输
速率
电压电流
支持
USB 1.0
1996.01
Low-Speed
1.5 Mbps
5V/500mA
USB 1.1
1998.09
Full-Speed
12 Mbps
5V/500mA
USB 2.0
2000.04
High-Speed
480 Mbps
5V/500mA
USB 3.2
Gen1
2008.11
SuperSpeed
5 Gbps
15V/900mA
USB 3.2
Gen*1
2013.07
SuperSpeed+
10 Gbps
20V/5A
USB 3.2
Gen*2
2017.09
SuperSpeed+
20 Gbps
20V/5A
USB 4
2019.09
-
40 Gbps
20V/5A
640?wx_fmt=png.jpg
5 E* W" I4 |; [! F0 e! d0 l
USB通信过程解析 ·
6 U- U+ r& T& ~9 b

) R6 ?6 m, T2 b$ N4 d8 W
USB通信组件

USB通信由主机和设备(从机)组成,主机发起通信,符合条件的设备做出响应。最前线的端点接收主机数据,多个“志同道合”的端点组成接口,多个接口组成配置,一个设备可有个配置,然后USB通过四线电缆传输信号和电源。


4 c& k, z' a$ Y% s5 L9 p* ~ 640?wx_fmt=jpeg.jpg 640?wx_fmt=png.jpg
% J7 N# x, \' N& W 640?wx_fmt=png.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
Q:数据线(D-/D+)和端点有什么关系?
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
A:数据线是传送带,端点负责向传送带收放数据,而对应的主机则是使用通道来收放数据。端点存在设备内部,用于管理数据。
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=png.jpg 4 y  J+ @7 z5 m, ?" I/ J+ r
USB描述符
640?wx_fmt=png.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
Q:如何区分设备呢?
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
A:这就涉及到USB描述符了。描述符是USB协议规定的符号集,可以分为设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=png.jpg
5 G: L7 P. Q/ j& b3 q' F3 ]) f' e; n
描述符
用途
设备描述符
表明协议版本、厂商信息、使用的类信息等
配置描述符
表明配置用到的接口数、电源信息、集合总长度等
接口描述符
表明接口使用的类、接口用到的端点数等
端点描述符
表明该端点的类型、端点最大包长等端点属性
字符串描述符
包含字符串数据
& v/ Y& v6 D) p) _: `# @9 L
*需注意,接口描述符和端点描述符通常是和配置描述符绑定的。配置描述符自身长度为9字节,接口、端口等描述符衔接在配置描述符后面。所以主机只需要获取配置描述符集合就能知道设备的通信信息。
; I/ f5 z. X$ B3 O/ x% m8 v& i7 w
640?wx_fmt=png.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
Q:什么是USB的类?
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg
A:USB常见的传输形式有鼠标、U盘、音视频等,不同类型的传输有着不同的传输规则,同类型传输规则则保持一致,这就产生了“类”的概念。主机识别出设备的类代码,就会按照该类的规则来传输。不同基类还有自己的子类和协议。类代码一般存放于接口描述符,少数存放于设备描述符。
640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=svg.jpg 640?wx_fmt=png.jpg ( C) I9 e! m) b  r: I2 A; j
USB请求

USB规定了8个字节作为一个请求,通过主机发送标准的获取描述符请求,设备接收到请求后,将对应描述符发送至主机。


& m$ h! v8 m% v" {# g( ^- U
USB设备请求结构
字节序号
描述
0
bmRequestType
字节中每个位的意义:
D7: 表明数据阶段的传输方向
0=主机至设备
1=设备至主机
D6~D5: 表明请求的类型
0=标准请求
1=类请求
2=厂商请求
3=保留
D4~D0: 表明请求的接收方
0=设备
1=接口
2=端点
3=其他
4..31=保留
1
bRequest
表明具体请求
2、3
wValue
根据不同请求,其含义不同
4、5
wIndex
根据不同请求,其含义不同
6、7
wLength
数据阶段的数据长度,以字节为单位,无数据则为0
表注:D0表示字节的第0位,D1表示第1位,依次类推
3 K, \9 `" _/ F5 ]
USB标准请求
bmRequestType
bRequest
wValue
wIndex
wLength
0000 0000B
0000 0001B
0000 0010B
CLEAR_FEATURE (1)
特性选择
0
接口号
端点号
0
1000 0000B
GET_CONFIGURATION (8)
0
0
1
' s  q7 ^5 N0 m. e- Q0 F! P
1000 0000B
GET_DESCRIPTOR (6)
描述符类型、索引
0或语言ID
描述符长度
1000 0000B
GET_INTERFACE (10)
0
接口号
11 Y) B3 O! o5 c; N$ W  V4 X! ?' J
1000 0000B
1000 0001B
1000 0010B
GET_STATUS (0)
0
0
接口号
端点号
2
0000 0000B
SET_ADDRESS (5)
设备地址
0
0# t- p$ {! i, z* |; g; v
0000 0000B
SET_ CONFIGURATION(9)
配置值
0
0
0000 0000B
SET_DESCRIPTOR (7)
描述符类型、索引
0或语言ID
描述符长度
0000 0000B
0000 0001B
0000 0010B
SET_FEATURE (3)
特性选择
0
接口号
端点号
0
0000 0001B
SET_ INTERFACE (11)
备用接口号
接口号
0
( W4 R( ^) |$ O7 J  ^
1000 0010B
SYNCH_FRAME (12)
0
端点号
2
表注:B后缀表示二进制

$ j/ r' t( H5 o3 T, L
& T/ H8 X( g! E) {/ ]! T

利用标准请求即可实现设备枚举,枚举的过程其实就是主机识别设备的过程。枚举的大致流程:


2 {( \  `" `1 u! @. x. z" {4 m 640?wx_fmt=jpeg.jpg # S4 A/ H7 u. G
*除了标准请求外,还有类请求、供应商请求,当请求中bmRequestType的第5、6位的值对应为类请求时,该8个字节请求的规范就会按照类的规则来定义。

5 L( o5 ?9 r' G
USB传输类型
USB控制传输0 f9 h  z6 ~" O( e0 F- a

主机发送请求至设备,设备返回描述符至主机,主机收到设备发过来的描述符,需要返回一个0数据包表示状态,表明成功接收数据,这个传输方式在USB中称为控制传输。

1 N2 {: Z. w4 b" K, }0 ^
640?wx_fmt=jpeg.jpg
, Q- E5 P3 H& L1 ~( n" }" @) p) c

一次USB控制传输需要Setup事务发送请求至设备,然后根据请求判断数据传输方向及数据长度,数据事务(IN或OUT)之后,数据的接收方需要发送一个0长度数据事务(IN或OUT)来结束控制传输。控制传输必须有主机的请求(Setup),而数据过程取决于该请求,若无数据,则直接到状态过程。状态过程属于数据包,但它没有内容。


2 ~, `6 }" v) M2 s1 _+ x! ]
USB批量传输
USB中断传输
USB同步传输
没有请求过程,只有数据收发。
特点:传输数据量大,实时性不高。
常用于U盘等大容量传输设备。
3 G3 A" t. K4 a6 g2 F# \0 U& k
没有请求过程,只有数据收发。
特点:数据传输量不大,实时性高
常用于鼠标、键盘等设备。
*中断传输只是一个概念,不是中断异常,它在固定的实际间隔,主机间歇性地安排一次传输,使得及时收到设备更新数据。

+ e" A$ U  E: D8 F& l3 ?
没有请求过程,只有数据收发。
特点:传输量大且实时性高,但对数据准确性要求不高。
*同步传输的事务和其他传输不一样,它没有应答包。通常事务的结尾会以应答包汇报此事务的传输状态,当没有应答包时,可以通过数据包的CRC来判断数据的准确性。
3 k3 [5 x( `" ^" Y" _

0 b7 o8 f; N  p2 b; {- MUSB事务构成 640?wx_fmt=jpeg.jpg 5 [( `6 C* x. Z
USB包构成 640?wx_fmt=jpeg.jpg   l) Q/ R7 ^2 I( F- K

令牌包由主机发出,设备接到令牌包后,如果为Setup,则接收数据包(8字节请求);如果为IN令牌,则发送数据至主机,OUT令牌相反。握手包是在数据包结束之后,数据的接收方进行应答,应答方式有ACK(确认)、NAK(未就绪)、STALL(出错)和NYET(高速OUT事务中表示无空间)。

( M9 Y0 G- M; k6 p/ t
MCU中USB设备的数据流

7 |: W% v: }" w& F- y
& t8 p6 s. Z' R- e1 x- X
数据缓冲区-FIFO

MCU通常使用FIFO作为数据缓存区,MCU中的FIFO是一种先进先出的数据缓存寄存器。从USB事务和包中,我们可以了解到,当设备收到主机的令牌包后,根据不同的令牌包,进行接收或发送数据。比如收到了Setup令牌,那设备会先将数据保存在接收FIFO中,置起相关标准位,设备就可以去接收FIFO中取出Setup请求;比如收到的是IN令牌,那设备会从发送FIFO中发送预先压栈的数据,若发送FIFO无数据则返回NAK握手包。. _+ ]4 a4 z9 G9 S6 H5 r

' Z' @' o! ~2 V5 p. ^# [0 v' Z2 q
640?wx_fmt=gif.jpg
640?wx_fmt=jpeg.jpg
640?wx_fmt=png.jpg   info@geehy.com
/ t( z" U+ T4 z. Y" ^
640?wx_fmt=png.jpg    www.geehy.com  
640?wx_fmt=png.jpg   广东省珠海市香洲区广湾街83号01栋

, D! C6 }  [8 N5 {- ]
# _! c) X9 t7 R5 V4 U8 a/ a1 M4 Y' E
640?wx_fmt=gif.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-29 08:33 , Processed in 0.095067 second(s), 35 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表