.. _hs_intf_usb: 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控制器顶层框图所示。 .. figure:: /assets/images/usb_top_arch.png :alt: usb_top_arch :height: 300px :align: center 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 并重新配置以启动重传。 ==================== ======== ========= =========== ==================================================================================================================