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控制器架构图
每个模块的详细描述如下:
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 |
|
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 |
|
FS_PHY_SPEED |
8 |
RW |
0 |
|
FS_PHY_MODE |
9 |
RW |
0 |
|
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 |
|
HOST_REQ |
2 |
RW |
0 |
B 设备希望切换到主机模式时,该位设为 1。 |
RSVD_3_3 |
3 |
RO |
0 |
保留 |
A_DEV |
4 |
RO |
0 |
|
VBUS |
6:5 |
RO |
0 |
|
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 |
|
RSVD_1_7 |
7:1 |
RO |
0 |
保留 |
XCLK_PLL_DIV |
11:8 |
RW |
7 |
XCLK PLL 分频因子。 |
XCLK_PLL_EN |
12 |
RW |
1 |
|
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 |
|
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 |
|
RSVD_2_2 |
2 |
RO |
0 |
保留 |
DIS_PING |
3 |
RW |
0 |
|
REQ_IN |
4 |
RW |
0 |
|
RSVD_5_5 |
5 |
RO |
0 |
保留 |
TARGET_SPEED |
7:6 |
RW |
0 |
|
NAK_LIMIT |
12:8 |
RW |
0 |
|
RSVD_13_29 |
29:13 |
RO |
0 |
保留 |
RX_PKT_RDY |
30 |
RW |
0 |
|
TX_PKT_RDY |
31 |
RW |
0 |
|
EPn_HUB_CFG (n=0-6)
Address offset: 0x10C + n*0x40.
字段名 |
位位置 |
访问权限 |
复位值 |
描述 |
|---|---|---|---|---|
TARGET_FUNC_ADDR |
6:0 |
RW |
0 |
|
RSVD_7_7 |
7 |
RO |
0 |
保留 |
HUB_PORT |
14:8 |
RW |
0 |
|
RSVD_15_15 |
15 |
RO |
0 |
保留 |
HUB_ADDR |
22:16 |
RW |
0 |
|
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 |
|
DATA_END |
1 |
RW |
0 |
|
SEND_NAK_NODATA |
2 |
RW |
0 |
|
ST_STAGE |
3 |
RW |
0 |
|
RSVD_4_7 |
7:4 |
RO |
0 |
保留 |
SETUP_PKT |
8 |
RW |
0 |
|
STATUS_PKT |
9 |
RW |
0 |
|
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 |
|
RCV_STALL |
1 |
WIC |
0 |
|
NO_RSP_ERR |
2 |
WIC |
0 |
|
NAK_TIMEOUT |
3 |
WIC |
0 |
|
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 |
|
RXFIFO_UNDERFLOW |
21 |
WIC |
0 |
RX FIFO 下溢。 |
RSVD_22_25 |
25:22 |
RO |
0 |
保留 |
DATA_NOT_RDY |
26 |
WIC |
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 |
|
RSVD_31_31 |
31 |
RO |
0 |
保留 |
DATA_NOT_RDY |
26 |
WIC |
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 |
|
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 |
|
DMA_MOD |
2 |
RW |
0 |
|
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 |
|
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 |
|