基于DWC2的USB驱动开发-0x07 DWC2 USB2.0 IP 配置参数

文摘   科技   2023-05-17 07:30   湖南  

前言

  本IP是一个灵活的可配置的IP,有很多参数可以配置以满足不同的需求,这里的配置参数值得IP的配置参数,不要和软件通过寄存器去配置的参数混淆,IP的配置参数固定之后就不能改了,就决定了IP所具有的能力。对于软件开发者来说也要了解其具体的配置,因为只有知道当前IP的配置,知道支持哪些功能,哪些是软件可以配置的哪些是硬件固定了无法配置的,等等这些,后面写驱动才心中有数。

配置相关寄存器

  前面我们介绍了控制器的寄存器,其中有四个只读寄存器GHWCFG1,GHWCFG2,GHWCFG3,GHWCFG4用来显示IP和的相应的配置参数,从名字全局硬件配置寄存器也可以看出其作用,从这四个寄存器可以知道控制器的具体能力。

偏移0x44 名字GHWCFG1

位域

符号

描述

31:0

EpDir

两个bit表示一个端点的方向,低位表示低端点号,

b[1:0]表示端点0的方向,其他类推

b00: BIDIR (IN  OUT) 双向端点

b01: IN 端点

b10: OUT 端点

b11: Reserved







偏移0x48 名字GHWCFG2

位域

符号

描述

31

OTG_ENABLE_IC_USB

0:不支持IC_USB全速串行收发接口

1:支持

OTG_FSPHY_INTERFACE == 1 &&

OTG_ENABLE_IC_USB == 1时为1

30:26

TknQDepth

设备IN令牌序列队列深度 0~30

25:24

PTxQDepth

主机模式,周期请求队列深度

00: 2

01: 4

10: 8

11:16

23:22

NPTxQDepth

非周期请求队列深度

00: 2

01: 4

10: 8

11:保留

21

保留


20

MultiProcIntrpt

0:不支持多处理器中断

1:支持

19

DynFifoSizing

0:不支持动态调整FIFO大小

1:支持

18

PerioSupport

主机模式是否支持周期OUT通道

0:不支持

1:支持

17:14

NumHstChnl

主机支持的通道数

0代表支持1个通道

...

15代表支持16个通道

13:10

NumDevEps

设备模式支持的端点数,不包括端点0

0代表支持0个端点

...

15代表支持15个端点

9:8

FSPhyType

全速PHY接口类型

00: 不支持全速接口

01: 独立的全速接口

10: 全速接口和UTMI+ 引脚共享

11: 全速接口和ULPI 引脚共享

7:6

HSPhyType

高速PHY接口类型

00: 不支持高速PHY接口

01: UTMI+

10: ULPI

11: UTMI+  ULPI这种模式软件可以配置选择UTMI+还是ULPI

5

SingPnt

0: 多点应用 (支持hub split 传输)

1: 单点应用 (不支持hub  split 传输)

4:3

OtgArch

00: Slave-Only模式

01: External DMA

10: Internal DMA

Others: Reserved

2:0

OtgMode

000: 支持HNPSRPOTG (Host & Device)

001: 支持SRPOTG (Host & Device)

010: 不支持HNPSRP(Host and Device)

011: 支持SRPDevice

100:  Non-OTG Device

101: 支持SRPHost

110:  Non-OTG Host

其他: 保留

偏移0x4C 名字GHWCFG3

位域

符号

描述

31:16

DfifoDepth

DFIFO 深度 (DfifoDepth - EP_LOC_CNT)

最小32,最大32768,单位是32(4字节)

注意DfifoDepth是总的DFIFO大小,还有一部分EP_LOC_CNT做端点状态寄存器用,所以真正用于数据传输的只有DfifoDepth - EP_LOC_CNT

15

LPMMode

0:不支持LPM

1:支持

14

BCSupport

0:不支持电池充电器

1:支持

13

HSICMode

1:支持HSIC接口,UTMI PHY接口共享

0:不支持HSIC接口

12

ADPSupport

0:不支持ADP

1:支持

11

RstType

复位方式

0:内核使用异步复位方式

1:内核使用同步复位方式

10

OptFeature

0: 不移除用户ID寄存器,GPIO接口,SOF翻转和计数端口。

1: 移除上述功能

9

VndctlSupt

0:不支持厂商控制接口

1:支持

8

I2CIntSel

0:IC接口

1:

7

OtgEn

0:不支持OTG

1:支持

6:4

PktSizeWidth

包大小计数器的位宽,最大10,可表示0~1023 1K

000: 4 bits

001: 5 bits

010: 6 bits

011: 7 bits

100: 8 bits

101: 9 bits

110: 10 bits

Others: Reserved

3:0

XferSizeWidth

传输大小计数器位宽,最大19,可以表示0~524287 512K

0000: 11 bits

0001: 12 bits

...

1000: 19 bits

Others: Reserved

偏移0x50 名字GHWCFG4

位域

符号

描述

31

DescDMA

0:Scatter/Gather DMA不可由软件动态配置使能

1:可以由软件动态配置使能

30

DescDMAEnabled

0:不支持Scatter/Gather DMA

1:支持

29:26

INEps

设备模式包括控制端点的IN端点数

0: 1 IN 端点

1: 2 IN 端点

....

15: 16 IN 端点

25

DedFifoMode

是否支持设备模式IN端点使用独立的FIFO

0:不支持

1:支持

24

SessEndFltr

0:session_end滤波

1:

23

BValidFltr

0:b_valid滤波

1:

22

AValidFltr

0:a_valid滤波

1:

21

VBusValidFltr

0:不使能VBUS Valid滤波

1:使能

20

IddgFltr

0:不支持IDDIG滤波

1:支持

19:16

NumCtlEps

设备模式除了控制端点0以外的控制端点数

0-15

15:14

PhyDataWidth

PHY接口的总线宽度

00: 8 bits

01: 16 bits

10: 8/16 bits, 软件配置

其他:保留

13

EnhancedLPMSupt

是否支持增强的LPM,1使能

基于FIFO状态的进入L1行为

TX FIFO相关

ISOC IN TX FIFO非空时也支持接受L1请求

Non-Periodic TX FIFO非空时拒绝L1请求

L1状态时确保应用可以Flush TX FIFO

RX FIFO相关

非周期和周期RX FIFO非空时接受L1请求

接受L1请求,但延迟SLEEPM,直到RX SINK缓冲区为空。

任何控制端点在传输时阻止进入L1,PHY时钟被门控关闭也可以Flush TxFIFO

 

12

ACGSupt

是否支持,控制器在没有USBAHB之间的数据流时支持动态时钟门控降低功耗。

0:不支持

1:支持

11

ipgisocSupt

 ISOC OUT内部包间隙最坏情况支持。

根据UTMI规范,最坏场景,RX紧接着RX数据包即任意令牌包后紧接着ISOC OUT令牌时的场景,包间间隙(IPG)32-bittimes。如果不是能这种场景会检测不到后面的令牌包。默认IPG是使能支持的。如果不支持该功能则取决于AHB PHY 的频率。

0:不支持

1:支持

10

ServIntFlow

是否支持ISO In端点的基于服务间隔Service-Interval的调度

9

EnhancedLPMSupt1

增强的LPM支持

是否支持基于FIFO状态的L1进入条件

0:决绝Bulk/Interrupt TxFIFO非空时的L1请求

1:接受

 

8

保留


7

ExtendedHibernation

0:不支持扩展休眠功能

1:支持

6

Hibernation

0:不支持休眠功能

1:支持

5

AhbFreq

最小AHB频率是否小于60MHz

0:

1:

4

PartialPwrDn

0:不支持分区掉电

1:支持

3:0

NumDevPerioEps

设备模式支持的周期IN端点数

基本配置参数

Mode of Operation

GHWCFG2寄存器的

b[2:0]查看配置值

OtgMode

支持OTG, HNP, SRP的可以由软件配置不使用。

不支持Non-HNP/SRPOTG不可以动态切换角色,但是可以根据连接的是A还是B连接去决定是主机还是设备。

如果要支持micro AB插座的嵌入式主机需要配置为0,1,5

 

Architecture

GHWCFG2寄存器的b[4:3]

查看配置值

OtgArch


Point-to-Point Application

Only?

GHWCFG2b5查看配置值

SingPnt


LPM Mode of Operation

GHWCFG3b15查看配置值


Enable descriptor based

scatter/gather DMA

GHWCFG4b30查看配置值

是否使能

b31查看是否软件可动态

 

 

使能


Enable Dedicated Transmit

FIFO for device IN Endpoints?

GHWCFG4b25查看配置值


Enable option for endpoint

specific interrupt

GHWCFG2b20查看配置值


USB物理层接口参数

High-Speed PHY Interface(s)

GHWCFG2b[7:6]查看配置


Data Width of the UTMI+

Interface

GHWCFG4b[15:14]查看

配置值


USB 1.1 Full-Speed Serial

Transceiver Interface

GHWCFG2b[9:8]

查看配置值


USB IC_USB Transceiver

Interface

GHWCFG2b31查看

配置值


Default (Power on) Interface

selection: FS_USB/IC_USB

GUSBCFGb26初始值

依赖该配置


HSIC Mode of Operation

GHWCFG3b13查看

配置值


Enable I2C Interface?

GHWCFG3b8查看

配置值


Enable ULPI Carkit?


OTG_HSPHY_INTERFACE==2 || OTG_HSPHY_INTERFACE==3时使能

支持ULPI接口读PHY寄存器

ADP Controller Support

GHWCFG3b12查看配置值


Battery Charger Support

GHWCFG3b14查看配置值


Enable PHY Vendor Control

Interface?

GHWCFG3b9查看配置值





设备端点配置参数

Number of Device Mode

Endpoints in Addition to

Control Endpoint 0

GHWCFG2b[13:10]

查看配置值


Number of Device Mode

Periodic IN Endpoints

GHWCFG4b[3:0]

查看配置值


Number of Device Mode active

IN Endpoints Including Control

Endpoint 0

GHWCFG4b[29:26]


Number of Device Mode

Control Endpoints in Addition

to Endpoint 0

GHWCFG4b[19:16]





主机端点配置参数

Number of Host Mode

Channels

GHWCFG2b[17:14]


Is Periodic OUT Channel

Support Needed in Host

Mode?






端点通道FIFO配置参数

Total Data FIFO RAM Depth

(64 to 32768)

GHWCFG3b[31:16]


Enable Dynamic FIFO Sizing?

GHWCFG2b19


Largest Rx Data FIFO Depth

(16 to 32768)



Largest Non-Periodic Host Tx

Data FIFO Depth (16 to 32768)



Largest Non-Periodic Tx Data

FIFO Depth (16 to 32768)



Largest Host Mode Periodic Tx

Data FIFO Depth (16 to 32768)



Non-Periodic Request Queue

Depth

GHWCFG2[23:22]


Host Mode Periodic Request

Queue Depth

GHWCFG2[25:24]


Device Mode IN Token

Sequence Learning Queue

Depth (0 to 30)

GHWCFG2b[30:26]


可添加的配置选项参数

Enable Service Interval BasedScheduling for ISOC IN

Endpoints

GHWCFG4b10


Width of Transfer Size

Counters

GHWCFG3[3:0]


Width of Packet Counters

GHWCFG3b[6:4]


Remove Optional Features?

GHWCFG3b10


Power-on Value of User ID

Register



Enable Power Optimization?

GHWCFG4b7 b6 b4


Is Minimum AHB Operating

Frequency less than 60 MHz?

GHWCFG4b5


Reset Style for Clocked always

Blocks in RTL?

GHWCFG3b11


Enable Filter on "iddig" signal

from PHY?

GHWCFG4b20


Enable Filter on "vbus_valid"

signal from PHY?

GHWCFG4b21


Enable Filter on "a_valid"

signal from PHY?

GHWCFG4b22


Enable Filter on "b_valid"

signal from PHY?

GHWCFG4b23


Enable Filter on "session_end"

signal from PHY?

GHWCFG4b24


Enable Exceptional Control

Transfer Flow Support?



Enable Dynamic Power

Reduction?



Enable UPF Power Clamps?



Enable UPF Power Switch

Polarity?



端点方向参数

Direction of Endpoint n

(for n = 1; n <=

OTG_NUM_EPS)

GHWCFG1








设备周期FIFO深度参数

Largest Device Mode Periodic

Tx Data FIFO n Depth (4 to

768)

(for n = 1; n <=

OTG_NUM_PERIO_EPS)






设备IN端点FIFO深度参数

Largest Device Mode Tx Data

FIFO n Depth (16 to 32768)

(for n = 0; n <=

OTG_NUM_IN_EPS-1)






UTMI-To-UTMI桥组件参数

Enable UTMI-To-UTMI Bridge

Component?

OTG_HSPHY_INTERFACE == 1 && OTG_HSPHY_DWIDTH != 2

&& OTG_MODE > 2





总结

   以上列举了所有相关配置参数,大部分参数都可以通过4个全局硬件配置寄存器中查看。通过查看这些寄存器可以知道控制器当前的配置,知道具备哪些能力,以便后续驱动编写。


嵌入式Lee
嵌入式软硬件技术:RTOS,GUI,FS,协议栈,ARM,总线,嵌入式C,开发环境 and blablaba....多年经验分享,非硬货不发,带你扒开每一个技术背后的根本原理。
 最新文章