USB OTG

简介

Nuclei通用串行总线(USB)控制器符合USB 2.0规范,可在作为主机或外设时支持高速、全速或低速传输。

它是一个用于与另一设备进行随身(OTG)通信的双角色控制器,同时支持会话请求协议(SRP)和主机协商协议(HNP)。

控制器最多支持7个传输或接收端点(包括端点0)。其中,端点0支持用于枚举过程的控制传输,而其他端点则支持批量、中断和同步传输。

每个端点均设有用于数据传输或接收的先进先出(FIFO)队列,其队列地址与深度均可进行配置。

作为主机时,TX 表示 OUT 事务,RX 表示 IN 事务。作为外设时,TX 表示 IN 事务,RX 表示 OUT 事务。

对于TX操作,CPU或DMA将数据写入FIFO,控制器从FIFO读取并发送出去。对于RX操作,控制器接收数据并写入FIFO,然后CPU或DMA再从中读取。

此外,内部DMA (IDMA) 配置后可访问FIFO。

控制器可配置为提供用于高速传输的UTMI低引脚接口(ULPI),以及用于全速和低速传输的FS PHY接口,或者用于所有高速、全速和低速传输的USB 2.0收发器宏单元接口(UTMI)。

主要特性

  • 符合 USB 2.0 规范。

  • 支持角色的动态主机-外围切换。

  • 支持 USB 2.0 主机模式,高速(480 Mb/s)、全速(12 Mb/s)或低速(1.5 Mb/s)。

  • 支持 USB 2.0 外围设备模式,高速或全速。

  • 支持控制、批量、中断和同步传输。

  • 支持高带宽等时和中断传输。

  • 支持挂起和恢复信令。

  • 支持外设模式下的远程唤醒。

  • 支持高速主机模式下的HUB连接。

  • 用于外部PHY的UTMI。

  • 最多 7 个发送和接收端点(包括端点 0)。

  • 经认证的高速OTG。

  • 支持SRP和HNP协议。

  • 支持对端点 FIFO 的内部或外部 DMA 访问。

  • 最多7个通道用于内部DMA。

功能描述

USB控制器的框图如 USB控制器顶层框图所示。

usb_top_arch

USB控制器架构图

每个模块的详细描述如下:

  • UTMI控制器

UTMI控制器模块在收发器60MHz时钟域与系统时钟域之间重新同步信号。

  • 数据包编码/解码

数据包编码/解码模块为待传输的数据包生成报头,并在接收数据包时解码报头。它还为待传输的数据包生成CRC,并在接收数据包时检查CRC。

  • 端点控制器

处理四种类型的传输:控制、中断、批量和等时。

使用了两个控制器状态机:一个用于端点0上的控制传输,另一个用于其他端点上的批量、中断和同步传输。

  • CPU接口

CPU接口允许访问每个端点的控制/状态寄存器和FIFO。

  • 内部DMA控制器

用于在端点FIFO中高效加载/卸载数据的内部DMA控制器。

中断

来自 USB 控制器的中断由三部分组成:连接中断、端点中断和 IDMA 中断。

  • 连接中断请求(第12页)介绍了连接中断请求。

中断事件

事件标志位

使能控制位

数据包解码模块检测到错误

ERR_DET_INT

ERR_DET_INT_EN

检测到会话请求信号

SRP_DET_INT

SRP_DET_INT_EN

VBUS 电压低于有效阈值

VBUS_ERR_INT

VBUS_ERR_INT_EN

设备断开连接

DISCONN_INT

DISCONN_INT_EN

设备连接成功

CONN_INT

CONN_INT_EN

新帧开始(SOF)

SOF_INT

SOF_INT_EN

检测到 Babble 异常

BABBLE_INT

BABBLE_INT_EN

检测到复位信号

RESET_INT

RESET_INT_EN

检测到恢复信号

RESUME_INT

RESUME_INT_EN

检测到挂起信号

SUSPEND_INT

SUSPEND_INT_EN

  • 端点 0 中断请求(第 12 页)显示了端点 0 中断请求

中断事件

事件标志位

使能控制位

状态阶段结束

CTL_STATUS_END

EP0_STATUS_END_INT_EN

事务错误

CTRL_TRAN_ERR

EP0_CTRL_TRAN_ERR_INT_EN

清除 TX 数据包完成

CLR_TX_PKT_RDY

EP0_CLR_TX_PKT_RDY_INT_EN

TX FIFO 溢出

TXFIFO_OVERFLOW

EP0_TXFIFO_OVERFLOW_INT_EN

数据未就绪

DATA_NOT_RDY

EP0_DATA_NOT_RDY_INT_EN

RX FIFO 下溢

RX_FIFO_UNDERFLOW

EP0_RXFIFO_UNDERFLOW_INT_EN

设置 RX 数据包完成

SET_RX_PKT_RDY

EP0_SET_RX_PKT_RDY_INT_EN

端点暂停

SPLIT_EP_HALTED

EP0_SPLIT_EP_HALTED_INT_EN

接收 NAK 超时

NAK_TIMEOUT

EP0_NAK_TIMEOUT_INT_EN

无响应错误

NO_RSP_ERR

EP0_NO_RSP_ERR_INT_EN

接收 STALL 标记

RCV_STALL

EP0_RCV_STALL_INT_EN

发送 STALL 标记

SENT_STALL

EP0_SENT_STALL_INT_EN

  • 端点1~7中断请求(第13页)介绍了端点1~7的中断请求。

中断事件

事件标志位

使能控制位

清除 TX 数据包完成

CLR_TX_PKT_RDY

CLR_TX_PKT_RDY_INT_EN

TX FIFO 溢出

TXFIFO_OVERFLOW

TXFIFO_OVERFLOW_INT_EN

数据未就绪

DATA_NOT_RDY

DATA_NOT_RDY_INT_EN

未收到响应

INCOMP_NOT

INCOMP_NOT_INT_EN

IN 令牌不足

ISO_INSUFF_TX

ISO_INSUFF_TX_INT_EN

TX FIFO 中的数据少于 TRX_MAX_NUM

ISO_LESS_DATA

ISO_LESS_DATA_INT_EN

RX FIFO 下溢

RX_FIFO_UNDERFLOW

RXFIFO_UNDERFLOW_INT_EN

设置 RX 数据包完成

SET_RX_PKT_RDY

SET_RX_PKT_RDY_INT_EN

OUT 令牌不足

ISO_INSUFF_RX

ISO_INSUFF_RX_INT_EN

接收数据包中发现 CRC 错误

ISO_DATA_ERR

ISO_DATA_ERR_INT_EN

接收数据包中发现 PID 错误

ISO_PID_ERR

ISO_PID_ERR_INT_EN

发生更多事务请求

ISO_OVRFLOW

ISO_OVRFLOW_INT_EN

接收数据包中发现短包错误

ISO_LEN_ERR

ISO_LEN_ERR_INT_EN

接收数据包中发现超时错误

ISO_TIMEOUT

ISO_TIMEOUT_INT_EN

接收数据包中发现长度超限错误

ISO_OVERLEN_ERR

ISO_OVERLEN_ERR_INT_EN

端点挂起

SPLIT_EP_HALTED

SPLIT_EP_HALTED_INT_EN

从设备接收到 NAK

INT_RCV_NAK

INT_RCV_NAK_INT_EN

接收 NAK 超时

NAK_TIMEOUT

NAK_TIMEOUT_INT_EN

无响应错误

NO_RSP_ERR

NO_RSP_ERR_INT_EN

接收 STALL 标记

RCV_STALL

RCV_STALL_INT_EN

发送 STALL 标记

SENT_STALL

SENT_STALL_INT_EN

  • IDMA 中断请求(第13页)介绍了 IDMA 中断请求,每个中断请求对应一个 IDMA 通道。

中断事件

事件标志位

使能控制位

传输超时

INT_ST[0]

INT_EN[0]

EP FIFO 中无数据

INT_ST[1]

INT_EN[1]

EP FIFO 非空但传输计数为零

INT_ST[2]

INT_EN[2]

发现传输请求错误

INT_ST[3]

INT_EN[3]

FIFO为空或传输计数为零时执行空传输

INT_ST[4]

INT_EN[4]

正常传输完成

INT_ST[5]

INT_EN[5]

寄存器

控制器寄存器

  • 寄存器及其对应偏移量

偏移地址

寄存器名称

功能描述

0x00

USB_ID

USB 标识

0x04

GLB_CFG

全局配置

0x08

EP_INT

端点中断状态

0x0C

EP_INT_EN

端点中断使能

0x10

GLB_INT

连接中断状态

0x14

GLB_INT_EN

连接中断使能

0x18

FRAME_NUM

帧号

0x1C

TEST_MODE

测试模式

0x24

CMD_SENT_INTV

命令发送间隔

0x28

TRANS_INTV

事务间隔

0x2C

ISO_INTV

等时传输间隔

0x30

BULK_SS2NEXT_INTV

批量传输完成-分割到下一个命令间隔

0x34

BULK_CS2NEXT_INTV

批量传输完成-分割到下一个命令间隔

0x38

BULK_CS2IMM_INTV

批量传输完成-分割到立即完成-分割间隔

0x3C

INT_INTV

中断事务间隔

0x40

PHYCTRL_TIME_CFG1

PHY 控制时间配置-1

0x44

PHYCTRL_TIME_CFG2

PHY 控制时间配置-2

0x48

PHYCTRL_TIME_CFG3

PHY 控制时间配置-3

0x4C

PHYCTRL_TIME_CFG4

PHY 控制时间配置-4

0x50

PHYCTRL_TIME_CFG5

PHY 控制时间配置-5

0x54

PHYCTRL_TIME_CFG6

PHY 控制时间配置-6

0x58

PHYCTRL_TIME_CFG7

PHY 控制时间配置-7

0x5C

PHYCTRL_TIME_CFG8

PHY 控制时间配置-8

0x60

PHYCTRL_TIME_CFG9

PHY 控制时间配置-9

0x64

PHYCTRL_TIME_CFG10

PHY 控制时间配置-10

0x68

PHYCTRL_TIME_CFG11

PHY 控制时间配置-11

0x6C

PHYCTRL_TIME_CFG12

PHY 控制时间配置-12

0x70

PHYCTRL_TIME_CFG13

PHY 控制时间配置-13

0x74

PHYCTRL_TIME_CFG14

PHY 控制时间配置-14

0x78

PHYCTRL_TIME_CFG15

PHY 控制时间配置-15

0x7C

PHYCTRL_TIME_CFG16

PHY 控制时间配置-16

0x80

PHYCTRL_TIME_CFG17

PHY 控制时间配置-17

0x84

PHYCTRL_TIME_CFG18

PHY 控制时间配置-18

0x88

PHYCTRL_TIME_CFG19

PHY 控制时间配置-19

0x8C

PHYCTRL_TIME_CFG20

PHY 控制时间配置-20

0x90

PHYCTRL_TIME_CFG21

PHY 控制时间配置-21

0x94

PHYCTRL_TIME_CFG22

PHY 控制时间配置-22

0x98

PHYCTRL_TIME_CFG23

PHY 控制时间配置-23

0xA0

PHY_CTRL

PHY 控制

0xA4

OTG_CTRL

OTG 控制

0xA8

PHY_CTRL_STATUS

PHY 控制状态

0xAC

PHY_CFG

PHY 配置

0xB0

TEST_PACKET_INTVAL

测试包间隔

0xB4

HS_EOF_CFG

高速 EOF 配置

0xB8

FS_EOF_CFG

全速 EOF 配置

0xBC

LS_EOF_CFG

低速 EOF 配置

0xC0

XCLK_XRST_CFG

XCLK 复位配置

0xC4

PHY_DEBUG

PHY 调试寄存器

0xD0

MFRAME_CYCLES

微帧周期数

0xD4

EP_ST

端点空闲状态

0x100

EPO_FIFO_ENTRY

端点 0 FIFO 入口

0x104

EPO_FIFO_SIZE_ADDR

端点 0 FIFO 大小和地址

0x108

EPO_COM_CFG

端点 0 通用配置寄存器

0x10C

EPO_HUB_CFG

端点 0 HUB 配置寄存器

0x110

EPO_CFG

端点 0 配置

0x120

EPO_RX_BYTES

端点 0 接收 FIFO 字节数

0x124

EPO_TX_BYTES

端点 0 发送 FIFO 字节数

0x128

EPO_DETAIL_INT_ST

端点 0 详细中断状态

0x12C

EPO_DETAIL_INT_EN

端点 0 详细中断使能

0x140

EP1_FIFO_ENTRY

端点 1 FIFO 入口

0x144

EP1_FIFO_SIZE_ADDR

端点 1 FIFO 大小和地址

0x148

EP1_COM_CFG

端点 1 通用配置寄存器

0x14C

EP1_HUB_CFG

端点 1 HUB 配置寄存器

0x150

EP1_CFG

端点 1 配置

0x154

EP1_REQ_PKT_CNT

端点 1 请求包计数

0x158

EP1_EPX_TRAN

端点 1 事务配置

0x160

EP1_RX_BYTES

端点 1 接收 FIFO 字节数

0x164

EP1_TX_BYTES

端点 1 发送 FIFO 字节数

0x168

EP1_DETAIL_INT_ST

端点 1 详细中断状态

0x16C

EP1_DETAIL_INT_EN

端点 1 详细中断使能

0x180

EP2_FIFO_ENTRY

端点 2 FIFO 入口

0x184

EP2_FIFO_SIZE_ADDR

端点 2 FIFO 大小和地址

0x188

EP2_COM_CFG

端点 2 通用配置寄存器

0x18C

EP2_HUB_CFG

端点 2 HUB 配置寄存器

0x190

EP2_CFG

端点 2 配置

0x194

EP2_REQ_PKT_CNT

端点 2 请求包计数

0x198

EP2_EPX_TRAN

端点 2 事务配置

0x1A0

EP2_RX_BYTES

端点 2 接收 FIFO 字节数

0x1A4

EP2_TX_BYTES

端点 2 发送 FIFO 字节数

0x1A8

EP2_DETAIL_INT_ST

端点 2 详细中断状态

0x1AC

EP2_DETAIL_INT_EN

端点 2 详细中断使能

0x1C0

EP3_FIFO_ENTRY

端点 3 FIFO 入口

0x1C4

EP3_FIFO_SIZE_ADDR

端点 3 FIFO 大小和地址

0x1C8

EP3_COM_CFG

端点 3 通用配置寄存器

0x1CC

EP3_HUB_CFG

端点 3 HUB 配置寄存器

0x1D0

EP3_CFG

端点 3 配置

0x1D4

EP3_REQ_PKT_CNT

端点 3 请求包计数

0x1D8

EP3_EPX_TRAN

端点 3 事务配置

0x1E0

EP3_RX_BYTES

端点 3 接收 FIFO 字节数

0x1E4

EP3_TX_BYTES

端点 3 发送 FIFO 字节数

0x1E8

EP3_DETAIL_INT_ST

端点 3 详细中断状态

0x1EC

EP3_DETAIL_INT_EN

端点 3 详细中断使能

0x200

EP4_FIFO_ENTRY

端点 4 FIFO 入口

0x204

EP4_FIFO_SIZE_ADDR

端点 4 FIFO 大小和地址

0x208

EP4_COM_CFG

端点 4 通用配置寄存器

0x20C

EP4_HUB_CFG

端点 4 HUB 配置寄存器

0x210

EP4_CFG

端点 4 配置

0x214

EP4_REQ_PKT_CNT

端点 4 请求包计数

0x218

EP4_EPX_TRAN

端点 4 事务配置

0x220

EP4_RX_BYTES

端点 4 接收 FIFO 字节数

0x224

EP4_TX_BYTES

端点 4 发送 FIFO 字节数

0x228

EP4_DETAIL_INT_ST

端点 4 详细中断状态

0x22C

EP4_DETAIL_INT_EN

端点 4 详细中断使能

0x240

EP5_FIFO_ENTRY

端点 5 FIFO 入口

0x244

EP5_FIFO_SIZE_ADDR

端点 5 FIFO 大小和地址

0x248

EP5_COM_CFG

端点 5 通用配置寄存器

0x24C

EP5_HUB_CFG

端点 5 HUB 配置寄存器

0x250

EP5_CFG

端点 5 配置

0x254

EP5_REQ_PKT_CNT

端点 5 请求包计数

0x258

EP5_EPX_TRAN

端点 5 事务配置

0x260

EP5_RX_BYTES

端点 5 接收 FIFO 字节数

0x264

EP5_TX_BYTES

端点 5 发送 FIFO 字节数

0x268

EP5_DETAIL_INT_ST

端点 5 详细中断状态

0x26C

EP5_DETAIL_INT_EN

端点 5 详细中断使能

0x280

EP6_FIFO_ENTRY

端点 6 FIFO 入口

0x284

EP6_FIFO_SIZE_ADDR

端点 6 FIFO 大小和地址

0x288

EP6_COM_CFG

端点 6 通用配置寄存器

0x28C

EP6_HUB_CFG

端点 6 HUB 配置寄存器

0x290

EP6_CFG

端点 6 配置

0x294

EP6_REQ_PKT_CNT

端点 6 请求包计数

0x298

EP6_EPX_TRAN

端点 6 事务配置

0x2A0

EP6_RX_BYTES

端点 6 接收 FIFO 字节数

0x2A4

EP6_TX_BYTES

端点 6 发送 FIFO 字节数

0x2A8

EP6_DETAIL_INT_ST

端点 6 详细中断状态

0x2AC

EP6_DETAIL_INT_EN

端点 6 详细中断使能

0x4FC

IP_VERSION

IP 版本

  • USB_ID

    Address offset: 0x00.

字段名

位位置

访问权限

复位值

描述

CUST_ID

15:0

RO

16’h2025

客户 ID

DEV_ID

31:16

RO

16’h0301

“设备” ID

  • GLB_CFG

    Address offset: 0x04.

字段名

位位置

访问权限

复位值

描述

HOST_MODE

0

RW

0

若置位,则控制器作为主机运行;否则作为外设运行。

SOFT_RST

1

RW

0

若置位,则软复位控制器。该位会自动清零。

RSVD_7_2

7:2

RO

0

保留

FUNC_ADDR

14:8

RW

0

功能地址(用于主机模式下的设备地址)

RSVD_15_15

15

RO

0

保留

TX_EP_NUM

19:16

RO

7

发送端点数量

RX_EP_NUM

23:20

RO

7

接收端点数量

RSVD_24_31

31:24

RO

0

保留

  • EP_INT

    Address offset: 0x08.

字段名

位位置

访问权限

复位值

描述

EP0_INT

0

RO

0

端点 0 中断状态。若 EP0_DETAIL_INT_ST 被清除,则此位也会被清除。

EP1_TX_INT

1

RO

0

端点 1 发送中断状态。若 EP1_DETAIL_INT_ST 被清除,则此位也会被清除。

EP2_TX_INT

2

RO

0

端点 2 发送中断状态。若 EP2_DETAIL_INT_ST 被清除,则此位也会被清除。

EP3_TX_INT

3

RO

0

端点 3 发送中断状态。若 EP3_DETAIL_INT_ST 被清除,则此位也会被清除。

EP4_TX_INT

4

RO

0

端点 4 发送中断状态。若 EP4_DETAIL_INT_ST 被清除,则此位也会被清除。

EP5_TX_INT

5

RO

0

端点 5 发送中断状态。若 EP5_DETAIL_INT_ST 被清除,则此位也会被清除。

EP6_TX_INT

6

RO

0

端点 6 发送中断状态。若 EP6_DETAIL_INT_ST 被清除,则此位也会被清除。

RSVD_7_15

15:7

RO

0

保留

RSVD_16_16

16

RO

0

保留

EP1_RX_INT

17

RO

0

端点 1 接收中断状态。若 EP1_DETAIL_INT_ST 被清除,则此位也会被清除。

EP2_RX_INT

18

RO

0

端点 2 接收中断状态。若 EP2_DETAIL_INT_ST 被清除,则此位也会被清除。

EP3_RX_INT

19

RO

0

端点 3 接收中断状态。若 EP3_DETAIL_INT_ST 被清除,则此位也会被清除。

EP4_RX_INT

20

RO

0

端点 4 接收中断状态。若 EP4_DETAIL_INT_ST 被清除,则此位也会被清除。

EP5_RX_INT

21

RO

0

端点 5 接收中断状态。若 EP5_DETAIL_INT_ST 被清除,则此位也会被清除。

EP6_RX_INT

22

RO

0

端点 6 接收中断状态。若 EP6_DETAIL_INT_ST 被清除,则此位也会被清除。

RSVD_23_31

31:23

RO

0

保留

  • EP_INT_EN

    Address offset: 0x0C.

字段名

位位置

访问权限

复位值

描述

EP0_TX_INT_EN

0

RW

1

端点 0 发送中断使能

EP1_TX_INT_EN

1

RW

1

端点 1 发送中断使能

EP2_TX_INT_EN

2

RW

1

端点 2 发送中断使能

EP3_TX_INT_EN

3

RW

1

端点 3 发送中断使能

EP4_TX_INT_EN

4

RW

1

端点 4 发送中断使能

EP5_TX_INT_EN

5

RW

1

端点 5 发送中断使能

EP6_TX_INT_EN

6

RW

1

端点 6 发送中断使能

RSVD_7_15

15:7

RO

0

保留

RSVD_16_16

16

RO

0

保留

EP1_RX_INT_EN

17

RW

1

端点 1 接收中断使能

EP2_RX_INT_EN

18

RW

1

端点 2 接收中断使能

EP3_RX_INT_EN

19

RW

1

端点 3 接收中断使能

EP4_RX_INT_EN

20

RW

1

端点 4 接收中断使能

EP5_RX_INT_EN

21

RW

1

端点 5 接收中断使能

EP6_RX_INT_EN

22

RW

1

端点 6 接收中断使能

RSVD_23_31

31:23

RO

0

保留

  • GLB_INT

    Address offset: 0x10.

字段名

位位置

访问权限

复位值

描述

SUSPEND_INT

0

WIC

0

当总线上检测到挂起信号时置位。仅在从设备模式下有效。

RESUME_INT

1

WIC

0

当总线上检测到恢复信号时置位。仅在从设备模式下有效。

RESET_INT

2

WIC

0

当总线上检测到复位信号时置位。仅在从设备模式下有效。

BABBLE_INT

3

WIC

0

当检测到 Babble 异常时置位。仅在主机模式下有效。

SOF_INT

4

WIC

0

当新帧开始时置位。仅在从设备模式下有效。

CONN_INT

5

WIC

0

当检测到设备连接时置位。仅在主机模式下有效。

DISCONN_INT

6

WIC

0

在主机模式下,当检测到设备断开时置位;在从设备模式下,当会话结束时置位。

VBUS_ERR_INT

7

WIC

0

当 VBUS 电压低于有效阈值时置位。仅在会话期间有效。

SRP_DET_INT

8

WIC

0

当检测到会话请求信号(SRP)时置位。仅用于 A 设备,由 CPU 读取清除。

ERR_DET_INT

9

WIC

0

当数据包解码模块检测到错误时置位。

RSVD_10_31

31:10

RO

0

保留

  • GLB_INT_EN

    Address offset: 0x14.

字段名

位位置

访问权限

复位值

描述

SUSPEND_INT_EN

0

RW

1

挂起中断使能。

RESUME_INT_EN

1

RW

1

恢复中断使能。

RESET_INT_EN

2

RW

1

复位中断使能。

BABBLE_INT_EN

3

RW

1

Babble 异常中断使能。

SOF_INT_EN

4

RW

1

新帧开始(SOF)中断使能。

CONN_INT_EN

5

RW

1

连接中断使能。

DISCONN_INT_EN

6

RW

1

断开连接中断使能。

VBUS_ERR_INT_EN

7

RW

1

VBUS 错误中断使能。

SRP_DET_INT_EN

8

RW

1

会话请求(SRP)检测中断使能。

ERR_DET_INT_EN

9

RW

1

数据包解码错误中断使能。

RSVD_10_31

31:10

RO

0

保留

  • FRAME_NUM

    Address offset: 0x18.

字段名

位位置

访问权限

复位值

描述

FRAME_NUMBER

10:0

RO

0

帧号。

RSVD_11_31

31:11

RO

0

保留

  • TEST_MODE

    Address offset: 0x1C.

字段名

位位置

访问权限

复位值

描述

Test_SE0_NAK

0

RW

0

CPU 将此位设为 1 可进入 USB 2.0 规范 7.1.20 定义的 test_se0_nak 模式。在此模式下,控制器保持高速模式,但对任何有效的 IN 令牌响应 NAK。

Test_J

1

RW

0

CPU 将此位设为 1 可进入 test_j 模式(USB 2.0 规范 7.1.20)。在此模式下,控制器在总线上持续发送 J 状态信号。

Test_K

2

RW

0

CPU 将此位设为 1 可进入 test_k 模式(USB 2.0 规范 7.1.20)。在此模式下,控制器在总线上持续发送 K 状态信号。

Test_Packet

3

RW

0

CPU 将此位设为 1 可进入 test_packet 模式(USB 2.0 规范 7.1.20)。在此模式下,控制器在总线上重复发送一个 53 字节的测试包(test packet)。

Force_HS

4

RW

0

CPU 设置此位可强制控制器进入高速模式,或与 bit 6 配合使用以在 USB 复位后强制进入高速模式。

Force_FS

5

RW

0

CPU 设置此位可强制控制器进入全速模式,或与 bit 6 配合使用以在 USB 复位后强制进入全速模式。

Force_HOST

6

RW

0

CPU 设置此位可指令核心在会话位置位时进入主机模式,无论是否有外设连接。该核心将在主机模式下保持,直到会话位被清除。工作速度由Force_HS 和 Force_FS 位决定:
  • 2’b11: 未定义

  • 2’b10: 主机高速模式

  • 2’b01: 主机全速模式

  • 2’b00: 主机低速模式

RSVD_7_7

7

RO

0

保留

TEST_EN

8

RW

0

用于测试模式的位,可加速 UTMI 控制 FSM 的仿真调试。仅用于调试。

RSVD_9_31

31:9

RO

0

保留

  • CMD_SENT_INTV

    Address offset: 0x24.

字段名

位位置

访问权限

复位值

描述

CMD_SENT_INTVAL

14:0

RW

0x10

两次命令发送之间的间隔。

RSVD_15_31

31:15

RO

0

保留

  • TRANS_INTV

    Address offset: 0x28.

字段名

位位置

访问权限

复位值

描述

DIFF_DIR_INTVAL

14:0

RW

0x1FF

两次方向切换命令之间的间隔。

RSVD_15_15

15

RO

0

保留

SAME_DIR_INTVAL

30:16

RW

0x1FF

两次同向命令之间的间隔。

RSVD_31_31

31

RO

0

保留

  • ISO_INTV

    Address offset: 0x2C.

字段名

位位置

访问权限

复位值

描述

NEXT_ISO_INTVAL

14:0

RW

0xF

顺序等时(isochronous)命令之间的间隔。

RSVD_15_15

15

RO

0

保留

TX_ISO_INTVAL

30:16

RW

0xF

发送顺序等时命令之间的间隔。

RSVD_31_31

31

RO

0

保留

  • BULK_SS2NEXT_INTV

    Address offset: 0x30.

字段名

位位置

访问权限

复位值

描述

BULK_SS2CS_INTVAL

14:0

RW

0xF

Start-Split 到 Complete-Split 事务之间的间隔。

RSVD_15_15

15

RO

0

保留

BULK_SS2SS_INTVAL

30:16

RW

0xF

Start-Split 到 Retry Start-Split 事务之间的间隔。

RSVD_31_31

31

RO

0

保留

  • BULK_CS2NEXT_INTV

    Address offset: 0x34.

字段名

位位置

访问权限

复位值

描述

BULK_CS2CS_INTVAL

14:0

RW

0xF

Complete-Split 到 Retry Complete-Split 事务之间的间隔。

RSVD_15_15

15

RO

0

保留

BULK_CS2SS_INTVAL

30:16

RW

0xF

Complete-Split 到 Retry Start-Split 事务之间的间隔。

RSVD_31_31

31

RO

0

保留

  • BULK_CS2IMM_INTV

    Address offset: 0x38.

字段名

位位置

访问权限

复位值

描述

PER_CS2CSIMM_INTVAL

14:0

RW

0xF

Complete-Split 到 Retry Immediate Complete-Split 事务之间的间隔(周期模式)。

RSVD_15_15

15

RO

0

保留

BULK_CS2CSIMM_INTVAL

30:16

RW

0xF

Complete-Split 到 Retry Immediate Complete-Split 事务之间的间隔(批量模式)。

RSVD_31_31

31

RO

0

保留

  • INT_INTV

    Address offset: 0x3C.

字段名

位位置

访问权限

复位值

描述

NEXT_INT_INTVAL

14:0

RW

0xF

顺序中断命令之间的间隔。

RSVD_15_15

15

RO

0

保留

SPLIT_CS2IDLE_INTVAL

30:16

RW

0xF

Complete-Split 到 IDLE 状态之间的间隔。

RSVD_31_31

31

RO

0

保留

  • PHYCTRL_TIME_CFG1

    Address offset: 0x40.

字段名

位位置

访问权限

复位值

描述

t_arise

23:0

RW

6000000

VBUS 上升超时时间,100ms。

RSVD_24_31

31:24

RO

0

保留

  • PHYCTRL_TIME_CFG2

    Address offset: 0x44.

字段名

位位置

访问权限

复位值

描述

t_acon

23:0

RW

7200000

设备连接定时器,120ms。

RSVD_24_31

31:24

RO

0

保留

  • PHYCTRL_TIME_CFG3

    Address offset: 0x48.

字段名

位位置

访问权限

复位值

描述

t_fsto

19:0

RW

180000

全速空闲超时时间,3ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG4

    Address offset: 0x4C.

字段名

位位置

访问权限

复位值

描述

t_devto

19:0

RW

300000

当 A 设备处于空闲状态时的超时时间,5ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG5

    Address offset: 0x50.

字段名

位位置

访问权限

复位值

描述

t_uch

19:0

RW

66000

高速上游 chirp 持续时间,1.1ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG6

    Address offset: 0x54.

字段名

位位置

访问权限

复位值

描述

t_wtrev

19:0

RW

180000

高速转全速恢复时间,3ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG7

    Address offset: 0x58.

字段名

位位置

访问权限

复位值

描述

t_bwhnp

19:0

RW

120000

开始高速 HNP 前的延迟时间,2ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG8

    Address offset: 0x5C.

字段名

位位置

访问权限

复位值

描述

t_dplent

19:0

RW

132000

测试模式下数据线脉冲持续时间,2.2ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG9

    Address offset: 0x60.

字段名

位位置

访问权限

复位值

描述

t_dplen

19:0

RW

360000

数据线脉冲持续时间,6ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG10

    Address offset: 0x64.

字段名

位位置

访问权限

复位值

描述

t_vplent

19:0

RW

132000

VBUS 充电持续时间(测试模式),2.2ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG11

    Address offset: 0x68.

字段名

位位置

访问权限

复位值

描述

t_hnpdis

19:0

RW

300000

HNP 断开检测持续时间,5ms。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG12

    Address offset: 0x6C.

字段名

位位置

访问权限

复位值

描述

t_wthsh

19:0

RW

240000

在高速主机挂起状态下,等待 4ms 后检查设备是否断开。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG13

    Address offset: 0x70.

字段名

位位置

访问权限

复位值

描述

t_srpintr

19:0

RW

120000

当 SE0 信号持续超过 2ms 时,进入会话请求(SRP)条件。

RSVD_20_31

31:20

RO

0

保留

  • PHYCTRL_TIME_CFG14

    Address offset: 0x74.

字段名

位位置

访问权限

复位值

描述

t_wuch

7:0

RW

6

发送上行 chirp 前的延迟。

t_wrstfs

15:8

RW

150

全速复位超时时间,2.5μs。

t_hsrcov

23:16

RW

60

高速信号结束后的线路状态恢复时间,1μs。

t_se0

31:24

RW

36

恢复信号结束时的 SE0 持续时间,0.6μs。

  • PHYCTRL_TIME_CFG15

    Address offset: 0x78.

字段名

位位置

访问权限

复位值

描述

t_acont

7:0

RW

150

A 设备在测试模式下的连接定时器,2.5μs。

t_heoct

15:8

RW

60

主机 chirp 结束持续时间(测试模式),1μs。

t_hhsrtn

23:16

RW

100

从高速主机恢复信号结束到开始主机操作的延迟(测试模式)。

t_wtidt

31:24

RW

150

上电后到检测 ID 引脚的延迟(测试模式)。

  • PHYCTRL_TIME_CFG16

    Address offset: 0x7C.

字段名

位位置

访问权限

复位值

描述

t_hsrtn

7:0

RW

200

从高速恢复信号结束到启用 UTMI 正常工作模式的延迟。

t_vplen

15:8

RW

127

VBUS 充电持续时间 × 2¹⁶。

t_flit

23:16

RW

150

最小 chirp 状态持续时间,2.5μs。

t_fsdiscon

31:24

RW

160

检测全速断开定时器,SE0 > 2.67μs。

  • PHYCTRL_TIME_CFG17

    Address offset: 0x80.

字段名

位位置

访问权限

复位值

描述

t_ipd

7:0

RW

7

在高速或全速模式下,两次 TX 传输之间的最短时间间隔。

t_ipd_ls

15:8

RW

40

在低速模式下,两次 TX 传输之间的最短时间间隔。

t_min_busy

23:16

RW

7

在全速或高速模式下,一次 TX 传输所需的最短时间。

t_min_busy_ls

31:24

RW

36

在低速模式下,一次 TX 传输所需的最短时间。

  • PHYCTRL_TIME_CFG18

    Address offset: 0x84.

字段名

位位置

访问权限

复位值

描述

wid_tm_cfg

7:0

RW

128

上电后采样 PHY ID 引脚的时间 × 2¹⁶。

wcon_tm_cfg

15:8

RW

128

检查设备连接的时间 × 2¹⁶。

RSVD_16_31

31:16

RO

0

保留

  • PHYCTRL_TIME_CFG19

    Address offset: 0x88.

字段名

位位置

访问权限

复位值

描述

t_acons

15:0

RW

1680

HNP 模式下设备连接定时器,28μs。

t_wtfs

31:16

RW

60000

检查设备连接的时间,1ms。

  • PHYCTRL_TIME_CFG20

    Address offset: 0x8C.

字段名

位位置

访问权限

复位值

描述

t_fsrtn

15:0

RW

160

从全速恢复信号结束到启用 UTMI 正常工作模式的延迟,传输 4 字节。

t_wrsth

31:16

RW

6000

高速复位超时时间,100μs。

  • PHYCTRL_TIME_CFG21

    Address offset: 0x90.

字段名

位位置

访问权限

复位值

描述

t_hchrdet

15:0

RW

300

检测设备上行 chirp 的时间,5μs。

t_chcrp

31:16

RW

6000

主机 chirp 持续时间,100μs。

  • PHYCTRL_TIME_CFG22

    Address offset: 0x94.

字段名

位位置

访问权限

复位值

描述

t_heoc

15:0

RW

6000

主机 chirp 结束持续时间,100μs。

t_hfseor

31:16

RW

1120

全速主机恢复信号结束时间,28 个低速位。

  • PHYCTRL_TIME_CFG23

    Address offset: 0x98.

字段名

位位置

访问权限

复位值

描述

t_hhsrtn

15:0

RW

6040

从高速主机恢复信号结束到开始主机操作的延迟。

t_srpdet

31:16

RW

61440

主机设备检测 SRP 数据并加上持续时间后生成 SRP 中断的时间。

  • PHY_CTRL

    Address offset: 0xA0.

字段名

位位置

访问权限

复位值

描述

SESSION

0

RW

0

在主机模式下,CPU 设置为 1 以启动会话,设置为 0 以结束会话并进入空闲状态;在设备模式下,控制器会在传输开始时置位,并在结束后清零。

RESET

1

RW

0

在主机模式下,CPU 设置为 1 以发送复位命令,复位超时后清零;在设备模式下,检测到复位时置位,复位完成进入空闲后清零,置位后必须保持超过 10ms。

HS_ENAB

2

RW

0

使能 PHY 支持高速传输。设为 1 后,在完成高速握手后将运行在高速模式;否则运行在全速模式。

SUSP_ENAB

3

RW

0

使能 PHY 进入挂起模式并停止工作。设为 1 时,PHY 停止工作并关闭时钟;设为 0 时,PHY 仍保持时钟。

SOFT_CON

4

RW

1

软件控制传输是否断开。设为 1 时正常传输;设为 0 时中断当前传输并返回空闲状态。

SUSPEND

5

RW

0

主机模式下用于向设备发送挂起命令(设为 1),设备模式下 CPU 只能读取该状态(设为 1 时表示收到恢复中断或远程恢复命令)。控制器在 IDLE 状态下会清零。

RESUME

6

RW

0

主机或设备均可使用此位进行恢复操作。主机模式下,当连接的设备处于挂起状态时,CPU 设为 1 发送恢复命令;设备模式下,从设备可通过远程恢复主机(设为 1),但需保持超过 10ms 且不超过 15ms 后清零。主机模式下检测到恢复中断时,控制器设为 1,随后由 CPU 清零。

PHY_TYPE

7

RW

0

PHY 类型选择:
  • ‘1’: 选择内部 USB 1.1 PHY

  • ‘0’: 选择外部 USB 2.0 PHY

FS_PHY_SPEED

8

RW

0

USB 1.1 PHY 速度选择:
  • ‘1’: 内部 USB 1.1 PHY 工作在低速模式

  • ‘0’: 内部 USB 1.1 PHY 工作在全速模式

FS_PHY_MODE

9

RW

0

USB 1.1 PHY 模式选择:
  • ‘1’: 内部 USB 1.1 PHY 带有 TX_SE0 引脚

  • ‘0’: 内部 USB 1.1 PHY 不带 TX_SE0 引脚

FS_SUSPEND_REVERSE

10

RW

1

当设为 1 时,反转全速 PHY 的挂起引脚。

CP_XCTRL

11

RW

1

充电泵使能。

RSVD_12_31

31:12

RO

0

保留

  • OTG_CTRL

    Address offset: 0xA4.

字段名

位位置

访问权限

复位值

描述

OTG_EN

0

RW

0

使能控制器中的 OTG 功能。设为 1 时启用 OTG;设为 0 时禁用。特别地,当选择内部 USB 1.1 PHY 时,可通过此位在外部情况下禁用 OTG。

SET_ID

1

RW

0

当 OTG 功能被禁用时,通过此位设置 PHY 工作模式:
  • ‘0’: PHY 工作在设备模式

  • ‘1’: PHY 工作在主机模式

HOST_REQ

2

RW

0

B 设备希望切换到主机模式时,该位设为 1。

RSVD_3_3

3

RO

0

保留

A_DEV

4

RO

0

响应 OTG 中设备的 ID。仅当 OTG_EN 为 1 时有效:
  • ‘1’: 表示当前设备是 A 设备

  • ‘0’: 表示当前设备是 B 设备

VBUS

6:5

RO

0

反映 VBUS 的电压状态:
  • ‘11’: VBUS > VBUSVLD

  • ‘10’: VBUS < VBUSVLD 且 AVALID < VBUS < VBUSVLD

  • ‘01’: VBUSLO < VBUS < AVALID

  • ‘00’: VBUS < VBUSLO

RSVD_7_31

31:7

RO

0

保留

  • PHY_CTRL_STATUS

    Address offset: 0xA8.

字段名

位位置

访问权限

复位值

描述

FS_DEV

0

RO

0

表示连接了一个全速设备。

LS_DEV

1

RO

0

表示连接了一个低速设备。

HS_MODE

2

RO

0

表示当前处于高速模式。

POWER_DOWN_STATE

3

RO

0

表示当前处于电源关闭模式。

RSVD_4_31

31:4

RO

0

保留

  • PHY_CFG

    Address offset: 0xAC.

字段名

位位置

访问权限

复位值

描述

FS_PHY_SEL

0

RW

0

全速 PHY 选择。

DLL_POS

3:1

RW

3

DLL 位置选择。

DLL_TAP_SEL

4

RW

0

DLL TAP 选择。

FS_RX_HOLD_TX

5

RW

0

全速接收端保持发送控制。

LS_SOF

6

RW

0

低速 SOF 控制。

RSVD_7_7

7

RO

0

保留

ERR_CLR

8

RW

0

错误清除。

ERR_STA

11:9

RO

0

错误状态。

RX_STATE

13:12

RO

0

接收状态。

RSVD_14_15

15:14

RO

0

保留

HYSCTL_VP

17:16

RW

0

滞回控制电压正端。

HYSCTL_VM

19:18

RW

0

滞回控制电压负端。

RSVD_20_31

31:20

RO

0

保留

  • TEST_PACKET_INTVAL

    Address offset: 0xB0.

字段名

位位置

访问权限

复位值

描述

TEST_PACKET_INTVL

14:0

RW

0x10

测试包之间的间隔时间。仅在测试模式下启用 Test_Packet 时有效。

RSVD_15_31

31:15

RO

0

保留

  • HS_EOF_CFG

    Address offset: 0xB4.

字段名

位位置

访问权限

复位值

描述

HS_EOF1

15:0

RW

0x400

设置高速事务中 EOP 前停止新事务的时间(默认值对应 17.07μs)。

RSVD_16_31

31:16

RO

0

保留

  • FS_EOF_CFG

    Address offset: 0xB8.

字段名

位位置

访问权限

复位值

描述

FS_EOF1

15:0

RW

0xA00

设置全速事务中 EOP 前停止新事务的时间(默认值对应 42.67μs)。

RSVD_16_31

31:16

RO

0

保留

  • LS_EOF_CFG

    Address offset: 0xBC.

字段名

位位置

访问权限

复位值

描述

LS_EOF1

15:0

RW

0xA14

设置低速事务中 EOP 前停止新事务的时间(默认值对应 43μs)。

RSVD_16_31

31:16

RO

0

保留

  • XCLK_XRST_CFG

    Address offset: 0xC0.

字段名

位位置

访问权限

复位值

描述

CFG_PAD_XRSTN

0

RW

0

配置 xrstn_pad_o oval 的复位信号。
  • xrstn_pad_o oval = rst_n & cfg_pad_xrstn

  • CPU 可设置该位以释放对 xrstn_pad_o oval 的复位,从而发送到 ULPI PHY。

RSVD_1_7

7:1

RO

0

保留

XCLK_PLL_DIV

11:8

RW

7

XCLK PLL 分频因子。

XCLK_PLL_EN

12

RW

1

XCLK PLL 分频因子使能指示。
  • 当 CPU 设置该位时,xclk_pll_div 才生效。

RSVD_13_31

31:13

RO

0

保留

  • PHY_DEBUG

    Address offset: 0xC4.

字段名

位位置

访问权限

复位值

描述

ULPI_PHY_DEBUG

1:0

RW

0

ULPI PHY 寄存器调试配置。

ULPI_PHY_ADDR

7:2

RW

0

ULPI PHY 寄存器地址。

ULPI_PHY_REG_WDATA

15:8

RW

0

ULPI PHY 寄存器写入数据。

ULPI_PHY_REG_RDATA

23:16

RO

0

ULPI PHY 寄存器读取数据。

ULPI_TX_DLY

27:24

RW

7

配置 ULPI TX 延迟。

ULPI_OE_DLY

28

RW

1

配置 ULPI OE 延迟。

RSVD_29_31

31:29

RO

0

保留

  • MFRAME_CYCLES

    Address offset: 0xD0.

字段名

位位置

访问权限

复位值

描述

MFRAME_CYCLES

15:0

RW

7499

生成 SOF 所需的时钟周期数。

MFRAME_DEVIATION

31:16

RW

7489

作为外设时生成 SOF 的时钟周期偏差。

  • EP_ST

    Address offset: 0xD4.

字段名

位位置

访问权限

复位值

描述

EP_IDLE_ST

0

RO

1

所有端点均处于空闲状态。

Reserved

3:1

/

0x0

/

EP0_STAGE

7:4

RO

0

从机模式下控制传输阶段。

Reserved

31:8

/

0x0

/

  • EPn_FIFO_ENTRY (n=0-6)

    Address offset: 0x100 + n*0x40.

字段名

位位置

访问权限

复位值

描述

EP_FIFO_ENTRY

31:0

RW

0

每个端点 RAM 的入口。

  • EPn_FIFO_SIZE_ADDR (n=0-6)

    Address offset: 0x104 + n*0x40.

字段名

位位置

访问权限

复位值

描述

FIFO_SIZE

3:0

RW

0

若配置为 k(k 应在 3 到 13 之间),FIFO 大小为 2**k 字节。

FIFO_START_ADDR

14:4

RW

0

端点 FIFO 的起始地址,单位为 8 字节。

RSVD_15_15

15

RO

0

保留

FIFO_START_ADDR_TX

26:16

RW

0x8

Endpoint 0 FIFO 的起始地址,单位为 8 字节。

RSVD_27_30

30:27

RO

0

保留

FLUSH_FIFO

31

RW

0

清空端点 FIFO。
  • 设置后会自动清除。

  • EPn_COM_CFG (n=0-6)

    Address offset: 0x108 + n*0x40.

字段名

位位置

访问权限

复位值

描述

CLR_ERR_CNT_RCV_NAK

0

RW

1

在 HUB 分裂事务中接收到 NAK 后清除错误计数。

SEND_STALL

1

RW

0

仅在作为外设时有效。
  • CPU 设置该位以向主机发送 STALL 握手。

  • 发送 STALL 后,此位会被清除。

RSVD_2_2

2

RO

0

保留

DIS_PING

3

RW

0

仅在作为主机时有效。
  • CPU 设置该位以指示控制器不在事务中发出 PING 令牌。

REQ_IN

4

RW

0

仅在作为主机时有效。
  • CPU 设置该位以请求 IN 事务。

  • 当 RxPktRdy 被设置时,该位被清除。

RSVD_5_5

5

RO

0

保留

TARGET_SPEED

7:6

RW

0

目标设备的操作速度:
  • 2’b00: 未使用

  • 2’b01: 高速

  • 2’b10: 全速

  • 2’b11: 低速

  • 仅当多点功能启用且作为主机时有效。

NAK_LIMIT

12:8

RW

0

仅在作为主机时有效。
  • 如果主机接收 NAK 响应的时间超过帧/微帧数量的 2**NAK_limit,外设将被暂停。

RSVD_13_29

29:13

RO

0

保留

RX_PKT_RDY

30

RW

0

控制器在接收到数据包后设置该位。
  • CPU 在读取数据包后清除该位。

TX_PKT_RDY

31

RW

0

CPU 在将数据包加载到 FIFO 后设置该位。
  • 控制器在数据包发送完成后清除该位。

  • EPn_HUB_CFG (n=0-6)

    Address offset: 0x10C + n*0x40.

字段名

位位置

访问权限

复位值

描述

TARGET_FUNC_ADDR

6:0

RW

0

目标功能地址。
  • TxFuncAddr 必须在 EPn 上定义,RxFuncAddr 在 EPn 上不存在。

RSVD_7_7

7

RO

0

保留

HUB_PORT

14:8

RW

0

集线器端口。
  • TxHubPort 必须在 EPn 上定义,RxHubPort 在 EPn 上不存在。

RSVD_15_15

15

RO

0

保留

HUB_ADDR

22:16

RW

0

集线器地址。
  • TxHubAddr 必须在 EPn 上定义,RxHubAddr 在 EPn 上不存在。

MULT_TRANS

23

RW

0

支持多事务。

RSVD_24_31

31:24

RO

0

保留

  • EPn_CFG (n=0-6)

    Address offset: 0x110 + n*0x40.

字段名

位位置

访问权限

复位值

描述

AUTO_CLEAR

0

RW

0

仅在作为外设时有效。
  • 若 CPU 设置该位,则 RxPktRdy 会在所有数据从 Rx FIFO 卸载后自动清除。

DATA_END

1

RW

0

仅在作为外设且处于 RX 方向时有效。
  • CPU 设置该位以指示接收到最后一个数据。

SEND_NAK_NODATA

2

RW

0

仅在作为外设时有效。
  • 若 CPU 设置该位,控制器将在状态阶段收到 IN 令牌且 TxPktRdy 未置位时发送 NAK。

  • 默认值为 0b,控制器在状态阶段收到 IN 令牌时发送 DATA1。

ST_STAGE

3

RW

0

仅在作为外设时有效。
  • 若 CPU 设置该位,控制器进入状态阶段并接收 IN 令牌。

  • 默认值为 0b,CPU 在收到 SETUP 令牌且发现是设备到主机方向但传输大小为 0 时设置该位。

  • 此位应在设置 TxPktRdy 前设置。

RSVD_4_7

7:4

RO

0

保留

SETUP_PKT

8

RW

0

仅在作为主机时有效。
  • CPU 设置该位以请求 SETUP 事务。

STATUS_PKT

9

RW

0

仅在作为主机时有效。
  • CPU 在 TxPktRdy 或 ReqIn 位被设置的同时设置该位,执行状态阶段事务。

RSVD_10_15

15:10

RO

0

保留

MAX_PAYLOAD

23:16

RW

0x40

单次事务的最大负载。

RSVD_24_31

31:24

RO

0

保留

  • EPn_REQ_PKT_CNT (n=0-6)

    Address offset: 0x114 + n*0x40.

字段名

位位置

访问权限

复位值

描述

RX_BYTES

14:0

RO

0

FIFO 中接收到的数据字节数。

RSVD_15_31

31:15

RO

0

保留

  • EPn_EPX_TRAN (n=0-6)

    Address offset: 0x118 + n*0x40.

字段名

位位置

访问权限

复位值

描述

TX_BYTES

14:0

RO

0

FIFO 中待发送的数据字节数。

RSVD_15_31

31:15

RO

0

保留

  • EPn_RX_BYTES (n=0-6)

    Address offset: 0x120 + n*0x40.

字段名

位位置

访问权限

复位值

描述

RX_BYTES

14:0

RO

0

FIFO 中接收到的数据字节数。

RSVD_15_31

31:15

RO

0

保留

  • EPn_TX_BYTES (n=0-6)

    Address offset: 0x124 + n*0x40.

字段名

位位置

访问权限

复位值

描述

TX_BYTES

14:0

RO

0

FIFO 中待发送的数据字节数。

RSVD_15_31

31:15

RO

0

保留

  • EPn_DETAIL_INT_ST (n=0-6)

    Address offset: 0x128 + n*0x40.

字段名

位位置

访问权限

复位值

描述

SENT_STALL

0

WIC

0

仅在作为外设时有效。
  • 控制器已向主机发送 STALL 握手。

  • 此位在 CPU 读取后自动清除。

RCV_STALL

1

WIC

0

仅在作为主机时有效。
  • 控制器已接收 STALL 握手。

  • 此位在 CPU 读取后自动清除。

NO_RSP_ERR

2

WIC

0

仅在作为主机时有效。
  • 当三次尝试均未收到外设响应时置位。

  • CPU 读取后自动清除。

NAK_TIMEOUT

3

WIC

0

仅在作为主机时有效。
  • 控制器在 NAK 超过配置时间后置位。

  • CPU 读取后自动清除。

RSVD_4_4

4

RO

0

保留

SPLIT_EP_HALTED

5

WIC

0

仅在作为主机进行分裂事务时有效。
  • 外设端点被暂停。

RSVD_6_19

19:6

RO

0

保留

SET_RX_PKTRDY

20

WIC

0

控制器在接收到数据包后置位。
  • CPU 在读取数据包后清除该位。

RXFIFO_UNDERFLOW

21

WIC

0

RX FIFO 下溢。

RSVD_22_25

25:22

RO

0

保留

DATA_NOT_RDY

26

WIC

0

仅在作为外设且处于 TX 方向时有效。
  • 控制器在收到 IN 令牌但 TxPktRdy 未置位时置位。

  • CPU 可写入 0 清除。

TXFIFO_OVRFLOW

27

WIC

0

TX FIFO 上溢,因为 CPU 写入的数据超过了 FIFO 容量。

CLR_TX_PKTRDY

28

WIC

0

控制器在卸载所有数据包后置位。

CTRL_TRAN_ERR

29

WIC

0

仅在作为外设时有效。
  • 枚举过程中存在错误。

CTRL_STATUS_END

30

WIC

0

仅在 EPn 作为外设时有效。
  • 状态阶段结束。

RSVD_31_31

31

RO

0

保留

DATA_NOT_RDY

26

WIC

0

仅在作为外设且处于 TX 方向时有效。
  • 控制器在收到 IN 令牌但 TxPktRdy 未置位时置位。

  • CPU 可写入 0 清除。

TXFIFO_OVRFLOW

27

WIC

0

TX FIFO 上溢,因为 CPU 写入的数据超过了 FIFO 容量。

CLR_TX_PKTRDY

28

WIC

0

控制器在卸载所有数据包后置位。

CTRL_TRAN_ERR

29

WIC

0

仅在作为外设时有效。
  • 枚举过程中存在错误。

CTRL_STATUS_END

30

WIC

0

仅在 EPn 作为外设时有效。
  • 状态阶段结束。

RSVD_31_31

31

RO

0

保留

  • EPn_DETAIL_INT_EN (n=0-6)

    Address offset: 0x12C + n*0x40.

字段名

位位置

访问权限

复位值

描述

SENT_STALL_INT_EN

0

RW

1

发送 STALL 令牌中断使能。

RCV_STALL_INT_EN

1

RW

1

接收 STALL 令牌中断使能。

NO_RSP_ERR_INT_EN

2

RW

1

无响应错误中断使能。

NAK_TIMEOUT_INT_EN

3

RW

1

接收 NAK 超时中断使能。

RSVD_4_4

4

RO

0

保留

SPLIT_EP_HALTED_INT_EN

5

RW

1

端点暂停中断使能。

RSVD_6_19

19:6

RO

0

保留

SET_RX_PKTRDY_INT_EN

20

RW

1

设置 RxPktRdy 中断使能。

RXFIFO_UNDERFLOW_INT_EN

21

RW

1

RX FIFO 下溢中断使能。

RSVD_22_25

25:22

RO

0

保留

DATA_NOT_RDY_INT_EN

26

RW

1

接收 IN 令牌时数据未就绪中断使能。

TXFIFO_OVRFLOW_INT_EN

27

RW

1

TX FIFO 上溢中断使能。

CLR_TX_PKTRDY_INT_EN

28

RW

1

清除 TxPktRdy 中断使能。

CTRL_TRAN_ERR_INT_EN

29

RW

1

事务错误中断使能。

STATUS_END_INT_EN

30

RW

1

状态阶段结束中断使能。

RSVD_31_31

31

RO

0

保留

  • IP_VERSION

    Address offset: 0x4FC.

字段名

位位置

访问权限

复位值

描述

VERSION_NUM

31:0

RO

0x0001_0307

USB 控制器的 IP 版本号。

DMA寄存器

  • 寄存器及其对应偏移量

偏移地址

寄存器名称

功能描述

0x500

IDMA_CHNL0_CTRL

IDMA 通道 0 配置

0x504

IDMA_CHNL0_START_ADDR_L

IDMA 通道 0 起始低地址

0x50C

DMA_CHNL0_COUNT

IDMA 通道 0 数据长度配置

0x510

DMA_CHNL0_INT_ST

IDMA 通道 0 详细中断状态

0x514

DMA_CHNL0_INT_EN

IDMA 通道 0 中断使能

0x520

IDMA_CHNL1_CTRL

IDMA 通道 1 配置

0x524

IDMA_CHNL1_START_ADDR_L

IDMA 通道 1 起始低地址

0x52C

DMA_CHNL1_COUNT

IDMA 通道 1 数据长度配置

0x530

DMA_CHNL1_INT_ST

IDMA 通道 1 详细中断状态

0x534

DMA_CHNL1_INT_EN

IDMA 通道 1 中断使能

0x540

IDMA_CHNL2_CTRL

IDMA 通道 2 配置

0x544

IDMA_CHNL2_START_ADDR_L

IDMA 通道 2 起始低地址

0x54C

DMA_CHNL2_COUNT

IDMA 通道 2 数据长度配置

0x550

DMA_CHNL2_INT_ST

IDMA 通道 2 详细中断状态

0x554

DMA_CHNL2_INT_EN

IDMA 通道 2 中断使能

0x560

IDMA_CHNL3_CTRL

IDMA 通道 3 配置

0x564

IDMA_CHNL3_START_ADDR_L

IDMA 通道 3 起始低地址

0x56C

DMA_CHNL3_COUNT

IDMA 通道 3 数据长度配置

0x570

DMA_CHNL3_INT_ST

IDMA 通道 3 详细中断状态

0x574

DMA_CHNL3_INT_EN

IDMA 通道 3 中断使能

0x580

IDMA_CHNL4_CTRL

IDMA 通道 4 配置

0x584

IDMA_CHNL4_START_ADDR_L

IDMA 通道 4 起始低地址

0x58C

DMA_CHNL4_COUNT

IDMA 通道 4 数据长度配置

0x590

DMA_CHNL4_INT_ST

IDMA 通道 4 详细中断状态

0x594

DMA_CHNL4_INT_EN

IDMA 通道 4 中断使能

0x5A0

IDMA_CHNL5_CTRL

IDMA 通道 5 配置

0x5A4

IDMA_CHNL5_START_ADDR_L

IDMA 通道 5 起始低地址

0x5AC

DMA_CHNL5_COUNT

IDMA 通道 5 数据长度配置

0x5B0

DMA_CHNL5_INT_ST

IDMA 通道 5 详细中断状态

0x5B4

DMA_CHNL5_INT_EN

IDMA 通道 5 中断使能

0x5C0

IDMA_CHNL6_CTRL

IDMA 通道 6 配置

0x5C4

IDMA_CHNL6_START_ADDR_L

IDMA 通道 6 起始低地址

0x5CC

DMA_CHNL6_COUNT

IDMA 通道 6 数据长度配置

0x5D0

DMA_CHNL6_INT_ST

IDMA 通道 6 详细中断状态

0x5D4

DMA_CHNL6_INT_EN

IDMA 通道 6 中断使能

0x700

DMA_TIMEOUT

IDMA 请求超时配置

0x704

DMA_CHNL_INT_ST

IDMA 全局通道中断状态

  • IDMA_CHNLn_CTRL (n=0-6)

    Address offset: 0x500 + (n * 0x20).

字段名

位位置

访问权限

复位值

描述

DMA_EN

0

RW

0

使能 IDMA 通道 n。

DMA_DIR

1

RW

0

通道 n 的 DMA 方向:
  • ‘0’: DMA 写入(RX 端点)

  • ‘1’: DMA 读取(TX 端点)

DMA_MOD

2

RW

0

通道 n 的 DMA 模式:
  • ‘0’: 单包模式

  • ‘1’: 多包模式

INT_EN

3

RW

0

通道 n 中断使能。

EPN_SEL

7:4

RW

0

通道 n 所选端点。

BURST_MODE

11:8

RW

7

通道 n 流总线突发模式配置。

RSVD_12_31

31:12

RO

0

保留

  • IDMA_CHNLn_START_ADDR_L (n=0-6)

    Address offset: 0x504 + (n * 0x20).

字段名

位位置

访问权限

复位值

描述

DMA_STR_ADDRL

31:0

RW

0

IDMA 通道 n 到流引擎的低地址。

  • DMA_CHNLn_COUNT (n=0-6)

    Address offset: 0x50C + (n * 0x20).

字段名

位位置

访问权限

复位值

描述

COUNT

31:0

RW

0

IDMA 通道 n 转移字节数配置。

  • DMA_CHNLn_INT_ST (n=0-6)

    Address offset: 0x510 + (n * 0x20).

字段名

位位置

访问权限

复位值

描述

INT_ST

5:0

WIC

0

通道中断状态,读取后自动清除:
  • ‘b000001’: EP 忙超时

  • ‘b000010’: 当计数不为 0 时,EP 长度为 0 超时

  • ‘b000100’: 多包模式下,计数为 0 且 EP 长度不为 0

  • ‘b001000’: 总线错误

  • ‘b010000’: 空传输(当 IDMA 启用时,计数为 0 或计数不为 0 且 EP 长度为 0)

  • ‘b100000’: 正常传输完成

RSVD_6_31

31:6

RO

0

保留

  • DMA_CHNLn_INT_EN (n=0-6)

    Address offset: 0x514 + (n * 0x20).

字段名

位位置

访问权限

复位值

描述

INT_EN

5:0

RW

0

通道中断状态位使能: - ‘b000001’: 使能通道 n 的 Insta[0] - ‘b000010’: 使能通道 n 的 Insta[1] - ‘b000100’: 使能通道 n 的 Insta[2] - ‘b001000’: 使能通道 n 的 Insta[3] - ‘b010000’: 使能通道 n 的 Insta[4] - ‘b100000’: 使能通道 n 的 Insta[5]

RSVD_6_31

31:6

RO

0

保留

  • DMA_TIMEOUT

    Address offset: 0x700.

字段名

位位置

访问权限

复位值

描述

TIMOUT

31:0

RW

1000

等待超时的周期数。

  • DMA_CHNL_INT_ST

    Address offset: 0x704.

字段名

位位置

访问权限

复位值

描述

CHNL0_INT

0

WIC

0

通道 0 中断。

CHNL1_INT

1

WIC

0

通道 1 中断。

CHNL2_INT

2

WIC

0

通道 2 中断。

CHNL3_INT

3

WIC

0

通道 3 中断。

CHNL4_INT

4

WIC

0

通道 4 中断。

CHNL5_INT

5

WIC

0

通道 5 中断。

CHNL6_INT

6

WIC

0

通道 6 中断。

RSVD_7_30

30:7

RO

0

保留

EP_IDLE_IND

31

RO

1

此位用于 IDMA 流引擎的总线错误。
  • 一旦 IDMA 检测到流引擎的读写总线错误,

  • 中断状态位 3 将被置位,CPU 将收到中断。

  • 若收到总线错误中断,软件应停止配置 DMA,

  • 并等待此位变为高电平,表示所有端点均空闲,

  • 然后重置整个 IP 并重新配置以启动重传。