USER GUIDE / CONNECTIVITY & NETWORKING / USB 2 / REGISTER DESCRIPTION
寄存器描述
控制和状态寄存器
OTG 控制和状态寄存器控制内核 OTG 功能的行为并反映其状态。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:21 | Reserved | 写入无影响,读取为零。 | R |
| 20 | OTGVer | OTG 版本 表示 OTG 版本。 1'b0:OTG 版本 1.3。 在此版本中,内核支持用于 SRP 的数据线脉冲和 VBus 脉冲。 1'b1:OTG2.0 版。 在此版本中,内核仅支持 SRP 的数据线脉冲。 | RW |
| 19 | BSesVld | B 会话有效 模式:仅设备 指示设备模式收发器状态。 1'b0:B 会话无效。 1'b1:B 会话有效。 在 OTG 模式下,可以使用该位确定设备是否已连接或断开。 | R |
| 18 | ASesVld | A 会话有效 | R |
| 17 | DbncTime | 长/短消抖时间 模式:仅主机 指示检测到的连接的消抖时间。 1'b0:长消隐时间,用于物理连接(100 ms+2.5 μs) 1'b1:短消抖时间,用于软连接(2.5 μs) | R |
| 16 | ConIDSts | 连接器 ID 状态 模式:主机和设备 指示连接事件中的连接器 ID 状态。 1'b0:DWC_otg 内核处于 A-Device 模式 1'b1:DWC_otg 内核处于 B 设备模式 | R |
| 15:12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | DevHNPEn | 设备 HNP 已启用 模式:仅设备 当应用程序成功接收到来自所连接 USB 主机的 SetFeature.SetHNPEnable 命令时,会设置该位。 1'b0:应用程序未启用 HNP 1'b1:应用程序已启用 HNP | RW |
| 10 | HstSetHNPEn | 主机设置 HNP 启用 模式:仅主机 应用程序在连接设备上成功启用 HNP(使用 SetFeature.SetHNPEnable 命令) 后设置该位。 1'b0:HostSetHNP 未启用 1'b1:主机设置 HNP 已启用 | RW |
| 9 | HNPReq | HNP 请求 模式:仅设备 应用程序设置该位可向所连接的 USB 主机发起 HNP 请求。 当 OTG 中断寄 存器(GOTGINT.HstNegSucStsChng)中的 “主机协商成功状态变化 ”位被 设置时,应用程序可通过写入 0 清除该位。 当 HstNegSucStsChng 位清零时, 内核将清零该位。 | RW |
| 8 | HstNegScs | 主机协商成功 模式:仅设备 主机协商成功时,核心会设置该位。 当寄存器中的 HNP 请求 (HNPReq) 位被 设置时,内核会清除该位。 1'b0:主机协商失败 1'b1:主机协商成功 | R |
| 7 | BvalidOvVal | B-外设会话有效覆盖值 模式:仅设备 该位用于设置 GOTGCTL.BvalidOvEn 时 Bvalid 信号的覆盖值。 1'b0:当 GOTGCTL.BvalidOvEn =1 时,Bvalid 值为 1'b0 1'b1:当 GOTGCTL.BvalidOvEn =1 时,Bvalid 值为 1'b1 | RW |
| 6 | BvalidOvEn | B-外设会话有效覆盖启用 模式:仅设备 该位用于启用/禁用软件使用 GOTGCTL.BvalidOvVal 覆盖 Bvalid 信号。 1'b0:禁用覆盖,强制在内部使用所选 PHY 的 bvalid 信号 1'b1:内部使用 GOTGCTL.BvalidOvVal 覆盖从 PHY 接收的 Bvalid | RW |
| 5 | AvalidOvVal | A-外设会话有效覆盖值 模式:仅主机 当设置 GOTGCTL.AvalidOvEn 时,该位用于设置 Avalid 信号的覆盖值。 1'b0:当 GOTGCTL.AvalidOvEn=1 时,Avalid 值为 1'b0 1'b1:当 GOTGCTL.AvalidOvEn=1 时,估值为 1'b1 | RW |
| 4 | AvalidOvEn | A-外设会话有效覆盖启用 模式:仅主机 该位用于启用/禁用软件使用 GOTGCTL.AvalidOvVal 覆盖 Avalid 信号。 1'b0:覆盖被禁用,内核在内部使用所选 PHY 的 avalid 信号 1'b1:内部使用 GOTGCTL.AvalidOvVal 覆盖从 PHY 接收的有效值 | RW |
| 3 | VbvalidOvVal | VBUS 有效覆盖值 模式:仅主机 当设置 GOTGCTL.VbvalidOvEn 时,该位用于设置 vbusvalid 信号的覆盖值。 1'b0:当 GOTGCTL.VbvalidOvEn =1 时,vbusvalid 值为 1'b0 1'b1:当 GOTGCTL.VbvalidOvEn =1 时,vbusvalid 值为 1'b1 | RW |
| 2 | VbvalidOvEn | VBUS 有效覆盖启用 模式:仅主机 该位用于启用/禁用软件使用 GOTGCTL.VbvalidOvVal 覆盖 Bvalid 信号。 1'b0:覆盖被禁用,内核内部使用所选 PHY 的 bvalid 信号 1'b1:内部使用 GOTGCTL.VbvalidOvVal.VBUS Valid 覆盖启用从 PHY 接收 的 Bvalid | RW |
| 1 | SesReq | 会话请求 模式:仅设备 应用程序设置该位可在 USB 上启动会话请求。 当 OTG 中断寄存器中的主机 协商成功状态变化位(GOTGINT.HstNegSucStsChng)为 SET 时,应用可通 过写入 0 清除该位。 当 HstNegSucStsChng 位被清除时,内核将清除该位。 1'b0:无会话请求 1'b1:会话请求 | RW |
| 0 | SesReqScs | 会话请求成功 模式:仅设备 会话请求启动成功时,内核设置该位。 1'b0:会话请求失败 1'b1:会话请求成功 | R |
中断寄存器
每当发生 OTG 中断时,应用程序就会读取该寄存器,并清除该寄存器中的位以清除 OTG 中断。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:20 | Reserved | 写入无影响,读取为零。 | R |
| 19 | DbnceDone | 去抖动完成 写行为: 一键清除 | R_SS_WC |
| 18 | ADevTOUTChg | A-设备超时更改 写入行为:写 1 清除 模式:主机和设备 主机和设备 核心设置该位表示 A 设备在等待 B 设备连接时超时。 | R_SS_WC |
| 17 | HstNegDet | 检测到主机协商 写入行为:写 1 清除 模式:主机和设备 内核检测到 USB 上的主机协商请求时会设置该位。 该位只能由 内核设置,应用程序应写入 1 将其清除。 | R_SS_WC |
| 16:10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | HstNegSucStsChng | 主机协商成功状态变化 写入行为:写 1 为清零 模式:主机和设备 核心会在 USB 主机协商请求成功或失败时设置该位。 应用程序 必须读取 OTG 控制和状态寄存器(GOTGCTL.HstNegScs) 的主机协商成功位,以检查成功或失败。 该位只能由内核设置, 应用程序应写入 1 以清除该位。 | R_SS_WC |
| 8 | SesReqSucStsChng | 会话请求成功状态变化 写入行为:写 1 清除 模式:主机和设备 核心会在会话请求成功或失败时设置该位。 应用程序必须读取 OTG 控制和状态寄存器 (GOTGCTL.SesReqScs) 中的会话 请求成功位,以检查成功或失败。 | R_SS_WC |
| 7:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | SesEndDet | 检测到会话结束 写入行为:写 1 为清零 模式:主机和设备 当 utmiotg_bvalid 信号断开时,内核会设置该位。该位只能由 内核设置,应用程序应写入 1 以清除该位。 | R_SS_WC |
| 1:0 | Reserved | 写入无影响,读取为零。 | R |
AHB 配置寄存器
该寄存器可用于在上电或更改模式后配置内核。该寄存器主要包含与 AHB 系统相关的配置参数。初始编程后,请勿更改该寄存器。应用程序必须在 AHB 或 USB 上开始任何事务之前对该寄存器进行编程。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:25 | Reserved | 写入无影响,读取为零。 | R |
| 24 | InvDescEndianness | 逆描述符尾数 模式:主机和设备 1'b0:描述符字节序与 AHB 主字节序相似 1'b1: - 如果 AHB 主端位为大端位,则描述符端位为小端位。 - 如果 AHB 主端位为 LittleEndian,则描述符端位为 Big Endian。 | RW |
| 23 | AHBSingle | AHBS 单支持 模式:主机和设备 当 DWC_otg 内核以 DMA 模式运行时,该位编程后支持传输中剩余数 据的单次传输。 1'b0:这是默认模式。 当该位设置为 1'b0 时,传输中的剩余数据将使用 INCR 突发大小发送。 1'b1:当设置为 1'b1 时,传输中的剩余数据使用单突发大小发送。 注意:如果启用此功能,AHBRETRY 和 SPLIT 传输仍使用 INCR 突 发类型。 当连接到 DWC_otg 内核的 AHB 从站不支持 INCR 突发(以 及总线中未使用 Split 和 Retry 事务)时,请启用此功能。 | RW |
| 22 | NotiAllDmaWrit | 通知所有 DMA 写入事务 模式:主机和设备 对该位进行编程,可启用通道/端点对应的所有 DMA 写事务的系统 DMA 完成功能。 该位仅在 GAHBCFG.RemMemSupp 设置为 1 时有 效。 GAHBCFG.NotiAllDmaWrit= 1 DWC_otg 内核为 AHB 接口上的所有 DMA 写事务断言 int_dma_req,同时断言 int_dma_done、chep_last_transact 和 chep_number 信号信息。 内核等待所有 DMA 写事务的 sys_dma_done 信号,以完成特定通道/端点的传输。 GAHBCFG.NotiAllDmaWrit= 0 DWC_otg 内核仅对与特定通道/端点相对应的 DMA 写传输的最后一个 事务发出 int_dma_req 信号。 同样,内核也只为完成特定通道/端点传 输的 DMA 写入事务等待 sys_dma_done 信号。 | RW |
| 21 | RemMemSupp | 远程内存支持 模式:主机和设备 对该位进行编程可启用功能,在 DMA 写入传输时等待系统 DMA 完成 信号。 GAHBCFG.RemMemSupp=1 当 HSOTG DMA 开始对外部存储器进行写入传输时,int_dma_req 输 出信号被确认。 当内核完成传输时,它会断言 int_dma_done 信号,以 标志 HSOTG 的 DMA 写入完成。 然后,内核等待系统发出 sys_dma_done 信号,继续完成与特定通道/端点相对应的数据传输。 GAHBCFG.RemMemSupp=0 int_dma_req 和 int_dma_done 信号不会被断言,一旦在 HSOTG 内 核边界完成 DMA 写入传输,内核就会继续断言 XferComp 中断,而不 会等待 sys_dma_done 信号来完成数据传输。 | RW |
| 20:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | NPTxFEmpLvl | 非周期性 TxFIFO 空电平 模式:主机和设备 该位仅用于从机模式。 在主机模式下,该位指示何时触发核心中断寄存 器中的非周期性 TxFIFO 空中断位 (GINTSTS.NPTxFEmp)。 在设备模式下,该位指示何时触发 IN 端点发送 FIFO 空中断 | RW |
| 6 | Reserved | 写入无影响,读取为零。 | R |
| 5 | DMAEn | 启用 DMA 模式:主机和设备 1'b0:内核以从模式运行 1'b1:核心以 DMA 模式运行 | RW |
| 4:1 | HBstLen | 发长度/类型 模式:主机和设备 此字段用于内部 DMA 模式。 内部 DMA 模式-AHB 主突发类型: 4'b0000SINGLE 4'b0001 INCR 4'b0011INCR4 4'b0101 INCR8 4'b0111INCR16 4'b1001 INCR32 其他:保留 | RW |
| 0 | GlblIntrMsk | 全局中断屏蔽 模式:主机和设备 应用程序使用该位屏蔽或解除屏蔽自己的中断线路断言。 无论该位设置 如何,内核都会更新中断状态寄存器。 1'b0:向应用程序屏蔽中断断言。 1'b1:向应用程序解除中断断言屏蔽。 | RW |
USB 配置寄存器
该寄存器可用于在上电或切换到主机模式或设备模式后配置内核,它包含 USB 和 USB-PHY 相关的配置参数。在 AHB 或 USB 上开始任何事务之前,应用程序必须对该寄存器进行编程。初始编程后,请勿更改该寄存器。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | CorruptTxPkt | 发送数据包损坏 模式:主机和设备 该位仅供调试使用。 应用程序应始终将 1'b0 写入该位。 | W |
| 30 | ForceDevMode | 强制设备模式 模式:主机和设备 无论 utmiotg_iddig 输入引脚的情况如何,向该位写 1 都会强制内核进 入设备模式。 1'b0:正常模式 1'b1:强制设备模式 设置强制位后,应用程序必须等待至少 25 毫秒才能使更改生效。 当模 拟处于缩放模式时,等待 500μs 即可。 | RW |
| 29 | ForceHstMode | 强制主机模式 模式:主机和设备 无论 utmiotg_iddig 输入引脚的情况如何,向该位写 1 都会强制内核进 入主机模式。 1'b0:正常模式 1'b1:强制主机模式 设置强制位后,应用程序必须等待至少 25 毫秒才能使更改生效。 当模 拟处于缩放模式时,等待 500 μs 即可。 | RW |
| 28 | TxEndDelay | 发送结束延迟 模式:仅设备 向该位写入 1'b1 可使内核在远程唤醒期间遵循 opmode 信号的 TxEndDelay 时序。 1'b0:正常模式 | RW |
| 27 | Reserved | 写入无影响,读取为零。 | R |
| 26 | IC_USBCap | IC_USB-Capable 模式:主机和设备 应用程序使用该位控制 DWC_otg 内核的 IC_USB 功能。 1'b0:未选择 IC_USB PHY 接口 1'b1:已选择 IC_USB PHY 接口 | R |
| 25:23 | Reserved | 写入无影响,读取为零。 | R |
| 22 | TermSelDLPulse | TermSelDLine 脉冲选择 模式:仅设备 该位用于选择在 SRP 期间驱动数据线脉冲的 utmi_termselect。 1'b0:使用 utmi_txvalid 驱动数据线脉冲(默认) 1'b1:使用 utmi_termsel 进行数据线脉冲 | RW |
| 21:17 | Reserved | 写入无影响,读取为零。 | R |
| 16 | OtgI2CSel | UTMIFS 或 I2C 接口选择 模式:主机和设备 应用程序使用该位选择 I2C 接口。 1'b0:用于 OTG 信号的 UTMIUSB 1.1 全速接口 1'b1:用于 OTG 信号的 I2C 接口 | R |
| 15 | PhyLPwrClkSel | PHY 低功耗时钟选择 模式:主机和设备 选择 480-MHz 或 48-MHz(低功耗)PHY 模式。 在 FS 和 LS 模式 下,PHY 通常以 48-MHz 时钟运行,以节省功耗。 1'b0:480-MHz 内部 PLL 时钟 1'b1:48-MHz 外部时钟 在 480MHz 模式下,UTMI 接口的工作频率为 30MHz,数据宽度为 16 位。 在 48 MHz 模式下,UTMI 接口在 FS 模式下工作频率为 48 MHz,在 LS 模式下工作频率为 48 或 6MHz(取决于 PHY 供应商)。 该位驱动 utmi_fsls_low_power 内核输出信号。 | RW |
| 14 | Reserved | 写入无影响,读取为零。 | R |
| 13:10 | USBTrdTim | USB 周转时间 模式:仅设备 以 PHY 时钟为单位设置周转时间。 指定 MAC 请求包 FIFO 控制器 | RW |
| 9 | HNPCap | 支持 HNP 模式:主机和设备 应用程序使用该位控制 DWC_otg 内核的 HNP 功能。 1'b0:HNP 功能未启用。 1'b1:启用 HNP 功能。 如果软件禁用了 HNP 功能,则 PHY 域上的 OTG 信号必须绑定到适 当的值。 | RW |
| 8 | SRPCap | 支持 SRP 模式:主机和设备 应用程序使用该位控制 DWC_otg 内核的 SRP 功能。 如果内核作为不 支持 SRP 的 B 设备运行,则无法请求所连接的 A 设备(主机)激活 VBUS 并启动会话。 1'b0:SRP 功能未启用。 1'b1:已启用 SRP 功能。 如果软件禁用 SRP 功能,则必须将 PHY 域上的 OTG 信号绑定到适 当的值。 | RW |
| 7 | Reserved | 写入无影响,读取为零。 | R |
| 6 | PHYSel | USB 2.0 高速物理层或 USB 1.1 全速串行收发器选择 模式:主机和设备 应用程序使用该位选择高速 UTMI+ 或 ULPI PHY 或全速收发器。 1'b0:USB 2.0 高速 UTMI+ 或 ULPIPHY 1'b1:USB 1.1 全速串行收发器 | R |
| 5 | FSIntf | 全速串行接口选择 模式:主机和设备 应用程序使用该位选择单向或双向 USB 1.1 全速串行收发器接口。 1'b0:6 针单向全速串行接口 | R |
| 4 | ULPI_UTMI_Sel | ULPI 或 UTMI+ 选择 模式:主机和设备 应用程序使用该位选择 UTMI+ 接口或 ULPI 接口。 1'b0:UTMI+ 接口 1'b1:ULPI 接口 | R |
| 3 | PHYIf | PHY 接口 模式:主机和设备 应用程序使用该位配置内核,以支持具有 8 位或 16 位接口的 UTMI+ PHY。 1'b0:8 位 1'b1:16 位 | R |
| 2:0 | TOutCal | HS/FS 超时校准 模式:主机和设备 应用程序在该字段中编程的 PHY 时钟数被添加到内核中的高速/全速 包间超时持续时间中,以考虑 PHY 带来的任何额外延迟。 这可能是必 要的,因为 PHY 在生成线路状态条件时引入的延迟可能因 PHY 而 异。 高速运行的 USB 标准超时值为 736 至 816(含)位时间。 全速运行 的 USB 标准超时值为 16 至 18(含)位倍。 应用程序必须根据枚举 速度对该字段进行编程。 每个 PHY 时钟增加的位次数如下: 高速运行: 一个 30-MHzPHY 时钟 = 16 位次数 一个 60-MHzPHY 时钟 = 8 位次数 全速运行: 一个 30-MHzPHY 时钟 = 0.4 位次数 一个 60-MHzPHY 时钟 = 0.2 位次数 一个 48-MHzPHY 时钟 = 0.25 位次数 以 HS 为例,如果将 ToutCal 设置为 “001”,则会增加一个 30MHz PHY 时钟或 16 位次数。 如果将 ToutCal 设置为 “010”,则增加两 个 30MHzPHY 时钟或 32 位时间,依此类推。 这 3 个比特最多可添 加 7 个 PHY 时钟,比特次数取决于速度和使用的 PHY 时钟。 | RW |
复位寄存器
应用程序使用该寄存器复位内核的各种硬件功能。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | AHBIdle | AHB 主空闲 模式:主机和设备 表示 AHB 主状态机处于 IDLE 状态。 | R |
| 30 | DMAReq | DMA 请求信号 模式:主机和设备 表示 DMA 请求正在进行中。 用于调试。 | R |
| 29:11 | Reserved | 写入无影响,读取为零。 | R |
| 10:6 | TxFNum | TxFIFO 编号 模式:主机和设备 这是必须使用 TxFIFO 刷新位刷新的 FIFO 编号。 在内核清除 TxFIFO 刷 新位之前,不得更改该字段。 ■5' h0: - 主机模式下的非周期性 TxFIFO 刷新 - 在设备模式下刷新 TxFIFO 0 ■5' h1: - 在主机模式下周期性刷新 TxFIFO - 设备模式下的 TXFIFO 1 刷新 ■5' h2: - 设备模式下的 TXFIFO 2 刷新 ... 5' hF: -TXFIFO15 在设备模式下刷新 ■5' h10: - 在设备或主机模式下刷新所有发送 FIFO。 | RW |
| 5 | TxFFlsh | TxFIFO 清除 写入行为:一个设置 模式:主机和设备 该位可选择性地刷新单个或所有传输 FIFO,但如果内核正在进行事务处 理,则无法刷新。 应用程序必须在检查内核既未向 TxFIFO 写入也未从 TxFIFO 读取数据 后,才能写入该位。 使用这些寄存器进行验证: 读取 -NAK 有效中断确保内核没有从 FIFO 读取数据 写 -GRSTCTL.AHBIdle 可确保内核未向 FIFO 写入任何内容。 通常建议在重新配置 FIFO 或在共享 FIFO 和专用传输 FIFO 操作之间 切换时进行刷新。 在设备端点禁用期间,也建议进行 FIFO 冲洗。 应用程 序在执行任何操作前必须等待内核清除该位。 使用较慢的 phy_clk 或 hclk 时钟清除该位需要 8 个时钟。 | R_WS_SC |
| 4 | RxFFlsh | RxFIFO 清除 写入行为:置 1 模式:主机和设备 应用程序可使用该位刷新整个 RxFIFO,但必须首先确保内核不在事务处理 中。 应用必须在检查内核既未从 RxFIFO 读取数据,也未向 RxFIFO 写入 数据后,才能写入该位。 在执行任何其他操作之前,应用程序必须等待该位清零。 清除该位需要 8 个 时钟(PHY 或 AHB 时钟中最慢的时钟)。 | R_WS_SC |
| 3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | FrmCntrRst | 主机帧计数器复位 写入行为:置 1 模式:仅主机 应用写入该位可重置内核中的(微)帧数计数器。 当(微)帧计数器被重置 后,内核随后发送的 SOF 的(微)帧编号将为 0。 如果应用程序向该位写入 1,则可能无法读回该值,因为该值会在几个时钟 周期内被内核清零。 | R_WS_SC |
| 1 | Reserved | 写入无影响,读取为零。 | R |
| 0 | CSftRst | 核心软重置 写入行为:一至设置 模式:主机和设备 重置 hclk 和 phy_clock 域如下: 清除中断和所有 CSR 寄存器,以下寄存器位除外: PCGCCTL.RstPdwnModule; PCGCCTL.GateHclk; PCGCCTL.PwrClmp; PCGCCTL.StopPPhyLPwrClkSelclk; GUSBCFG.PhyLPwrClkSel; GUSBCFG.DDRSel; GUSBCFG.PHYSel; GUSBCFG.FSIntf; GUSBCFG.ULPI_UTMI_Sel; GUSBCFG.PHYIf GUSBCFG.PHYIf; GUSBCFG.TxEndDelay; GUSBCFG.TermSelDLPulse; GUSBCFG.ULPIClkSusM; GUSBCFG.ULPIAutoRes; GUSBCFG.ULPIFsLs; GGPIO; GPWRDN; GADPCTL; HCFG.FSLSPclkSel; DCFG.DevSpd; DCTL.SftDiscon。 所有模块状态机(AHB 从属单元除外)复位至 IDLE 状态,所有发送 FIFO 和接收 FIFO 被刷新。 AHB 主单元上的任何事务都会在优雅地完成 AHB 传输的最后一个数据阶 段后尽快终止。 USB 上的任何事务都会立即终止。 启用休眠或 ADP 功能时,PMU 模块不会被核心软复位复位。 应用程序可在任何需要复位内核的时候写入该位。 这是一个自清零位,内核 会在重置内核中所有必要逻辑后清零该位,这可能需要几个时钟,具体取决 于内核的当前状态。 清除该位后,应用程序必须至少等待 3 个 PHY 时钟 才能访问 PHY 域(同步延迟)。 在开始任何操作前,应用程序还必须检查 寄存器的第 31 位是否为 1(AHB 主控处于 IDLE 状态)。 通常情况下,软件复位用于软件开发,以及动态更改上述 USB 配置寄存器 中的 PHY 选择位时。 更改 PHY 时,会为 PHY 选择相应的时钟并在 PHY 域中使用。 选择新时钟后,必须复位 PHY 域才能正常运行。 | R_WS_SC |
中断寄存器
该寄存器用于在当前模式(设备模式或主机模式)下为系统级事件中断应用程序。寄存器中的某些位仅在主机模式下有效,而其他位仅在设备模式下有效。要清除 R_SS_WC 类型的中断状态位,应用程序必须向该位写入 1'b1。FIFO 状态中断是只读的;一旦软件在服务这些中断时读取或写入 FIFO,FIFO 中断条件将自动清除。应用程序必须在初始化时清除 GINTSTS 寄存器,然后再取消中断位屏蔽,以避免在初始化前产生任何中断。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | WkUpInt | 检测到恢复/远程唤醒中断 写入行为:一键清除 模式:主机和设备 在挂起 (L2) 或 LPM(L1) 状态下的唤醒中断。 挂起(L2)期间: - 设备模式 - 只有在 USB 上检测到主机启动复位时才会断言该中断。 - 主机模式 - 只有在 USB 上检测到设备启动远程唤醒时才会断言该中 断。 在 LPM(L1) 期间: - 设备模式 - 在 USB 上检测到 “主机启动恢复 ”或 “设备启动远程 唤醒 ”时断言该中断。 - 主机模式 - 在主机启动恢复或设备启动 USB 远程唤醒时断言该中 断。 | R_SS_WC |
| 30 | SessReqInt | 会话请求/检测到新会话中断 写入行为:清零 模式:主机和设备 在主机模式下,当检测到来自设备的会话请求时,会断言该中断。 在设备模式下,当 utmisrp_bvalid 信号变为高电平时,会断言该中断。 | R_SS_WC |
| 29 | DisconnInt | 检测到断开中断 写入行为:一清除 模式:仅主机 检测到设备断开时馈通。 | R_SS_WC |
| 28 | ConIDStsChng | 连接器 ID 状态更改 写行为:一键清除 模式:主机和设备 当连接器 ID 状态发生变化时,内核会设置该位。 | R_SS_WC |
| 27 | Reserved | 写入无影响,读取为零。 | R |
| 26 | PTxFEmp | 周期性 TxFIFO 空 模式:仅主机 当定期发送 FIFO 为半空或全空,且定期请求队列中至少有一个条目可 写入时,断言该中断。 半空或全空状态由核心 AHB 配置寄存器 (GAHBCFG.PTxFEmpLvl) 中的定期 TxFIFO 空位决定。 | R |
| 25 | HChInt | 主机通道中断 模式:仅主机 内核设置该位,以指示内核的一个通道(在主机模式下)正在等待中断。 应用程序必须读取主机全通道中断 (HAINT) 寄存器,以确定发生中断的 通道的确切编号,然后读取相应的主机通道-n 中断 (HCINTn) 寄存器, 以确定中断的确切原因。 应用程序必须清除 HCINTn 寄存器中的相应状 态位才能清除该位。 | R |
| 24 | PrtInt | 主机端口中断 模式:仅主机 在主机模式下,内核设置该位以指示其中一个 DWC_otg 内核端口的端 口状态发生变化。 应用程序必须读取主机端口控制和状态 (HPRT) 寄存 器,以确定导致该中断的确切事件。 应用程序必须清除主机端口控制和状 态寄存器中的相应状态位,才能清除该位。 | R |
| 23 | ResetDet | 重置检测到的中断 写入行为:1清除 模式:仅设备 在 “设备 ”模式下,当设备处于 “挂起 ”状态时,在部分掉电模式下 检测到 USB 复位,则断言该中断。 | R_SS_WC |
| 22 | FetSusp | 暂停数据读取 写行为:一键清除 模式:仅设备 该中断仅在 DMA 模式下有效。 该中断表示,由于 TxFIFO 空间或请求 队列空间不可用,内核已停止为 IN 端点获取数据。 该中断由应用程序用 于端点不匹配算法。 例如,在检测到端点不匹配后,应用程序将执行以下操作: • 设置全局非周期性 IN NAK 握手 • 禁用 In 端点 • 刷新 FIFO • 从 IN 令牌序列学习队列中确定令牌序列 • 重新启用端点 • 清除全局非周期性 IN NAK 握手 如果全局非周期性 INNAK 被清除,则核心尚未获取 IN 端点的数据, 且已收到 IN 标记。 内核会生成 “当 FIFO 空时收到 IN 标记 ”中断。 然后,DWC_otg 向主机发送 NAK 响应。 为了避免这种情况,应用程序 可以检查 GINTSTS.FetSusp 中断,确保在清除全局 NAK 握手之前 FIFO 已满。 或者,应用程序可以在清除全局 INNAK 握手时屏蔽 “当 FIFO 空时收 到 IN 标记 ”中断。 | R_SS_WC |
| 21 | incomplP | 不完整的周期性转移 写入行为:一键清除 模式:仅主机 在主机模式下,当有未完成的定期事务仍在等待处理时,内核会设置该中 断位,这些事务计划在当前微帧进行。 | R_SS_WC |
| 20 | incompISOIN | 异步 IN 传输未完成 写入行为:清零 模式:仅设备 内核设置该中断,表示至少有一个异步 IN 端点在当前微帧中未完成 传输。 该中断与该寄存器中的周期帧结束中断 (EOPF) 位一起断言。 注意:在散布/收集 DMA 模式下,该中断不会被断言。 | R_SS_WC |
| 19 | OEPInt | 输出端点中断 模式:仅设备 内核设置该位,表示内核的一个 OUT 端点(在设备模式下)正在等待中 断。 应用程序必须读取设备所有端点中断(DAINT)寄存器,以确定发生 中断的 OUT 端点的确切编号,然后读取相应的设备 OUT 端点中断 (DOEPINTn)寄存器。 中断 (DOEPINTn) 寄存器,以确定中断的确切原因。 应用程序必须清除 相应 DOEPINTn 寄存器中的相应状态位,才能清除该位。 | R |
| 18 | IEPInt | IN 端点中断 模式:仅设备 内核设置该位表示内核的一个 IN 端点(在设备模式下)有中断等待处理。 应用程序必须读取设备所有端点中断(DAINT)寄存器,以确定设备 IN 端 点-n 中断(DIEPINTn)寄存器中 IN 端点的确切编号,从而确定中断的 确切原因。 应用程序必须清除相应 DIEPINTn 寄存器中的相应状态位, 才能清除该位。 | R |
| 17:16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | EOPF | 周期帧结束中断 写入行为:一键清除 模式:仅设备 指示当前微帧中已达到设备配置寄存器 (DCFG.PerFrInt) 的周期帧 间隔字段中指定的周期。 | R_SS_WC |
| 14 | ISOOutDrop | 异步 OUT 丢包中断 写入行为:一清除 模式:仅设备 当 RxFIFO 没有足够空间容纳异步 OUT 端点的最大数据包大小时, 内核无法将异步 OUT 数据包写入 RxFIFO,此时会设置该位。 | R_SS_WC |
| 13 | EnumDone | 枚举完成 写行为:一键清除 模式:仅设备 内核设置该位表示速度枚举完成。 应用程序必须读取设备状态 (DSTS) 寄存器才能获得枚举的速度。 | R_SS_WC |
| 12 | USBRst | USB 复位 写入行为:清零 模式:仅设备 内核设置该位,表示检测到 USB 复位。 | R_SS_WC |
| 11 | USBSusp | USB 暂停 写入行为:清零 模式:仅设备 内核设置该位以指示 USB 检测到挂起。 当线路状态信号长时间没有活动 时,内核会进入挂起状态。 | R_SS_WC |
| 10 | ErlySusp | 早期挂起 写入行为:清零 模式:仅设备 内核设置该位以指示 USB 已检测到空闲状态 3 毫秒。 | R_SS_WC |
| 9:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | GOUTNakEff | 全局 OUTNAK 有效 模式:仅设备 表示应用程序在设备控制寄存器 (DCTL.SGOUTNak) 中设置的 “设置 全局输出 NAK ”位已在内核中生效。 可通过写入设备控制寄存器 (DCTL.CGOUTNak) 中的清除全局输出 NAK 位来清除该位。 | R |
| 6 | GINNakEff | 全局 IN 非周期性 NAK 有效 模式:仅设备 表示应用设置的设备控制寄存器 (DCTL.SGNPInNak) 中的设置全局非 周期性 INNAK 位已在内核中生效。 也就是说,内核对应用设置的全局 INNAK 位进行了采样。 可通过清除设备控制寄存器(DCTL.CGNPInNak) 中的清除全局非周期性 INNAK 位来清除该位。 该中断并不一定意味着 USB 已发出 NAK 握手。 STALL 位优先于 NAK 位。 | R |
| 5 | NPTxFEmp | 非周期性 TxFIFO 空 模式:主机和设备 当非周期性 TxFIFO 为半空或全空,且至少有一个条目可写入非周期性 传输请求队列时,将断言该中断。 半空或全空状态由核心 AHB 配置寄存 器(GAHBCFG.NPTxFEmpLvl)中的非周期性 TxFIFO 空位决定。 在主机模式下,应用程序可以使用 GINTSTS.NPTxFEmp。 在设备模式下,应用程序使用 DIEPINTn.TxFEmp。 | R |
| 4 | RxFLvl | RxFIFO 非空 模式:主机和设备 表示至少有一个数据包待从 RxFIFO 读取。 | R |
| 3 | Sof | (微)帧开始 写行为:一个清除 模式:主机和设备 在主机模式下,内核设置该位以指示 USB 上传输了 SOF(FS)、 micro-SOF(HS) 或 Keep-Alive(LS)。 应用程序必须向该位写 1 才能清 除中断。 在“设备 ”模式下,内核会设置该位,以指示 USB 已收到 SOF 标记。 应用程序可读取设备状态寄存器,以获得当前(微)帧编号。 只有当内核 工作在 HS 或 FS 模式时,才会出现该中断。 该位只能由内核设置,应 用程序必须写 1 才能将其清除。 注意:如果在上电复位后立即读取寄存器,寄存器可能会返回 1'b1。 如 果在上电复位后立即读取寄存器位 1'b1,则并不表示已发送 SOF(在主 机模式下)或已接收 SOF(在设备模式下)。 只有在主机和设备之间建 立了有效连接后,该中断的读值才有效。 如果该位在上电复位后被设置, 应用程序可以清除该位。 | R_SS_WC |
| 2 | OTGInt | OTG 中断 模式:主机和设备 内核设置该位以指示 OTG 协议事件。 应用程序必须读取 OTG 中断 状态 (GOTGINT) 寄存器,以确定导致该中断的确切事件。 应用程序 必须清除 GOTGINT 寄存器中的相应状态位,才能清除该位。 | R |
| 1 | ModeMis | 模式不匹配中断 写入行为:清零 模式:主机和设备 当应用程序试图访问时,内核会设置该位: 当内核以设备模式运行时,主机模式寄存器 当内核以主机模式运行时,设备模式寄存器 寄存器访问在 AHB 上以 OKAY 响应完成,但内核内部会忽略它,不 会影响内核的运行。 该位只能由内核设置,应用程序应写入 1 以清除该位。 | R_SS_WC |
| 0 | CurMod | 当前运行模式 模式:主机和设备 指示当前模式。 1'b0:设备模式 1'b1:主机模式 | R |
中断屏蔽寄存器
该寄存器与 “中断寄存器 (GINTSTS) ”协同工作,用于中断应用程序。当一个中断位被屏蔽时,与该位相关的中断不会产生。但是,与该中断相对应的 GINTSTS 寄存器位仍被置位。注:屏蔽中断:1'b0,解除屏蔽中断:1'b1。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | WkUpIntMsk | 恢复/远程唤醒检测到中断屏蔽 模式:主机和设备 唤醒位用于 LPM 状态唤醒,唤醒方式与挂起状态唤醒类似。 | RW |
| 30 | SessReqIntMsk | 会话请求/新会话检测到中断屏蔽 模式:主机和设备 | RW |
| 29 | DisconnIntMsk | 断开检测到的中断屏蔽 模式:主机和设备 | RW |
| 28 | ConIDStsChngMsk | 连接器 ID 状态更改掩码 模式:主机和设备 | RW |
| 27 | Reserved | 写入无影响,读取为零。 | R |
| 26 | PTxFEmpMsk | 周期性 TxFIFO 空屏蔽 模式:仅主机 | RW |
| 25 | HChIntMsk | 主机通道中断屏蔽 模式:仅主机 | RW |
| 24 | PrtIntMsk | 主机端口中断屏蔽 模式:仅主机 | RW |
| 23 | ResetDetMsk | 复位检测到的中断屏蔽 模式:仅设备 | RW |
| 22 | FetSuspMsk | 数据撷取暂停掩码 模式:仅设备 | RW |
| 21 | incomplPMsk | 不完整定期传输屏蔽 模式:仅主机 | RW |
| 20 | incompISOINMsk | 不完整异步 IN 传输屏蔽 模式:仅设备 只有在专用 TxFIFO 模式下启用设备周期性端点时,才会启用该位。 | RW |
| 19 | OEPIntMsk | OUT 端点中断屏蔽 模式:仅设备 | RW |
| 18 | IEPIntMsk | IN 端点中断屏蔽 模式:仅设备 | RW |
| 17:16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | EOPFMsk | 周期帧结束中断屏蔽 模式:仅设备 | RW |
| 14 | ISOOutDropMsk | 异步 OUT 丢包中断屏蔽 模式:仅设备 | RW |
| 13 | EnumDoneMsk | 枚举完成屏蔽 模式:仅设备 | RW |
| 12 | USBRstMsk | USB 复位屏蔽 模式:仅设备 | RW |
| 11 | USBSuspMsk | USB 挂起屏蔽 模式:仅设备 | RW |
| 10 | ErlySuspMsk | 早期挂起屏蔽 模式:仅设备 | RW |
| 9:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | GOUTNakEffMsk | 全局 OUTNAK 有效屏蔽 模式:仅设备 | RW |
| 6 | GINNakEffMsk | 全局非周期性 IN NAK 有效屏蔽 模式:仅设备 | RW |
| 5 | NPTxFEmpMsk | 非周期性 TxFIFO 空掩码 模式:主机和设备 | RW |
| 4 | RxFLvlMsk | 接收 FIFO 非空掩码 模式:主机和设备 | RW |
| 3 | SofMsk | 微帧开始屏蔽 模式:主机和设备 | RW |
| 2 | OTGIntMsk | OTG 中断屏蔽 模式:主机和设备 | RW |
| 1 | ModeMisMsk | 模式错配中断屏蔽 模式:主机和设备 | RW |
| 0 | Reserved | 写入无影响,读取为零。 | R |
接收状态调试读寄存器
读取接收状态调试读寄存器可返回接收 FIFO 顶部的内容。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:25 | Reserved | 写入无影响,读取为零。 | R |
| 24:22 | FN | 帧编号 模式:仅设备 这是在 USB 上接收数据包的(微)帧编号的最小有效 4 位。 | R |
| 21 | Reserved | 写入无影响,读取为零。 | R |
| 20:17 | PktSts | 数据包状态 模式:仅主机 表示接收到的数据包的状态 4'b0010:收到 IN 数据包 4'b0011:IN 传输完成(触发中断) 4'b0101:数据切换错误(触发中断) 4'b0111:通道停止(触发中断) 其他:保留 模式:仅设备 指示接收数据包的状态 4'b0001:全局 OUTNAK(触发中断) 4'b0010:收到 OUT 数据包 4'b0011:OUT 传输完成(触发中断) 4'b0100:SETUP 事务完成(触发中断) 4'b0110:收到 SETUP 数据包 其他:保留 | R |
| 16:15 | DPID | 数据 PID 模式:仅主机 指示接收到的数据包的数据 PID 2'b00:DATA0 2'b10:DATA1 2'b01:DATA2 | R |
| 14:4 | BCnt | 字节数 模式:仅主机 指示接收到的 IN 数据包的字节数。 模式:仅设备 表示接收到的数据包的字节数。 | R |
| 3:0 | ChNum | 通道编号 模式:仅主机 指示当前接收的数据包所属的通道编号。 | R |
接收状态读取和弹出寄存器
读取 “接收状态读取和 Pop ”寄存器时,会从 RxFIFO 中弹出顶部数据项。在主机和设备模式下,必须对接收状态内容进行不同的解释。当接收 FIFO 为空时,内核会忽略接收状态弹出/读取,并返回 32'h0000_0000 的值。应用程序必须仅在核心中断寄存器(GINTSTS.RxFLvl)的接收 FIFO 非空位断言时才弹出接收状态 FIFO。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:25 | Reserved | 写入无影响,读取为零。 | R |
| 24:21 | FN | 帧编号 模式:仅设备 这是在 USB 上接收数据包的(微)帧编号的最小有效 4 位。 该字段仅在支 持等时 OUT 端点时才受支持。 | R |
| 20:17 | PktSts | 数据包状态 模式:仅主机 指示接收数据包的状态 4'b0010:收到 IN 数据包 4'b0011:IN 传输完成(触发中断) 4'b0101:数据切换错误(触发中断) 4'b0111:通道停止(触发中断) 其他: 保留 模式:仅设备 指示接收数据包的状态 4'b0001:全局 OUTNAK(触发中断) 4'b0010:收到 OUT 数据包 4'b0011:OUT 传输完成(触发中断) 4'b0100:SETUP 事务完成(触发中断) 4'b0110:收到 SETUP 数据包 其他:保留 | R |
| 16:15 | DPID | 数据 PID 模式:仅主机 指示接收到的数据包的数据 PID 2'b00:DATA0 2'b10:DATA1 2'b01:DATA2 2'b11:MDATA 模式:仅设备 指示接收到的 OUT 数据包的数据 PID 2'b00:DATA0 2'b10:DATA1 | R |
| 14:4 | BCnt | 字节计数 模式:仅主机 表示接收到的 IN 数据包的字节数。 模式:仅设备 表示接收到的数据包的字节数。 | R |
| 3:0 | ChNum | 通道编号 模式:仅主机 指示当前接收的数据包所属的通道编号。 | R |
接收 FIFO 大小寄存器
应用程序可对必须分配给 RxFIFO 的 RAM 大小进行编程。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | RxFDep | RxFIFO 深度 该值以 32 位字为单位。 最小值为 16 最大值为 32,768 该寄存器的上电复位值为 16' d1808。 这些触发器经过优化,读取时会返回开机值。 | RW |
非定期发送 FIFO 大小寄存器
应用程序可以为非定期发送 FIFO 设置 RAM 大小和内存起始地址。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | NPTxFDep | 非周期性 TxFIFO 深度 模式:仅主机 该值以 32 位字为单位。 最小值为 16 最大值为 32,768 应用程序可在该字段中写入新值。 编程值不得超过开机值。 该字段的开机复位值为 16' d1808。 | RW |
| 15:0 | NPTxFStAddr | 非周期性传输 RAM 起始地址 模式:仅主机 该字段包含非定期发送 FIFO RAM 的内存起始地址。 应用程序可在该字段中写入新值。 编程值不得超过 coreConsultant 中设置的开机值。 编程值不得超过开机值。 该字段的开机复位值为 16' d1808。 | RW |
非周期性传输 FIFO/队列状态寄存器
该只读寄存器包含非定期发送 FIFO 和非定期发送请求队列的可用空间信息。注:仅对主机模式有效。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | Reserved | 写入无影响,读取为零。 | R |
| 30:24 | NPTxQTop | 非定期发送请求队列顶部 MAC 当前正在处理的非周期性发送请求队列中的条目。 位 [30:27]:通道/端点编号 位 [26:25]: 2'b00:输入/输出标记 -2'b01:零长度传输包(设备 IN/主机 OUT) -2'b10:PING/CSPLIT 标记 -2'b11: 通道停止命令 | R |
| 23:16 | NPTxQSpcAvail | 非周期性传输请求队列可用空间 表示非周期性传输请求队列中的可用空间大小。 该队列同时容纳输入和输出 请求。 8' h0:非周期性传输请求队列已满 8' h1:1 个位置可用 8' h2:2 个位置可用 n:n 个可用位置(0≤ n≤8) 其他:保留 | R |
| 15:0 | NPTxFSpcAvail | 非周期性 TxFIFO 可用空间 表示非周期性 TxFIFO 中可用的空闲空间量。 数值以 32 位字为单位。 16' h0:非定期 TxFIFO 已满 16' h1:1 个字符可用 16' h22 个字符可用 16' hn:n 个可用字(其中 0 ≤ n ≤ 32,768) 16' h8000:可用 32 768 个字符 其他:保留 | R |
Synopsys ID 寄存器
该只读寄存器包含所用内核的版本号。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | SynopsysID | 当前使用的 DWC_otg 内核的版本号。 | R |
| 31:0 | EpDir | 端点方向 这个 32 位字段使用每个端点的两个位来确定端点方向。 位 [31:30]:端点 15 方向 位 [29:28]:端点 14 方向 ... 位 [3:2]:端点 1 方向 比特[1:0]:端点 0 方向(始终为 BIDIR) 方向 2'b00:BIDIR(输入和输出)端点 2'b01:IN 端点 2'b10:输出端点 2'b11:保留 | R |
用户硬件配置 1 寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | EpDir | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | EpDir | 端点方向。每两个位定义一个端点方向,2'b00=BIDIR,2'b01=IN,2'b10=OUT,2'b11=保留。 | R |
用户硬件配置 2 寄存器
该寄存器包含配置选项。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | OTG_ENABLE_IC_USB | OTG_ENABLE_IC_USB | R |
| 30:26 | TknQDepth | 设备模式 IN 令牌序列学习队列深度 | R |
| 25:24 | PTxQDepth | 主机模式 周期性请求队列深度 2'b00:2 2'b01:4 2'b10:8 2'b11:16 | R |
| 23:22 | NPTxQDepth | 非周期性请求队列深度 2'b00:2 2'b01:4 2'b10:8 其他:写入无影响,读取为零。 | R |
| 21 | Reserved | 写入无影响,读取为零。 | R |
| 20 | MultiProcIntrpt | 启用多处理器中断 1'b0:否 1'b1:是 | R |
| 19 | DynFifoSizing | 启用动态 FIFO 大小 1'b0:否 1'b1:是 | R |
| 18 | PerioSupport | 主机模式下支持周期性输出通道 1'b0:否 1'b1:是 | R |
| 17:14 | NumHstChnl | 主机通道数 表示内核在主机模式下支持的主机通道数。 该字段的范围是 0-15:0 表示 1 个通道,15 表示 16 个通道。 | R |
| 13:10 | NumDevEps | 设备端点数 表示除控制端点 0 外,内核在设备模式下支持的设备端点数量。 该字 段的范围为 1-15。 | R |
| 9:8 | FSPhyType | 全速 PHY 接口类型 2'b00:不支持全速接口 2'b01:专用全速接口 2'b10:FS 引脚与 UTMI+ 引脚共享 2'b11:FS 引脚与 ULPI 引脚共享 | R |
| 7:6 | HSPhyType | 高速 PHY 接口类型 2'b00:不支持高速接口 2'b01:UTMI+ 2'b10:ULPI 2'b11:UTMI+ 和 ULPI | R |
| 5 | SingPnt | 点对点 1'b0:多点应用(支持集线器和分线器) 1'b1:单点应用(不支持集线器和分路) | R |
| 4:3 | OtgArch | 结构 2'b00:仅从站 2'b01:外部 DMA 2'b10:内部 DMA 其他:保留 | R |
| 2:0 | OtgMode | 操作模式 3'b000:支持 HNP 和 SRP 的 OTG(主机和设备) 3'b001:支持 SRP 的 OTG(主机和设备) 3'b010:非 HNP 和非 SRP 功能 OTG(主机和设备) 3'b011:支持 SRP 的设备 3'b100:非 OTG 设备 3'b101:支持 SRP 的主机 3'b110:非 OTG 主机 其他:保留 | R |
用户硬件配置 3 寄存器
该寄存器包含配置选项。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | DfifoDepth | DFIFO 深度 该值以 32 位字为单位。 最小值为 32 最大值为 32,768 | R |
| 15 | LPMMode | 为运行模式指定的 LPM 模式。 | R |
| 14 | BCSupport | 该位表示 HS OTG 控制器对电池充电器的支持。 0- 不支持电池充电器 1- 支持电池充电器。 | R |
| 13 | HSICMode | 为操作模式指定的 HSIC 模式 值范围: 0-1 1:支持 HSIC,具有共享 UTMIPHY 接口 0:无 HSIC 功能 | R |
| 12 | ADPSupport | 该位指示 ADP 逻辑是存在于 DWC_otg 控制器内部还是外部 0:DWC_otg 控制器不存在 ADP 逻辑 1:ADP 逻辑与 DWC_otg 控制器同时存在 | R |
| 11 | RstType | RTL 中时钟始终块的复位方式 1'b0:内核中使用异步复位 1'b1:内核中使用同步复位 | R |
| 10 | OptFeature | 删除可选功能 表示是否通过启用移除可选功能,移除用户 ID 寄存器、GPIO 接口端 口、SOF 开关和计数器端口,以优化门计数。 1'b0:否 1'b1:是 | R |
| 9 | VndctlSupt | 删除可选功能 表示是否通过启用移除可选功能,移除用户 ID 寄存器、GPIO 接口端 口、SOF 开关和计数器端口,以优化门计数。 1'b0:否 1'b1:是 | R |
| 8 | I2CIntSel | I2C 选择 1'b0:内核上没有 I2C 接口 1'b1:内核上有 I2C 接口 | R |
| 7 | OtgEn | 启用 OTG 功能 应用程序使用该位指示 DWC_otg 内核的 OTG 功能。 1'b0:不具备 OTG 功能 1'b1:支持 OTG | R |
| 6:4 | PktSizeWidth | 数据包大小计数器宽度 3'b000: 4 位 3'b001:5 位 3'b010:6 位 3'b011:7 位 3'b100:8 位 3'b101:9 位 3'b110:10 位 其他:保留 | R |
| 3:0 | XferSizeWidth | 传输大小计数器宽度 4'b0000:11 位 4'b0001:12 位 ... 4'b1000:19 位 其他:保留 | R |
用户硬件配置 4 寄存器
该寄存器包含配置选项。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | DescDMA | 散射/采集 DMA 1'b0:非动态配置 1'b1:动态配置 | R |
| 30 | DescDMAEn | 散射/采集 DMA 配置 1'b0:非散射/采集 DMA 配置 1'b1:散射/采集 DMA 配置 | R |
| 29:26 | INEps | 包括控制端点在内的设备模式 IN 端点数量 范围: 0-15 0:1 个 IN 端点 1:2 个 IN 端点 .... 15:16 个 IN 端点 | R |
| 25 | DedFifoMode | 为设备 IN 端点启用专用传输 FIFO(DedFifoMode) 1'b0:未启用专用传输 FIFO 操作 1'b1:启用专用传输 FIFO 操作 | R |
| 24 | SessEndFltr | 启用会话_结束滤波器 1'b0:无滤波器 1'b1:过滤 | R |
| 23 | BValidFltr | b_valid 过滤器已启用 1'b0:无过滤器 1'b1:过滤器 | R |
| 22 | AValidFltr | a_valid 过滤器已启用 1'b0:无筛选器 1'b1:过滤器 | R |
| 21 | VBusValidFltr | 启用 VBUS 有效过滤器 1'b0:无滤波器 1'b1:滤波器 | R |
| 20 | IddgFltr | 启用 IDDIG 滤波器 1'b0:无滤波器 1'b1:过滤 | R |
| 19:16 | NumCtlEps | 端点 0 以外的设备模式控制端点数 范围: 0-15 | R |
| 15:14 | PhyDataWidth | UTMI+ PHY/ULPI 转内部 UTMI+ 封装器数据宽度 (PhyDataWidth) 使用 ULPIPHY 时,内部封装器将 ULPI 转换为 UTMI+。 2'b00:8 位 2'b01:16 位 2'b10:8/16 位,软件可选 其他:保留 | R |
| 13:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | ExtndedHibernation | 启用扩展休眠 1'b0:休眠功能未启用 1'b1:启用休眠功能 | R |
| 6 | Hibernation | 启用休眠 1'b0:未启用休眠功能 1'b1:启用休眠功能 | R |
| 5 | AhbFreq | 最小 AHB 频率低于 60 MHz 1'b0:否 1'b1:是 | R |
| 4 | PartialPwrDn | 启用部分关机 1'b0:未启用部分掉电 1'b1:启用部分断电 | R |
| 3:0 | NumDevPerioEps | 设备模式周期性 IN 端点数量 范围: 0-15 | R |
内核 LPM 配置寄存器
该寄存器控制内核 LPM 和 HSIC 功能的运行。它还包含与这些功能相关的状态位。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:30 | Reserved | 写入无影响,读取为零。 | R |
| 29 | RstrSlpSts | 还原 SlpSts 模式:仅限设备 当应用对内核进行电源关断(部分掉电或休眠)时,应用需要对该位进行编程, 以恢复内核的 LPM 状态。 在恢复过程中,应用程序需要根据从主机接收到的 BESL 值对该位进行编程。 应用程序应根据决定将内核置于浅睡眠(仅时钟门控) 还是深睡眠(电源门控)模式对该位进行编程: 1'b0:应用程序根据主机提供的 BESL 值将内核置于浅睡眠模式 1'b1:应用程序根据主机提供的 BESL 值将内核置于深度睡眠模式 | RW |
| 28 | EnBESL | 启用最佳服务延迟 模式:主机和设备 该位启用 LPM 勘误表中定义的 BESL 功能: 1'b0:内核按以下文件所述工作: USB 2.0 链接电源管理附录 USB 2.0 规范工程变更通知,2007 年 7 月 16 日 1'b1:内核按照 LPM 勘误表工作 | RW |
| 27:1 | Reserved | 写入无影响,读取为零。 | R |
| 0 | LPMCap | 支持 LPM 模式:主机和设备 应用程序使用该位控制 DWC_otg 内核的 LPM 功能。 如果内核作为不支持 LPM 的主机运行,则无法请求所连接的设备或集线器激活 LPM 模式。 设备或集线器激活 LPM 模式。 如果内核作为不支持 LPM 的设备运行,则无法响应任何 LPM 事务。 1b0:未启用 LPM 功能 1b1:已启用 LPM 功能 | R |
掉电寄存器
这是外部休眠控制寄存器,该寄存器仅在休眠和 ADP 期间有效。应用程序可通过该寄存器获取唤醒逻辑的状态并对其进行控制。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | Reserved | 写入无影响,读取为零。 | R |
| 23 | ADPInt | ADP 中断 写入行为:1 清除 模式:主机和设备 发生 ADP 事件时,该位被置位 | R_SS_WC |
| 22 | BSessVld | B 会话有效 模式:仅设备 该字段反映来自 PHY 的 B 会话有效状态信号。 1'b0:B-Valid 为 0 1'b1:B-Valid 为 1 该位仅在 GPWRDN.PMUActv 为 1 时有效。 | R |
| 21 | IDDIG | IDDIG 模式:主机和设备 该位指示 IDDIG 信号的状态。 应用程序必须在接收到 GPWRDN.StsChngInt 后读取该位,并根据应用程序存储的前一个值进 行解码。 表示当前模式。 1'b1:设备模式 1'b0:主机模式 该位仅在 GPWRDN.PMUActv 为 1 时有效。 | R |
| 20:19 | LineState | 线路状态 模式:主机和设备 该字段表示 PMU 模块看到的 USB 上的当前线路状态。 2'b00:DM= 0,DP= 0 2'b01:DM= 0,DP= 1 2'b10:DM= 1,DP= 0 2'b11:未定义 | R |
| 18 | StsChngIntMsk | StsChng 中断屏蔽 模式:主机和设备 | RW |
| 17 | StsChngInt | 状态变化中断 写入行为:1 清除 该字段指示 IDDIG 或 BSessVld 信号的状态变化。 1'b0:无状态变化 1'b1:检测到状态变化 接收到该中断后,应用程序必须读取 GPWRDN 寄存器,并解释 IDDIG 或 BSesVld 与应用程序存储的上一值之间的变化。 | R_SS_WC |
| 16 | SRPDetectMsk | SRPDetect 中断屏蔽 模式:仅主机 | RW |
| 15 | SRPDetect | SRPDetect 模式:仅主机 该字段表示 PMU 已检测到 SRP。 该字段会产生中断。 在休眠期间检 测到 SRP 后,应用程序不得恢复内核。 应用程序必须进入初始化流程。 1'b0:未检测到 SRP 1'b1:检测到 SRP | R_SS_WC |
| 14:7 | Reserved | 写入无影响,读取为零。 | R |
| 6 | DisableVBUS | 禁用 VBUS 模式:主机和设备 主机模式: 如果 HPRT0.PrtPwr 在关闭 Core 之前编程为 0,则应用程序必须对 该位进行编程。 这将向 PMU 指示会话是否在进入休眠状态前结束。 1'b0:HPRT0.PrtPwr 未编程为 0。 1'b1:HPRT0.PrtPwr 已编程为 0。 设备模式: 应用必须对该位进行编程,以便在关闭内核时通知 PMU bvalid valid 信号是高电平(会话有效)还是低电平(会话结束)。 1'b0:bvalid 信号为高电平(会话有效) 1'b1:bvalid 信号为低电平(会话结束) 该位仅在 GPWRDN.PMUActv 为 1 时有效。 | RW |
| 5 | PwrDnSwtch | 断电开关 模式:主机和设备 该位向 DWC_otg 内核指示 VDD 开关处于 ON 还是 OFF 状态。 1'b0:DWC_otg 处于 ON 状态 1'b1:DWC_otg 处于关断状态 注意:在正常运行模式下,不得写入该位。 | RW |
| 4 | PwrDnRst_n | 掉电复位N 模式:主机和设备 应用程序必须对该位进行编程,以便在休眠退出过程中或在 ADP 期间 上电时复位 DWC_otg(如果 DWC_otg 内核在 ADP 期间断电)。 1'b1:DWC_otg 处于正常运行状态 1'b0:复位 DWC_otg 注:在正常运行模式下,不得写入该位。 | RW |
| 3 | PwrDnClmp | 掉电钳位 模式:主机和设备 应用程序必须对该位进行编程,以启用或禁用 DWC_otg 核心模块所 有输出的钳位,从而防止损坏其他活动逻辑。 1'b0:禁用 PMU 电源箝位 1'b1:启用 PMU 电源钳位 | RW |
| 2 | Reserved | 写入无影响,读取为零。 | R |
| 1 | PMUActv | PMU 激活 模式:主机和设备 该位可启用或禁用 PMU 逻辑。 1'b0:禁用 PMU 模块 1'b1:启用 PMU 模块 注意:在正常运行模式下不得写入该位。 | RW |
| 0 | Reserved | 写入无影响,读取为零。 | R |
DFIFO 软件配置寄存器
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | EPInfoBaseAddr | EPInfoBaseAddr 模式:主机和设备 该字段提供 EP 信息控制器的起始地址。 | RW |
| 15:0 | GDFIFOCfg | GDFIFOCfg 模式:主机和设备 该字段用于对 DFIFO 大小进行动态编程。 只有当应用程序向该寄存器编程 一个非零值时,该值才会生效。 编程值必须符合《编程指南》中 “FIFORAM 分配 ”一节所述的指导原则。 如果 FIFO 大小编程错误,DWC_otg 内核没 有任何纠正逻辑。 | RW |
ADP 定时器、控制和状态寄存器
该寄存器保存在 PMU 模块中。ADP 控制器使用这些寄存器值来决定定时值。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | Reserved | 写入无影响,读取为零。 | R |
| 28:27 | AR | 访问请求 2'b00:读/写有效(由内核更新) 2'b01:读 2'b10:写 2'b11:保留 | RW_SC |
| 26 | AdpToutMsk | ADP 超时中断屏蔽 | RW |
| 25 | AdpSnsIntMsk | ADP 检测中断屏蔽 设置该位后,将解除对 AdpSnsInt 引起的中断的屏蔽。 该位仅在 OTG_Ver=1'b1(GOTGCTL[20])时有效。 | RW |
| 24 | AdpPrbIntMsk | ADP 探头中断 该位仅与 ADP 探头相关。 该位被置位时,表示斜坡时间已结束 (GADPCTL.RTIM 达到其终端值 0x7FF)。 这是一项调试功能,允许 应用程序在每个周期后读取斜坡时间。 该位仅在 OTGVer= 1'b1 时有效。 | R_SS_WC |
| 23 | AdpToutInt | ADP 超时中断 写入行为:1清除 该位仅适用于 ADP 探头。 设置该位后,表示斜坡时间已结束 (GADPCTL.RTIM 已达到其终端值 0x7FF)。 这是一项调试功能,允 许应用程序在每个周期后读取斜坡时间。 只有当 OTGVer=1'b1 时,该位才有效。 | R_SS_WC |
| 22 | AdpSnsInt | ADP 检测中断 写入行为:置 1 为清除 该位被置位时,表示 VBUS 电压大于 VadpSns 值或 VadpSns 已达 到。 该位仅在 OTGVer= 1'b1 (GOTGCTL[20]) 时有效。 | R_SS_WC |
| 21 | AdpPrbInt | ADP 探头中断 写入行为:置 1 为清除 设置该位时,表示 VBUS 电压大于 VADP_PRB 或达到 VadpPrb。 该位仅在 OTGVer= 1'b1 (GOTGCTL[20]) 时有效。 | R_SS_WC |
| 20 | ADPEn | ADP 启用 设置时,内核根据 EnaPrb 或 EnaSns 执行 ADP 探测或传感。 该位仅在 OTG_Ver=1'b1(GOTGCTL[20]) 时有效。 | RW |
| 19 | ADPRes | ADP 复位 写入行为:置 1 设置时,ADP 控制器复位。 ADP 控制器复位程序完成后,该位将自动 清除。 该位仅在 OTG_Ver=1'b1(GOTGCTL[20]) 时有效。 | R_SS_WC |
| 18 | EnaSns | 启用感应 当编程为 1'b1 时,内核执行感测操作。 只有当 OTG_Ver= 1'b1 (GOTGCTL[20]) 时,该位才有效。 | RW |
| 17 | EnaPrb | 启用探针 编程为 1'b1 时,磁芯执行探测操作。 只有当 OTG_Ver= 1'b1 (GOTGCTL[20]) 时,该位才有效。 | RW |
| 16:6 | RTIM | 漂移时间 这些位捕获 VBUS 从 VADP_SINK 到 VADP_PRB 的斜坡所需的最 新时间。 这些位以 32kHz 时钟周期为单位定义如下: 0x000 -1 个周期 0x001 -2 个周期 0x002 -3 个周期,依此类推,直到 0x7FF- 2048 个周期 在 32kHz 频率下,1024 个周期对应 32 毫秒。 (注意:按比例缩放的 ramp_timeout =p rb_delta ==2'b00 => 200 个周期 prb_delta ==2'b01 => 100 个周期 prb_delta ==2'b01 => 50 个周期 prb_delta ==2'b01 => 25 个周期) | R |
| 5:4 | PrbPer | 探头周期 这些位设置 TadpPrd 如下: 2'b00 -0.625 至 0.925 秒(典型值为 0.775 秒) 2'b01 -1.25 至 1.85 秒(典型值为 1.55 秒) 2'b10 -1.9 至 2.6 秒(典型值 2.275 秒) 2'b11- 保留 (PrbPer 也按比例缩减 prb_per== 2'b00 => 400ADP 时钟 prb_per== 2'b01 => 600ADP 时钟 prb_per== 2'b10 => 800ADP 时钟 prb_per==2'b11=> 1000ADP 时钟) | RW |
| 3:2 | PrbDelta | 探头步进增量 这些位用于设置 RTIM 值的分辨率。 这些位以 32kHz 时钟周期为单位 定义如下: | RW |
| 1:0 | PrbDschg | 探头放电 这些位用于设置 TADP_DSCHG 的时间。 这些位的定义如下: 2'b00 4 毫秒(按比例缩减 2 个 32Khz 时钟周期) 2'b01 8 毫秒(按比例缩减 4 个 32Khz 时钟周期) 2'b10 16 毫秒(按比例缩减 8 个 32Khz 时钟周期) 2'b1132 毫秒(按比例缩减 16 个 32Khz 时钟周期) | RW |
设备 IN 端点发送 FIFO 大小寄存器
该寄存器保存在设备模式下执行的 IN 端点 TxFIFO 的大小和内存起始地址。每个 FIFO 保存一个 IN 端点的数据。对于实例化的 IN 端点 FIFO1 至 8,该寄存器将重复使用。对于 IN 端点 FIFO0,可使用 GNPTXFSIZ 寄存器编程其大小和内存起始地址。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | INEPnTxFDep | IN 端点 TxFIFO 深度 该值以 32 位字为单位。 最小值为 16 最大值为 32,768 该寄存器的开机复位值为 16' d1808。 可以在该字段中写入新值。 编程值不得超过开机值。 | RW |
| 15:0 | INEPnTxFStAddr | IN 端点 FIFOn 传输 RAM 起始地址 | RW |
主机配置寄存器
该寄存器用于在开机后配置内核。初始化主机后,请勿更改该寄存器。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | ModeChTimEn | 模式切换准备使能 这一位用来使能/禁用主机核心等待200PHY时钟周期,在休眠或者LPM之后 的唤醒过程中变更PHY模式的信号 1’b0:主机核心在切换PHY模式从2’b10到2’b00之前等待200 PHY 时钟周 | RW |
| 30:27 | Reserved | 写入无影响,读取为零。 | R |
| 26 | hedEna | 使能周期性调度 仅使用用散射/采集DMA模式; 在核心内启用周期性调度; 最初的比特位是 RES,核心不处理任何周期性通道。 一旦此位设置好,核心就会准备好开始安 排周期性通道并设置HCFG.PerSchedStat.HCFG.PerSchedStat 设置表明核 心启用了周期性调度; 一旦设置 HCFG.PerSchedEna,除非设置了 HCFG.PerSchedStat,否则这一位不会被重置; 一旦这位被充值,核心会准备 停止周期性调度,并复位HCFG.PerSchedStat. 在非散射/采集DMA模式,此位是保留位 | RW |
| 25:24 | FrListEn | FrameListEntries框架列表条目 此值设置了框架列表的深度,仅仅在散射/采集DMA模式下生效 2’b00:保留 2’b01:8 个 2’b10:16 个 2’b11:32 个 在非散射/采集DMA模式,此位是保留位 | RW |
| 23 | DescDMA | 在主机模式下使能在非散射/采集DMA模式 应用程序可在初始化期间设置此位以启用非散射/聚焦DMA操作。 注意:此位必须在复位后仅修改一次,可用的编程组合方式如下: GAHBCFG.DMAEn=0,HCFG.DescDMA=0 => Cpu mode GAHBCFG.DMAEn=0,HCFG.DescDMA=1 => Invalid GAHBCFG.DMAEn=1,HCFG.DescDMA=0 => Buffered DMAmode GAHBCFG.DMAEn=1,HCFG.DescDMA=1 => Scatter/Gather DMAmode 在非散射/采集DMA模式,此位是保留位 | RW |
| 22:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | FSLSSupp | 仅FS和LS支持 软件通过这一位控制核心的枚举速度; 使用这一位,可以让核心枚举为FS主机, 即使与之相连接的设备支持HS传输; 在配置一次之后,之后不要改变此值; 1’b0:HS/FS/LS, 基于所连接的设备的最高速 | RW |
| 1:0 | FSLSPclkSel | FS/LS PHY 时钟选择 当核心处于FS 主机模式: 2’b00:PHY 时钟为 30/60MHz 2’b01:PHY 时钟为 48MHz 其他:保留 当核心处于LS主机模式: 2’b00:PHY 时钟为 30/60MHz 2’b01:PHY 时钟为 48MHz 2’b10:PHY时钟为6MHz. 2’b11:保留 注意: 当核心处于FS模式,内部和外部时钟的频率相同; 当核心处于LS模式, 如果FSLSPclkSel=2’b00:内部和外部时钟频率相同; 如果FSLSPclkSel=2’b10:外部时钟是48Mhz,内部时钟是它除以8。 | RW |
主机帧间隔寄存器
该寄存器存储 DWC_otg 内核枚举的当前速度的帧间隔信息。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:17 | Reserved | 写入无影响,读取为零。 | R |
| 16 | HFIRRldCtrl | 1重载控制 该位允许在运行期间动态重载 HFIR 寄存器。 1'b0:不能动态重载 HFIR 1'b1:运行期间可动态重载 HFIR。 | RW |
| 15:0 | FrInt | 帧间隔 应用程序对该字段编程的值指定两个连续 SOF(FS)或微 SOF(HS)或 Keep-Alive 标记(LS)之间的间隔。 该字段包含构成所需帧间隔的 PHY 时 钟数。 当 PHY 时钟频率为 60 MHz 时,该字段为 FS 操作设置的默认值。 只有在主机端口控制和状态寄存器(HPRT.PrtEnaPort)的端口启用位被设置 后,应用程序才能向该寄存器写入数值。 如果没有编程值,内核将根据主机 配置寄存器(HCFG.FSLSPclkSel)的 FS/LS PHY 时钟选择字段中指定的 PHY 时钟计算值。 初始配置后,请勿更改该字段的值。 125 μs*(HS 的 PHY 时钟频率) 1ms*(FS/LS 的 PHY 时钟频率) | RW |
主机帧号/帧剩余时间寄存器
该寄存器指示当前帧号,它还指示当前(微)帧的剩余时间(以 PHY 时钟数表示)。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | FrRem | 帧剩余时间 表示当前微帧(HS)或帧(FS/LS)的剩余时间(以 PHY 时钟为单位)。 该字 段在每个 PHY 时钟上递减。 当其为零时,该字段将与帧间隔寄存器中的值重新加 载,并在 USB 上传输新的 SOF。 | R |
| 15:0 | FrNum | 帧编号 在 USB 上传输新的 SOF 时,该字段递增,当达到 16' h3FFF 时复位为 0。 | R |
主机定期发送 FIFO/队列状态寄存器
此只读寄存器包含定期发送 FIFO 和定期发送请求队列的可用空间信息。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | PTxQTop | 定期发送请求队列顶部 表示 MAC 当前正在处理的定期发送请求队列中的条目。 该寄存器用于调 试。 位 [31]: 奇/偶(微)帧 - 1'b0:以偶数(微)帧发送 - 1'b1:以奇数(微)帧发送 位 [30:27]: 通道/端点编号 位 [26:25]: 类型 - 2'b00:输入/输出 - 2'b01: 零长度数据包 - 2'b10:CSPLIT - 2'b11: 禁用通道命令 位 [24]: 终止(所选信道或端点的最后一个条目) | R |
| 23:16 | PTxQSpcAvail | 定期发送请求队列可用空间 表示可写入定期传输请求队列的空闲位置数。 该队列同时容纳输入和输出请 求。 8' h0:定期发送请求队列已满 8' h1:1 个位置可用 8' h2:2 个位置可用 n:n 个可用位置(0≤n≤ 16) 其他: 保留 | R |
| 15:0 | PTxFSpcAvail | 定期发送数据 FIFO 可用空间 表示可写入周期性 TxFIFO 的空闲位置数。 数值以 32 位字为单位 16' h0:PeriodicTxFIFO 已满 16' h1:1 个可用字 16' h2:2 个字符可用 | R |
主机全通道中断寄存器
当通道上发生重要事件时,主机全通道中断寄存器会使用核心中断寄存器(GINTSTS.HChInt)的主机通道中断位中断应用程序。每个通道有一个中断位,最多 16 位。当应用程序设置和清除相应主机通道-n 中断寄存器中的位时,该寄存器中的位将被设置和清除。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | HAINT | 通道中断 每个通道一位: 通道 0 为位 0,通道 15 为位 15 | R |
主机全通道中断屏蔽寄存器
主机全通道中断屏蔽寄存器与主机全通道中断寄存器配合使用,在通道发生事件时中断应用程序。每个通道有一个中断屏蔽位,最多 16 位。注:仅用于主机模式。注:屏蔽中断:1'b0;解除屏蔽中断:1'b1。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | HAINTMsk | 通道中断屏蔽 每个通道一位: 通道 0 为位 0,通道 15 为位 15 | RW |
主机帧列表基地址寄存器
该寄存器仅在散射/收集 DMA 时存在。它以触发器的形式实现。该寄存器保存帧列表信息的起始地址。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DMAAddr | 帧列表的起始地址。 该寄存器仅用于异步和中断通道。 | RW |
主机端口控制和状态寄存器
目前,OTG 主机只支持一个端口。单个寄存器保存 USB 端口相关信息,如每个端口的 USB 复位、启用、挂起、恢复、连接状态和测试模式。该寄存器中的 R_SS_WC 位可通过核心中断寄存器 (GINTSTS.PrtInt) 的主机端口中断位触发应用程序中断。发生端口中断时,应用程序必须读取该寄存器并清除导致中断的位。对于 R_SS_WC 位,应用程序必须向该位写入 1 才能清除中断。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:19 | Reserved | 写入无影响,读取为零。 | R |
| 18:17 | PrtSpd | 端口速度 表示连接到此端口的设备的速度。 2'b00:高速 2'b01:全速 2'b10:低速 2'b11:保留 | R |
| 16:13 | PrtTstCtl | 端口测试控制 应用程序向该字段写入非零值,使端口进入测试模式,并在端口上发出 相应的模式信号。 4'b0000:禁用测试模式 4'b0001:Test_J 模式 4'b0010:测试_K 模式 4'b0011:测试_SE0_NAK 模式 4'b0100:测试_数据包模式 4'b0101:测试_强制_启用 其他:保留 | RW |
| 12 | PrtPwr | 端口功率 应用程序使用该字段控制该端口的电源(写 1'b1 设置为 1'b1,写 1'b0 设置为 1'b0),内核可在电流过大时清除该位。 1'b0:关闭电源 1'b1:接通电源 注:该位与接口无关。 应用程序需要为所有接口编程该位。 | R_W_SC |
| 11:10 | PrtLnSts | 端口线路状态 指示当前逻辑电平 USB 数据线 位 [10]: D+ 的逻辑电平 位 [11]: D- 的逻辑电平 | R |
| 9 | Reserved | 写入无影响,读取为零。 | R |
| 8 | PrtRst | 端口复位 应用设置该位时,该端口将启动复位序列。 应用程序必须确定复位周期 的时间,并在复位序列完成后清除该位。 1'b0:端口未复位 1'b1:端口复位 | RW |
| 7 | PrtSusp | 端口暂停 写入行为:1 位设置 应用设置该位可将该端口置于挂起模式。 只有在设置该位时,内核才会 停止发送 SOF。 要停止 PHY 时钟,应用程序必须设置端口时钟停止 位,该位将断言 PHY 的挂起输入引脚。 该位的读取值反映了端口当前的挂起状态。 检测到远程唤醒信号或应用 设置了该寄存器中的端口复位位或端口恢复位,或核心中断寄存器中的 恢复/远程唤醒检测到中断位或断开检测到中断位(分别为 GINTSTS.WkUpInt 或 GINTSTS.DisconnInt)后,核心将清空该位。 即使没有设备连接到主机,内核也会清除该位。 1'b0:端口未处于挂起模式 1'b1:端口处于挂起模式 | R_WS_SC |
| 6 | PrtRes | 端口恢复 应用设置该位可在端口上驱动恢复信号。 内核继续驱动恢复信号,直到 应用程序清除该位。 如果内核检测到 USB 远程唤醒序列,如内核中 断寄存器(GINTSTS.WkUpInt)的端口恢复/远程唤醒检测到中断位所 示,内核将开始驱动恢复信号,而无需应用干预; 只有在启用 LPM 工 作模式时,内核才会在检测到断开条件时清除该位。 该位的读取值表示内核当前是否正在驱动恢复信号。 1'b0:未驱动恢复信号 1'b1:驱动恢复 | R_W_SS_S C |
| 5 | PrtOvrCurrChng | 端口过流变化 写入行为:写1 清除 当寄存器中端口过流激活位(位 4)的状态发生变化时,内核会设置 该位。 | R_SS_WC |
| 4 | PrtOvrCurrAct | 端口过流激活 指示端口的过流状态。 | R |
| 3 | PrtEnChng | 端口启用/禁用更改 写入行为:写 1 清除 当寄存器中端口启用位 [2] 的状态发生变化时,内核会设置该位。 | R_SS_WC |
| 2 | PrtEna | 端口启用 写入行为:写 1 清除 端口只能在复位序列后由内核启用,并在过流条件、断开条件或应用程 序清除该位后禁用。 应用程序不能通过写入寄存器来设置该位。 只能通 过清除该位来禁用端口。 该位不会向应用程序触发任何中断。 1'b0:禁用端口 1'b1:端口启用 | R_SS_SC_ WC |
| 1 | PrtConnDet | 检测到端口连接 写入行为:写 1 清除 当检测到设备连接时,内核会设置该位,以便使用内核中断寄存器 (GINTSTS.PrtInt)的主机端口中断位向应用程序触发中断。 | R_SS_WC |
| 0 | PrtConnSts | 端口连接状态 0:端口未连接设备 1:端口已连接设备 | R |
主机通道特性寄存器
注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | ChEna | 通道启用 写入行为:一个用于设置 启用散射/收集模式时: | R_WS_SC |
| 30 | ChDis | 通道禁用 写入行为:1 设置 应用设置该位可停止在通道上传输/接收数据,即使在该通道的传输完成 之前。 应用程序在将通道视为禁用之前,必须等待通道禁用中断。 | R_WS_SC_S S |
| 29 | OddFrm | 奇数帧 该字段由应用程序设置(复位),以指示 OTG 主机必须在奇数(微) 帧中执行传输。 该字段仅适用于周期性(等时和中断)事务。 1'b0:偶数(微)帧 1'b1:奇数(微)帧 该字段不适用于散射/收集 DMA 模式,应用程序无需编程,内核也会忽 略该字段。 | RW |
| 28:22 | DevAddr | 设备地址 该字段选择作为数据源或数据汇的特定设备。 | R |
| 21:20 | EC | 设备地址 该字段选择作为数据源或数据汇的特定设备。 多路计数/错误计数 当主机通道-n 分路控制寄存器(HCSPLTn.SpltEna)的分路启用位被复 位(1'b0)时,该字段向主机指示该周期性端点每个微帧必须执行的事 务数。 对于非周期性传输,该字段仅在 DMA 模式下使用,用于指定在 内部 DMA 引擎更改仲裁前该通道要获取的数据包数量。 2'b00:保留。 该字段将产生未定义的结果。 2'b01:1 个事务 2'b10:每个微帧为该端点发出 2 个事务 2'b11:每个微帧为该端点发出 3 个事务 当 HCSPLTn.SpltEna 设置为(1'b1)时,该字段表示在出现事务错误 时为周期性拆分事务执行的立即重试次数。 该字段必须至少设置为 | RW |
| 19:18 | EPType | 端点类型 表示所选的传输类型。 2'b00:控制 2'b01:异步 2'b10:批量 2'b11:中断 | RW |
| 17 | LSpdDev | 低速设备 该字段由应用程序设置,用于指示该通道正在与低速设备通信。 当低速设备通过 FSHUB 连接到主机时,应用程序必须对该位进行编 程。 在通过 FShub 与 LS 设备通信时,DWC_otg 主机内核使用该字 段将 XCVR_SELECT 信号驱动至 2'b11。 注意:在点对点设置中,即使应用软件设置了该位,DWC_otg 主机内 核也会忽略该位。 | RW |
| 16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | EPDir | 端点方向 指示事务是输入还是输出。 1'b0:OUT 1'b1:输入 | RW |
| 14:11 | EPNum | 端点编号 表示作为数据源或数据汇的设备上的端点编号。 | RW |
| 10:0 | MPS | 最大数据包大小 表示相关端点的最大数据包大小。 | RW |
主机通道-n 拆分控制寄存器
注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | SpltEna | 拆分启用 应用程序设置此字段,表示启用此通道以执行拆分交易。 | RW |
| 30:17 | Reserved | 写入无影响,读取为零。 | R |
| 16 | CompSplt | 写入无影响,读取为零。 执行完全拆分 应用程序设置此字段,以请求 OTG 主机执行完整的拆分交易。 | RW |
| 15:14 | XactPos | 交易位置 该字段用于确定每个 OUT 事务是发送全部、第一个、中间还是最后一个有效载荷。 2'b11:全部。 这是此事务的全部数据有效负载(小于或等于 188 字节)。 2'b10:开始。 这是此事务的第一个数据有效载荷(大于 188 字节)。 2'b00: Mid。 这是此事务的中间有效负载(大于 188 字节)。 2'b01: End(结束)。 这是此事务的最后数据负载(大于 188 字节)。 | RW |
| 13:7 | HubAddr | 集线器地址 该字段为事务翻译器集线器的设备地址。 | RW |
| 6:0 | PrtAddr | 端口地址 该字段是接收方事务翻译器的端口号。 | RW |
主机通道-n 中断寄存器
该寄存器用于指示与 USB 和 AHB 相关事件有关的通道状态。当核心中断寄存器(GINTSTS.HChInt)的主机通道中断位被设置时,应用程序必须读取该寄存器。在应用程序读取该寄存器之前,必须先读取主机全通道中断(HAINT)寄存器,以获得主机通道-n 中断寄存器的准确通道号。应用程序必须清除寄存器中的相应位,才能清除 HAINT 和 GINTSTS 寄存器中的相应位。注:仅适用于主机模式
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:14 | Reserved | 写入无影响,读取为零。 | R |
| 13 | DESC_LST_ ROLLIntr | 描述符翻转中断 该位仅在启用散射/收集 DMA 模式时有效。 当相应通道的描述符列表翻 转时,内核会设置该位。 对于非散射/聚集 DMA 模式,该位保留。 | R_SS_WC |
| 12 | XCS_XACT_ ERR | 过多事务错误 该位仅在启用散射/聚集 DMA 模式时有效。 当 USB 总线上连续出现 3 个事务错误时,内核会设置该位。 异步通道不会生成 XCS_XACT_ERR。 对于非散射/聚集 DMA 模式,该位保留。 | R_SS_WC |
| 11 | BNAIntr | BNA(缓冲区不可用)中断 该位仅在启用散射/聚集 DMA 模式时有效。 当访问的描述符尚未准备好 供内核处理时,内核会产生该中断。 异步通道不产生 BNA 中断。 对于非散射/聚集 DMA 模式,该位保留。 | R_SS_WC |
| 10 | DataTglErr | 数据切换错误 写入行为:1清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 9 | FrmOvrun | 帧超限 写入行为:写 1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 8 | BblErr | 中断错误 写入行为:写 1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 7 | XactErr | 事务错误 写入行为:写 1 清除 表示 USB 发生以下错误之一。 CRC 校验失败 超时 位内容错误 错误 EOP 该位只能由内核设置,应用程序必须写 1 才能将其清除。 在 | R_SS_WC |
| 6 | NYET | 收到 NYET 响应中断 写入行为:写 1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 5 | ACK | 收到/发送的 ACK 响应中断 写入行为:1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 4 | NAK | 收到 NAK 响应中断 写入行为:写 1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 3 | STALL | 收到 STALL 响应中断 写入行为:写 1 清除 该位只能由内核设置,应用程序必须写 1 才能清除。 在散射/收集 DMA 模式下,内核会屏蔽该位导致的中断。 | R_SS_WC |
| 2 | AHBErr | AHB 错误 写入行为:写 1 清除 只有在内部 DMA 模式下,当 AHB 读/写过程中出现 AHB 错误时,才 会产生该中断。 应用程序可通过读取相应通道的 DMA 地址寄存器来获 取错误地址。 | R_SS_WC |
| 1 | ChHltd | 通道停止 写行为:一键清除 在非散射/聚集 DMA 模式下,它表示传输异常完成,原因可能是 USB 交易错误、响应应用程序的禁用请求或传输已完成。 在散射/集聚 DMA 模式下,表示传输因以下原因完成 描述符中设置了 EOL AHB 错误 事务错误过多 响应应用程序的禁用请求 乱码 停滞 | R_SS_WC |
| 0 | XferCompl | 传输已完成 写入行为:写 1 清除 传输正常完成,无任何错误。 该位只能由内核设置,应用程序应写入 1 将 其清除。 对于 Scatter/Gather DMA 模式,它表示当前描述符处理已完成,其描 述符中的 IOC 位已被设置。 在非 Scatter/Gather DMA 模式下,它表示传输正常完成,没有任何错 误。 | R_SS_WC |
主机通道-n 中断屏蔽寄存器
该寄存器反映上一节所述各通道状态的屏蔽。注:仅用于主机模式。注:屏蔽中断:1'b0;解除屏蔽中断:1'b1。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:14 | Reserved | 写入无影响,读取为零。 | R |
| 13 | DESC_LST_ROL LIntrMsk | 描述符翻转中断屏蔽寄存器 该位仅在启用散射/聚集 DMA 模式时有效。 在非散射/聚集 DMA 模式下,该位保留。 | RW |
| 12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | BNAIntrMsk | BNA(缓冲区不可用)中断屏蔽寄存器 该位仅在启用散射/聚集 DMA 模式时有效。 在非散射/聚集 DMA 模式下,该位保留。 | RW |
| 10 | DataTglErrMsk | 数据切换错误屏蔽 | RW |
| 9 | FrmOvrunMsk | 帧超限屏蔽 在非散射/聚集 DMA 模式时有效; 当该位置0,则不会产生中断; | RW |
| 8 | BblErrMsk | 错误屏蔽 在主机的分散/集合 DMA 模式下,中断不会因 HCINTn 中设置的相 应位而产生。 该位不适用于分散/集合 DMA 模式。 | RW |
| 7 | XactErrMsk | 事务错误屏蔽 在主机的分散/集合 DMA 模式下,中断不会因 HCINTn 中设置的相 应位而产生。 该位不适用于分散/集合 DMA 模式。 | RW |
| 6 | NyetMsk | NYET 响应接收中断屏蔽 在主机的分散/集合 DMA 模式下,由于 HCINTn 中设置了相应位, 因此不会产生中断。 该位不适用于分散/集合 DMA 模式。 | RW |
| 5 | AckMsk | 收到/发送的 ACK 响应中断屏蔽 在主机的分散/集合 DMA 模式下,由于 HCINTn 中设置了相应位, 因此不会产生中断。 该位不适用于分散/集合 DMA 模式。 | RW |
| 4 | NakMsk | 收到 NAK 响应中断屏蔽 在主机的分散/集合 DMA 模式下,由于 HCINTn 中设置了相应位, 因此不会产生中断。 该位不适用于分散/集合 DMA 模式。 | RW |
| 3 | StallMsk | STALL 响应接收中断屏蔽 在主机的分散/集合 DMA 模式下,由于 HCINTn 中设置了相应位, 因此不会产生中断。 该位不适用于分散/收集 DMA 模式。 | RW |
| 2 | AHBErrMsk | AHB 错误屏蔽 在主机的分散/集合 DMA 模式下,中断不会因 HCINTn 中设置的相 应位而产生。 | RW |
| 1 | ChHltdMsk | 通道停止屏蔽 | RW |
| 0 | XferComplMsk | 传输完成屏蔽 | RW |
| 31 | DoPng | 进行平移 该位仅用于 OUT 传输。 将该字段设置为 1 将指示主机执行 PING 协议。 注意:不要为 IN 传输设置该位。 如果为 IN 传输设置了该位,则会禁用通道。 | RW |
| 30:29 | Pid | PID 应用程序将初始交易使用的 PID 类型编入此字段。 主机在其余传输过程中保 持该字段。 2'b00:DATA0 2'b01:DATA2 2'b10:DATA1 2'b11:MDATA(非控制)/SETUP(控制) | RW |
| 28:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:8 | NTD | NTD (非同步) 该值是描述符的数量。 列表中描述符的最大数量为 64 个。 数值范围为 0 至 63。 0-1 个描述符。 63- 64 个描述符 该字段表示该列表中存在的描述符总数。 核心将在为该列表的描述符 NTD 数 量提供服务后绕一圈。 异步 该字段表示该列表中描述符的数量。 FS 的可能值为 1-2 个描述符 3-4 个描述符 7-8 个描述符 | RW |
| 7:0 | SCHED_INFO | SCHED_INFO 该 8 位寄存器中的每一位都表示该微帧的调度。 位 0 表示该帧中第 1 个微 帧的调度,位 7 表示该帧中第 8 个微帧的调度。 8'b11111111 的值表示相应的中断通道计划在该帧的每个微帧发出令牌。 8'b10101010 的值表示相应中断通道计划从第二个微帧开始每隔一个微帧发 出一个令牌。 请注意,该字段仅适用于周期(等时和中断)通道。 | RW |
主机通道-n 传输大小寄存器
注:仅适用于主机模式。散射/收集 DMA 模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | DoPng | 进行平移 该位仅用于 OUT 传输。 将该字段设置为 1 将指示主机执行 PING 协议。 注意:不要为 IN 传输设置该位。 如果为 IN 传输设置了该位,则会禁用通道。 | RW |
| 30:29 | Pid | PID 应用程序将初始交易使用的 PID 类型编入此字段。 主机在其余传输过程中保持 该字段。 | RW |
| 28:19 | PktCnt | 数据包计数 该字段由应用程序编程,包含要传输(OUT)或接收(IN)的数据包的预期数 量。 每次成功发送或接收 OUT/IN 数据包时,主机都会递减该计数。 一旦计数为零 应用程序将被中断,以表示正常完成。 | RW , |
| 18:0 | XferSize | 传输大小 对于 OUT,该字段是主机在传输过程中发送的数据字节数。 对于输入,该字段是应用程序为传输预留的缓冲区大小。 应用程序应将该字段编程为 IN 事务(周期性和非周期性)最大数据包大小的 整数倍。 | RW |
主机通道-n DMA 地址寄存器
该寄存器由 OTG 主机在内部 DMA 模式下使用,用于保持 IN/OUT 事务的当前缓冲区指针。DMA 起始地址必须为 DWORD 对齐。注意:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DMAAddr | DMA 地址 该字段为外部存储器的起始地址,端点数据必须从该地址获取或存储到该地址。 该 寄存器在每个 AHB 事务中都会递增。 | RW |
| 31:9 | DMAAddr | DMA 地址 该字段为 512 字节页面的起始地址。 列表中的第一个描述符应位于该地址。 第 一个描述符可能已就绪,也可能尚未就绪。 内核从 CTD 值开始处理列表。 | RW |
| 8:3 | CTD | 当前传输描述符 该值表示描述符的数量。 数值范围为 0 至 63。 0- 1 个描述符。 63 -64 个描述符。 该字段表示当前在列表中处理的描述符。 该字段由应用程序和内核共同更新。 例 如,如果应用程序在编程 CTD=5 后启用通道,那么内核将开始处理第 6 个描 述符。 该地址通过在 DMAAddr 中添加 (8 字节*5=) 40(十进制)的值获得。 | RW |
| 2:0 | Reserved | 写入无影响,读取为零。 | R |
主机通道-n DMA 缓冲区地址寄存器
该寄存器仅在散射/收集 DMA 时存在。它在 RAM 中实现,而不是基于触发器实现。该寄存器保存当前缓冲器地址。注:仅适用于主机模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DMAAddr | DMA 地址 保存当前缓冲区地址。 当相应端点的数据传输正在进行时,该寄存器将被更新 该寄存器仅在散射/收集 DMA 模式下存在。 否则该字段为保留字段。 | 。R |
设备配置寄存器
该寄存器用于在上电后或某些控制命令或枚举后将内核配置为设备模式。初始编程后,请勿更改该寄存器。注:仅用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:26 | ResValid | 恢复验证周期 该字段仅在设置 DCFG.Ena32KHzSusp 时有效。 它控制内核从挂起状 态恢复时的恢复周期。 当该位被设置时,内核会计算 “ResValid ”时钟周 期数,以检测有效的恢复。 | RW |
| 25:24 | PerSchIntvl | 周期调度间隔 PerSchIntvl 仅适用于散射/收集 DMA 模式。 该字段指定内部 DMA 引 擎必须分配用于获取周期性 IN 端点数据的时间量。 根据周期性端点的数 量,该值必须指定为(微)帧的 25、50 或 75%。 当任何周期性端点处于活动状态时,内部 DMA 引擎将分配指定的时间 用于获取周期性 IN 端点数据。 当没有周期性端点处于活动状态时,内部 DMA 引擎为非周期性端点提 供服务,忽略此字段。 在一个(微)帧内的指定时间后,DMA 将切换到非定期端点的获取。 2'b00:(微)帧的 25% 2'b01:50%(微)帧 2'b10:(微)帧的 75% 2'b11:保留 | RW |
| 23 | DescDMA | 在设备模式下启用散射/收集 DMA 应用程序可在初始化过程中设置该位,以启用散射/采集 DMA 操作。 注意:该位只能在复位后修改一次。 以下组合可供编程使用: GAHBCFG.DMAEn=0,DCFG.DescDMA=0=> 从模式 GAHBCFG.DMAEn=0,DCFG.DescDMA=1=> 无效 GAHBCFG.DMAEn=1,DCFG.DescDMA=0=> 缓冲 DMA 模式 GAHBCFG.DMAEn=1,DCFG.DescDMA=1=> 散射/收集 DMA 模式 | RW |
| 22:14 | Reserved | 写入无影响,读取为零。 | R |
| 13 | EnDevOutNak | 启用设备 OUTNAK 在设备模式描述符 DMA 模式下,该位用于在传输完成后设置批量 OUT 端点的 NAK。 1'b0:核心不会在批量 OUT 传输完成后设置 NAK 1'b1:核心在批量输出传输完成后设置 NAK 与其他 DCFG 寄存器位一样,这是复位后的一次性可编程位。 | RW |
| 12:11 | PerFrInt. | 周期帧间隔 表示必须使用周期帧结束中断通知应用程序的(微)帧内时间。 这可用于 确定该(微)帧的所有等时流量是否已完成。 2'b00:80% 的(微)帧间隔 2'b01:85% 2'b10:90% 2'b11:95% | RW |
| 10:4 | DevAddr | 设备地址 应用程序必须在每条 SetAddress 控制命令后对该字段进行编程。 | RW |
| 3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | NZStsOUTHShk | 非零长状态 OUT 握手 应用程序可使用该字段选择内核在控制传输状态阶段的 OUT 事务中接 收到非零长度数据包时发送的握手。 1'b1:在非零长度状态 OUT 事务中发送 STALL 握手,不向应用程序发 送接收到的 OUT 数据包。 1'b0:向应用程序发送接收到的 OUT 数据包(零长度或非零长度),并 根据设备端点控制寄存器中端点的 NAK 和 STALL 位发送握手。 | RW |
| 1:0 | DevSpd | 设备速度 表示应用程序要求内核枚举的速度,或应用程序可支持的最大速度。 不过, 实际总线速度只有在啁啾序列完成后才会确定,并基于内核所连接的 USB 主机的速度。 2'b00:高速(USB 2.0 PHY 时钟为 30 MHz 或 60 MHz) 2'b01:全速(USB 2.0 PHY 时钟为 30 MHz 或 60 MHz) 2'b10:低速(USB1.1 收发器时钟为 6MHz)。 如果选择 6MHzLS 模 式,则必须进行软复位。 | RW |
设备控制寄存器
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:18 | Reserved | 写入无影响,读取为零。 | R |
| 17 | EnContOnBNA | 启用在 BNA 上继续 该位可使 DWC_otg 内核继续处理批量输出和 INTR OUT 端点的 BNA。 启用该功能后,当批量 OUT 或 INTROUT 端点收到 BNA 中断 时,内核会在端点重新启用后开始处理导致 BNA 中断的描述符。 1'b0:收到 BNA 中断后,内核将禁用端点。 当应用程序重新启用端点时 内核将从 DOEPDMA 描述符开始处理。 1'b1:收到 BNA 中断后,内核禁用端点。 当应用程序重新启用端点时, 内核将从接收到 BNA 中断的描述符开始处理。 与其他 DCTL 寄存器位一样,它是复位后的一次性可编程位。 | ,RW |
| 16 | NakOnBble | Babble错误时的 NAK 自动设置 NAK(NakOnBble)。 内核会为接收到 “嗡嗡 ”声的端点自动 设置 NAK。 | RW |
| 15 | IgnrFrmNum | 忽略等时端点的帧号 从站模式(GAHBCFG.DMAEn=0): 该位在从属模式下无效,不应编程为 1。 非散射/采集 DMA 模式(GAHBCFG.DMAEn=1,DCFG.DescDMA=0) 启用阈值模式时不使用该位,因此不应将其编程为 1。 在非散射/收集 DMA 模式下,应用程序会在多个(微)帧传输完成后收 到传输完成中断。 | :RW |
| 14:13 | GMC | 全局多路计数 GMC 必须在初始化后编程一次。 仅适用于散射/收集 DMA 模式,这表示在移动到下一个端点之前,该端 点需要服务的数据包数量。 仅适用于非周期性端点。 2'b00:无效。 2'b01:1 个数据包。 2'b10:2 个数据包。 2'b11:3 个数据包。 当 DCFG.DescDMA 设置为 1 时,该字段值自动更改为 2' h1。 禁用散 射/收集 DMA 模式时,该字段为保留字段,读取为 2'b00。 | RW |
| 12 | Reserved | 写入无影响,读取为零。 | R |
| 11 | PWROnPrgDone | 上电编程完成 应用程序使用该位指示从掉电模式唤醒后寄存器编程是否完成 | RW |
| 10 | CGOUTNak | 清除全局 OUTNAK 写入该字段可清除全局 OUTNAK。 | W |
| 9 | SGOUTNak | 设置全局 OUTNAK 写入该字段可设置全局输出 NAK。 应用程序使用该位向所有 OUT 端点发送 NAK 握手。 应用程序必须在确 | W |
| 8 | CGNPInNak | 清除全局非周期性 IN NAK 写入该字段可清除全局非周期性 IN NAK。 | W |
| 7 | SGNPInNak | 设置全局非周期性 IN NAK 写入该字段可设置全局非周期性 INNAK。 应用程序使用该位向所有非周 期性 IN 端点发送 NAK 握手。 应用程序必须在确保核心中断寄存器(GINTSTS.GINNakEff)中的全局 IN NAK 有效位被清除后,才能设置该位。 | W |
| 6:4 | TstCtl | 测试控制 3'b000:禁用测试模式 3'b001:Test_J 模式 3'b010:测试_K 模式 3'b011:测试_SE0_NAK 模式 3'b100:测试_数据包模式 3'b101:测试_强制_启用 其他:保留 | RW |
| 3 | GOUTNakSts | 全局 OUTNAK 状态 1'b0:根据 FIFO 状态以及 NAK 和 STALL 位设置发送握手。 1'b1:无论空间是否可用,都不向 RxFIFO 写入数据。 除 SETUP 事务 外,对所有数据包发送 NAK 握手。 丢弃所有等时 OUT 数据包。 | R |
| 2 | GNPINNakSts | 全局非周期性 IN NAK 状态 1'b0:根据发送 FIFO 中的数据可用性发送握手。 1'b1:无论发送 FIFO 中的数据是否可用,都会向所有非定期 IN 端点发 送 NAK 握手。 | R |
| 1 | SftDiscon | 软断开 应用程序使用该位向 DWC_otg 内核发出软断开信号。 只要该位被设置, 主机就不会看到设备已连接,设备也不会接收 USB 信号。 内核会一直处 于断开状态,直到应用程序清除该位。 1'b0:正常运行。 当软断开连接后清除该位时,内核会将 UTMI+ 上的 phy_opmode_o 信号驱动为 2'b00,从而向 USB 主机生成设备连接事 件。 设备重新连接后,USB 主机将重新启动设备枚举。 1'b1:内核将 UTMI+ 上的 phy_opmode_o 信号驱动至 2'b01,从而向 | RW |
| 0 | RmtWkUpSig | 远程唤醒信号 当应用程序设置该位时,内核启动远程信令以唤醒 USB 主机。 应用程序 必须设置该位才能指示内核退出挂起状态。 根据 USB 2.0 规范的规定, 应用程序必须在设置该位 1-15 毫秒后清除该位。 如果启用了 LPM 且内 核处于 L1(睡眠)状态,则当应用程序设置该位时,内核将启动 L1 远 程信号唤醒 USB 主机。 应用程序必须设置该位才能指示内核退出睡眠状 态。 根据 LPM 规范的规定,在应用设置该位 50μs(TL1DevDrvResume) 后,硬件会自动清除该位。 当上一个 LPM 事务的 GLPMCFG bRemoteWake 为零时,应用程序不得设置该位。 | RW |
设备状态寄存器
该寄存器显示内核与 USB 相关事件的状态。必须通过设备所有中断 (DAINT) 寄存器的中断读取该寄存器。注:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | Reserved | 写入无影响,读取为零。 | R |
| 23:22 | DevLnSts | 设备线路状态 指示当前逻辑电平 USB 数据线 位 [23]: D+ 的逻辑电平 位 [22]: D- 的逻辑电平 | R |
| 21:8 | SOFFN | 接收 SOF 的帧或微帧编号 当内核高速运行时,该字段包含微帧编号。 当内核以全速或低速运行时, 该字段包含帧号。 注意:如果在上电复位后立即读取该寄存器,可能会返回一个非零值。 如 果在上电复位后立即读取寄存器的非零值,并不表示已从主机接收到 SOF。 只有在主机和设备之间建立了有效连接后,该中断的读取值才有效 | R 。 |
| 7:4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | ErrticErr | 异常错误 内核设置该位以报告在 UTMI+ 上出现的任何错误 (phy_rxvalid_i/phy_rxvldh_i 或 phy_rxactive_i 由于 PHY 错误而断言 至少 2 毫秒)。 由于不稳定的错误,DWC_otg 内核进入挂起状态,并 通过内核中断寄存器的早期挂起位(GINTSTS.ErlySusp)向应用程序发 出中断。 如果由于不稳定错误而断言提前挂起,应用程序只能执行软断开 连接恢复。 | R |
| 2:1 | EnumSpd | 枚举速度 表示 DWC_otg 内核通过啁啾序列进行速度检测后启动的速度。 2'b00:高速(PHY 时钟以 30 或 60 MHz 运行) 2'b01:全速(PHY 时钟以 30 或 60 MHz 运行) 2'b10:低速(PHY 时钟以 6MHz 运行) 2'b11:全速(PHY 时钟以 48 MHz 运行) 使用 UTMI+ PHY 的设备不支持低速。 | R |
| 0 | SuspSts | 暂停状态 在设备模式下,只要 USB 检测到挂起状态,该位就会被置位。 当 phy_line_state_i 信号长时间无活动时,内核进入挂起态。 在下列情况下,内核会从挂起状态中退出: 如果 phy_line_state_i 信号上有任何活动 如果应用程序写入设备控制寄存器 (DCTL.RmtWkUpSig) 中的远程唤醒 信号位。 | R |
设备控制增加
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:30 | Reserved | 写入无影响,读取为零。 | R |
| 0 | Backdoor | 设备模式下针对裂屏问题的后门; 1'b0:裂屏问题修复 1'b1:切换回裂屏问题未修复状态 | RW |
设备 IN 端点通用中断屏蔽寄存器
该寄存器与所有端点的每个设备 IN 端点中断(DIEPINTn)寄存器配合使用,为每个 IN 端点产生一个中断。DIEPINTn 寄存器中特定状态的 IN 端点中断可通过写入该寄存器的相应位来屏蔽。状态位默认为屏蔽。注:仅适用于设备模式。注:屏蔽中断:1'b0;解除屏蔽中断:1'b1。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:14 | Reserved | 写入无影响,读取为零。 | R |
| 13 | NAKMsk | NAK 中断掩码 | RW |
| 12:10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | BNAInIntrMsk | BNA 中断屏蔽 | RW |
| 8 | TxfifoUndrnMsk | 该位仅在启用设备描述器 DMA 时有效。 | RW |
| 7 | Reserved | Fifo 欠载屏蔽 | R |
| 6 | INEPNakEffMsk | 写入无影响,读取为零。 | RW |
| 5 | INTknEPMisMsk | IN 端点 NAK 有效掩码 | RW |
| 4 | INTknTXFEmpMsk | IN 收到令牌时 EP 不匹配掩码 | RW |
| 3 | TimeOUTMsk | TxFIFO 空时收到的 IN 令牌掩码 | RW |
| 2 | AHBErrMsk | 超时条件掩码(非等时端点) | RW |
| 1 | EPDisbldMsk | AHB 错误掩码 | RW |
| 0 | XferComplMsk | 端点禁用中断屏蔽 | RW |
设备输出端点通用中断屏蔽寄存器
该寄存器与所有端点的设备 OUT 端点中断 (DOEPINTn) 寄存器配合使用,为每个 OUT 端点产生一个中断。可通过写入该寄存器的相应位来屏蔽 DOEPINTn 寄存器中特定状态的 OUT 端点中断。状态位默认为屏蔽。注:仅适用于设备模式。注:屏蔽中断:1'b0;解除屏蔽中断:1'b1。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:15 | Reserved | 写入无影响,读取为零。 | R |
| 14 | NYETMsk | NYET 中断屏蔽 | RW |
| 13 | NAKMsk | NAK 中断掩码 | RW |
| 12 | BbleErrMsk | 错误中断屏蔽 | RW |
| 11:10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | BnaOutIntrMsk | BNA 中断掩码 | RW |
| 8 | OutPktErrMsk | 输出数据包错误屏蔽 | RW |
| 7 | Reserved | 写入无影响,读取为零。 | R |
| 6 | Back2BackSETupMsk | 背对背 SETUP 数据包接收掩码 | RW |
| 5 | StsPhseRcvdMsk | 仅适用于控制 OUT 端点。 | RW |
| 4 | OUTTknEPdisMsk | 状态阶段接收掩码 | RW |
| 3 | SetUPMsk | 端点禁用时收到的 OUT 令牌掩码 | RW |
| 2 | AHBErrMsk | 仅适用于控制 OUT 端点。 | RW |
| 1 | EPDisbldMsk | SETUP 阶段已完成掩码 | RW |
| 0 | XferComplMsk | 仅适用于控制端点。 | RW |
设备所有端点中断寄存器
当一个端点发生重要事件时,设备所有端点中断寄存器会使用核心中断寄存器的设备输出端点中断位或设备输入端点中断位(分别为 GINTSTS.OEPInt 或 GINTSTS.IEPInt)中断应用程序。每个端点有一个中断位,输出端点最多 16 位,输入端点最多 16 位。对于双向端点,则使用相应的 IN 和 OUT 中断位。当应用程序设置和清除相应的设备端点-n 中断寄存器(DIEPINTn/DOEPINTn)中的位时,该寄存器中的位将被设置和清除。注:仅用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | OutEPInt | 输出端点中断位 每个 OUT 端点一位: 位 16 用于 OUT 端点 0,位 31 用于 OUT 端点 15 | R |
| 15:0 | InEpInt | IN 端点中断位 每个 IN 端点一位: 位 0 表示 IN 端点 0,位 15 表示端点 15 | R |
| 31:16 | OutEpMsk | OUTEP 中断屏蔽位 每个 OUT 端点一个: 位 16 用于 OUTEP0,位 31 用于 OUTEP15 该字段的值取决于配置的 OUT 端点数量。 | RW |
| 15:0 | InEpMsk | IN EP 中断屏蔽位 每个 IN 端点一位: 位 0 表示 IN EP0,位 15 表示 IN EP15 该字段值取决于配置的 IN 端点数量。 | RW |
设备所有端点中断屏蔽寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | OutEpMsk | InEpMsk | ||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | OutEpMsk | OUT EP 中断屏蔽位,每个 OUT 端点一位。 | RW |
| 15:0 | InEpMsk | IN EP 中断屏蔽位,每个 IN 端点一位。 | RW |
设备 VBUS 放电时间寄存器
该寄存器指定 SRP 期间 VBUS 脉冲后的 VBUS 放电时间。注:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | DVBUSDis | 设备 VBUS 放电时间 指定 SRP 期间 VBUS 脉冲后的 VBUS 放电时间。 该值等于 以 PHY 时钟为单位的 VBUS 放电时间 /1,024 使用的值取决于 PHY 的工作频率是 30MHz(16 位数据宽度)还是 60MHz( 位数据宽度)。 可根据 VBUS 负载调整该值。 | RW 8 |
设备 VBUS 脉冲时间寄存器
该寄存器指定 SRP 期间的 VBUS 脉冲时间。注:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:12 | Reserved | 写入无影响,读取为零。 | R |
| 11:0 | DVBUSPulse | 设备 VBUS 脉冲时间 指定 SRP 期间的 VBUS 脉冲时间。 该值等于 以 PHY 时钟为单位的 VBUS 脉冲时间 /1,024 使用的值取决于 PHY 的工作频率是 30MHz(16 位数据宽度)还是 60 MHz(8 位数据宽度) | RW |
设备阈值控制寄存器
从机模式下不支持阈值控制,因此不得在从机模式下对该寄存器进行编程。要支持阈值,AHB 必须以 60 MHz 或更高的频率运行。注意:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:28 | Reserved | 写入无影响,读取为零。 | R |
| 27 | ArbPrkEn | 仲裁器驻留启用 该位控制 IN 端点的内部 DMA 仲裁器驻留。 如果启用了阈值处理,且该 位设置为 1,那么仲裁器将停靠在 USB 收到令牌的 IN 端点上。 这样做 是为了避免出现欠载情况。 默认情况下,仲裁器驻留已启用。 | RW |
| 26 | Reserved | 写入无影响,读取为零。 | R |
| 25:17 | RxThrLen | 接收阈值长度 该字段以 DWORDS 为单位指定接收阈值大小。 该字段还指定了内核开始 在 AHB 上传输之前 USB 上接收到的数据量。 阈值长度必须至少为 8 个 DWORDS。 ThrLen 的推荐值与已编程的 AHB 突发长度 (GAHBCFG.HBstLen) 相同。 | RW |
| 16 | RxThrEn | 接收阈值启用 设置该位后,内核将启用接收方向的阈值处理。 注意:建议不要启用 RxThrEn,因为它可能会导致 RxFIFO 出现问题, 尤其是在 RxError 和 Babble 等错误条件下。 | RW |
| 15:13 | Reserved | 写入无影响,读取为零。 | R |
| 12:11 | AHBThrRatio | AHB 门限比 这些位定义了仅用于传输路径的 AHB 门限与 MAC 门限之间的比率。 AHB 门限始终小于或等于 USB 门限,因为这不会增加开销。 AHB 和 MAC 门限必须使用 DWORD 对齐。 应用程序需要对 TxThrLen 和 AHBThrRatio 进行编程,以使 AHB 门限值 DWORD 对齐。 如果 AHB 门 限值不是 DWORD 对齐,内核可能无法正常运行。 在编程 TxThrLen 和 AHBThrRatio 时,应用程序必须确保最小 AHB 阈 值不低于 8DWORDS,以满足 USB 周转时间要求。 2'b00:AHB 门限 = MAC 门限 2'b01:AHB 阈值 = MAC 阈值 /2 2'b10:AHB 阈值 = MAC 阈值 /4 2'b11:AHB 阈值 =MAC 阈值 /8 | RW |
| 10:2 | TxThrLen | 传输阈值长度 该字段以 DWORDS 为单位指定传输阈值大小。 这也构成了 MAC 门限, 并规定了在内核开始 USB 传输之前,相应端点传输 FIFO 中的数据量 (以字节为单位)。 当 AHBThrRatio 值为 2' h00 时,阈值长度必须至少为 8 个 DWORDS。 | RW |
| 1 | ISOThrEn | ISO IN 端点阈值启用。 设置该位后,内核启用等时 IN 端点阈值。 | RW |
| 0 | NonISOThrEn | 非 ISO IN 端点阈值启用。 设置该位后,核心将启用非等时 IN 端点阈值。 | RW |
设备 IN 端点 FIFO 空中断屏蔽寄存器
该寄存器用于控制 IN 端点 FIFO 空中断生成(DIEPINTn.TxfEmp)。注:仅用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | InEpTxfEmpMsk | IN EPTxFIFO 空中断屏蔽位 这些位用作 DIEPINTn 的屏蔽位。 TxFEmp 中断 每个 IN 端点一位: 位 0 用于 IN 端点 0 ... 位 15,用于端点 15 | RW |
设备控制 IN 端点 0 控制寄存器
本节介绍控制 IN 端点 0 控制寄存器。非零控制端点使用端点 1-15 的寄存器。注:仅用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | EPEna | 端点启用 写入行为:置 1 当 IN 端点启用散射/收集 DMA 模式时,该位表示已设置描述符 结构和数据缓冲区,其中的数据已准备好传输。 禁用散射/收集 DMA 模式(如在基于缓冲指针的 DMA 模式中)时,该位表示数 据已准备好在端点上传输。 内核在该端点上设置以下中断前会清除该位: 端点禁用 传输完成 | R_WS_SC |
| 30 | EPDis | 端点禁用 写入行为:1 位设置 应用程序设置该位后,即使在端点传输完成之前,也可停止在该端 点上传输数据。 应用程序在将端点视为禁用之前,必须等待端点禁 用中断。 在设置端点禁用中断前,内核会清除该位。 只有在端点启 用已为该端点设置的情况下,应用程序才必须设置该位。 只有启用 DMA 模式时,该位才有效。 | R_WS_SC |
| 29:28 | Reserved | 写入无影响,读取为零。 | R |
| 27 | SNAK | 设置 NAK 写入该位可设置端点的 NAK 位。 通过该位,应用程序可以控制端 点上 NAK 握手的传输。 内核还可以在收到端点的 SETUP 数据 包后设置该端点的 NAK 位。 | W |
| 26 | CNAK | 清除 NAK 写入该位可清除端点的 NAK 位。 | W |
| 25:22 | TxFNum | TxFIFO 编号 该值设置为分配给 IN 端点 0 的 FIFO 编号。 | RW |
| 21 | Stall | STALL 握手 写入行为:一位设置 应用程序设置该位,当收到该端点的 SETUP 令牌时,内核清零 该位。 如果 NAK 位、全局非周期性 IN NAK 或全局 OUTNAK 与该位同时被设置,则 STALL 位优先。 | R_WS_SC |
| 20 | Reserved | 写入无影响,读取为零。 | R |
| 19:18 | EPType | 端点类型 硬编码为00,用于控制。 | R |
| 17 | NAKSts | 端点类型 硬编码为 00,用于控制。 NAK 状态 表示以下情况: 1'b0:根据 FIFO 状态,内核正在传输非 NAK 握手 1'b1:内核正在此端点上传输 NAK 握手 应用或内核设置该位后,即使 TxFIFO 中有可用数据,内核也会 停止传输数据。 无论该位设置与否,内核始终以 ACK 握手方式响 应 SETUP 数据包。 | R |
| 16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | USBActEP | USB 活动端点 该位始终设置为 1,表明在所有配置和接口中,控制端点 0 始终 处于活动状态。 | R |
| 14:2 | Reserved | 写入无影响,读取为零。 | R |
| 1:0 | MPS | 最大数据包大小 适用于输入和输出端点。 应用程序必须使用当前逻辑端点的最大数据包大小对该字段进行 编程。 2'b00:64 字节 2'b01:32 字节 2'b10:16 字节 2'b11:8 字节 | RW |
设备控制输出端点 0 控制寄存器
本节介绍控制输出端点 0 控制寄存器。非零控制端点使用端点 1-15 的寄存器。注:仅用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | EPEna | 端点启用 写入行为:置 1 启用散射/收集 DMA 模式时,对于 OUT 端点,该位表示已建立描述符结 构和数据缓冲区以接收数据。 禁用散射/收集 DMA 模式(如基于缓冲区指 针的 DMA 模式)时,该位表示应用程序已分配好内存,可以开始从 USB 接收数据。 内核在设置该端点上的以下中断之前会清除该位: 设置阶段已完成 端点禁用 传输已完成 注:在 DMA 模式下,必须设置该位,内核才能将 SETUP 数据包传输到 内存中。 | R_WS_SC |
| 30 | EPDis | 端点禁用 应用程序无法禁用控制 OUT 端点 0。 | R |
| 29:28 | Reserved | 写入无影响,读取为零。 | R |
| 27 | SNAK | 设置 NAK 写入该位可设置端点的 NAK 位。 通过该位,应用程序可以控制端点上 NAK 握手的传输。 内核还可以在传输完成中断或端点收到 SETUP 后设置 该位。 | W |
| 26 | CNAK | 清除 NAK 写入该位可清除端点的 NAK 位。 | W |
| 25:22 | Reserved | 写入无影响,读取为零。 | R |
| 21 | Stall | STALL 握手 写入行为:一位设置 当收到该端点的 SETUP 令牌时,应用程序将设置该位,而核心将清除该 | R_WS_SC |
| 20 | Snp | 窥探模式 该位将端点配置为窥探模式。 在窥探模式下,内核在将 OUT 数据包传输 到应用内存之前不会检查它们是否正确。 | RW |
| 19:18 | EPType | 端点类型 硬编码为 2'b00,用于控制。 | R |
| 17 | NAKSts | NAK 状态 表示以下情况: 1'b0:内核根据 FIFO 状态传输非 NAK 握手 1'b1:内核正在此端点上传输 NAK 握手 当应用程序或内核设置该位时,内核将停止接收数据,即使 RxFIFO 中还 有空间容纳传入的数据包。 无论该位设置与否,内核始终以 ACK 握手方式 响应 SETUP 数据包 | R |
| 16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | USBActEP | USB 活动端点 该位始终设置为 1,表明在所有配置和接口中,控制端点 0 始终处于活动 状态。 | R |
| 14:2 | Reserved | 写入无影响,读取为零。 | R |
| 1:0 | MPS | 最大数据包大小 控制输出端点 0 的最大数据包大小与控制输入端点 0 的编程大小相同。 2'b00:64 字节 2'b01:32 字节 2'b10:16 字节 2'b11:8 字节 | R |
| 29 | SetD1PID | 设置 DATA1PID 仅适用于中断/大容量输入和输出端点。 写入该字段可将寄存器中的端点数据 PID (DPID) 字段设置为 DATA1。 该字段既适用于散射/聚集 DMA 模式,也适用于非散射/聚集 DMA 模 式。 | W |
| 28 | SetD0PID | 设置 DATA0PID 仅适用于中断/群集输入和输出端点。 写入该字段可将寄存器中的端点数据 PID (DPID) 字段设置为 DATA0。 该字段既适用于散射/集群 DMA 模式,也适用于非散射/集群 DMA 模 式。 | W |
| 25:22 | TxFNum | TxFIFO 编号 这些位指定了与该端点相关的 FIFO 编号。 每个活动的 IN 端点必须 | RW |
| 16 | DPID | 端点数据 PID 仅适用于中断/块输入和输出端点。 包含要在该端点上接收或发送的数据包的 PID。 应用程序必须在激活 端点后,为该端点接收或传输的第一个数据包的 PID 进行编程。 应用 程序使用该寄存器的 SetD1PID 和 SetD0PID 字段对 DATA0 或 DATA1PID 进行编程。 1'b0:DATA0 1'b1:数据 1 该字段既适用于散射/聚集 DMA 模式,也适用于非散射/聚集 DMA 模 式。 | R |
| 14:11 | Reserved | 写入无影响,读取为零。 | R |
| 10:0 | MPS | 最大数据包大小 适用于输入和输出端点。 | RW |
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | StupPktRcvd | 收到设置数据包 仅在缓冲区 DMA 模式下适用于控制输出端点 该位由 DWC_otg 内核设置,表示该缓冲区保存 8 字节的设置数据。 每个缓冲区只有一个设置数据包。 收到设置数据包后,DWC_otg 内核 会关闭缓冲区并禁用相应的端点。 应用程序必须重新启用端点,才能接收控制传输的任何 OUT 数据,并 重新编程缓冲区起始地址。 注:由于上述行为,DWC_otg 内核可以接收任意数量的背靠背设置数 据包,每个设置数据包使用一个缓冲器。 | R_SS_W C |
| 14 | NYETIntrpt | NYET 中断 当非等时 OUT 端点传输 NYET 响应时,内核会产生该中断。 | R_SS_W C |
| 13 | NAKIntrpt | NAK 中断 当传输 NAK 时,内核会产生该中断。 如果是等时 IN 端点,由于 TXFifo 中的数据不可用,在传输零长度数据包时会产生该中断。 | R_SS_W C |
| 12 | BbleErrIntrpt | BableErr(Babble错误)中断 当端点接收到 “嗡嗡 ”声时,内核会产生该中断。 | R_SS_W C |
| 11 | PktDrpSts | 数据包丢失状态 该位向应用程序指示 ISOC OUT 数据包已被丢弃。 该位没有相关的屏 蔽位,不会产生中断。 依赖性: 当选择定期传输中断功能时,该位在非分散/收集 DMA 模式 下有效。 | R_SS_W C |
| 10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | BNAIntr | BNA(缓冲区不可用)中断 当访问的描述符尚未准备好供核心处理(如主机忙或 DMA 已完成)时, 核心会生成此中断。 依赖性:该位仅在启用散射/收集 DMA 模式时有效。 | R_SS_W C |
| 8 | TxfifoUndrn | FIFO 欠载 仅适用于 IN 端点 内核检测到该端点的发送 FIFO 超限时会产生该中断。 该中断仅在启用阈值时有效。 | R_SS_W C |
| 7 | TxFEmp | 传输 FIFO 空 该位仅对 IN 端点有效。 当该端点的 TxFIFO 为半空或全空时,将断言该中断。 半空或全空状 态由核心 AHB 配置寄存器(GAHBCFG.NPTxFEmpLvl)中的 TxFIFO 空位决定。 ) | R |
| 6 | INEPNakEff | IN 端点 NAK 有效 在向相应的 DIEPCTLn.CNAK 写 1'b1 之前,应通过写 1'b1 清除该 位。 该中断表示应用程序设置的 IN 端点 NAK 位已在内核中生效。 该中断并不保证 USB 会发送 NAK 握手。 STALL 位优先于 NAK 位。 该位仅在端点启用时适用。 | R_SS_W C |
| 5 | INTknEPMis | 收到的 IN 令牌 EP 不匹配 仅适用于非周期性 IN 端点。 表示非周期性 TxFIFO 顶部的数据不属于接收 IN 令牌的端点。 该中 断在收到 IN 标记的端点上断言。 | R_SS_W C |
| 4 | INTknTXFEmp | TxFIFO 为空时收到 IN 令牌 表示在相关 TxFIFO(定期/非定期)为空时收到 IN 令牌。 该中断在收 到 IN 令牌的端点上断言。 | R_SS_W C |
| 3 | TimeOUT | 超时条件 在专用 FIFO 模式下,仅适用于控制 IN 端点。 在散射/收集 DMA 模式下,不断言超时中断。 表示内核检测到该端点 上最后一个 IN 标记的 USB 出现超时情况。 | R_SS_W C |
| 2 | AHBErr | AHB 错误 适用于 IN 和 OUT 端点。 只有在内部 DMA 模式下,当 AHB 读/写过程中出现 AHB 错误时, 才会产生该中断。 应用程序可通过读取相应的端点 DMA 地址寄存器来 获取错误地址。 | R_SS_W C |
| 1 | EPDisbld | 端点禁用中断 适用于 IN 和 OUT 端点。 该位表示端点已根据应用程序的要求禁用。 | R_SS_W C |
| 0 | XferCompl | 传输完成中断 适用于 IN 和 OUT 端点。 启用散射/收集 DMA 模式时 对于 IN 端点,该字段表示描述符请求的数据已从外部系统内存移至内 部 FIFO。 对于 OUT 端点,该字段表示所请求的数据从内部 FIFO 移至外部系 统内存。 只有当相应的端点描述符关闭且相应描述符的 IOC 位被设置 时,才会产生该中断。 禁用散射/收集 DMA 模式时,该字段表示该端点在 AHB 和 USB 上 的编程传输已完成。 | R |
| 31:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:19 | PktCnt | 数据包计数 表示构成 0 端点传输大小数据量的 USB 数据包总数。 每次从 TxFIFO 读取数据包(最大大小或短数据包)时,该字段都会递减。 | RW |
| 18:7 | Reserved | 写入无影响,读取为零。 | R |
| 6:0 | XferSize | 传输大小 表示端点 0 的传输大小(以字节为单位)。 内核只有在用完传输大小的数据 量后才会中断应用程序。 传输大小可设置为端点的最大数据包大小,在每个 数据包结束时中断。 每次从外部存储器向 TxFIFO 写入数据包时,内核都会递减该字段。 | RW |
设备端点控制寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | EPEna | EPDis | SetD1PID/SetOddFr | SetD0PID/SetEvenFr | SNAK | CNAK | TxFNum | Stall | Snp | EPType | NAKSts | DPID/EO_FrNum | USBActEP | Reserved | MPS | |||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | EPEna | 启用端点。 | R_WS_SC |
| 30 | EPDis | 端点禁用。 | R_WS_SC |
| 29 | SetD1PID/SetOddFr | 设置 DATA1 PID 或奇数(微)帧。 | W |
| 28 | SetD0PID/SetEvenFr | 设置 DATA0 PID 或偶数(微)帧。 | W |
| 27 | SNAK | 设置 NAK。 | W |
| 26 | CNAK | 清除 NAK。 | W |
| 25:22 | TxFNum | TxFIFO 编号,仅对 IN 端点有效。 | RW |
| 21 | Stall | STALL 握手控制。 | RW |
| 20 | Snp | 窥探模式,仅适用于 OUT 端点。 | RW |
| 19:18 | EPType | 端点类型:00=控制,01=异步,10=批量,11=中断。 | RW |
| 17 | NAKSts | NAK 状态。 | R |
| 16 | DPID/EO_FrNum | 端点数据 PID 或偶数/奇数(微)帧。 | R |
| 15 | USBActEP | USB 活动端点。 | R_W_SC |
| 14:11 | Reserved | 写入无影响,读取为零。 | R |
| 10:0 | MPS | 最大数据包大小,单位为字节。 | RW |
设备端点-n中断寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | StupPktRcvd | NYETIntrpt | NAKIntrpt | BbleErrIntrpt | PktDrpSts | Reserved | BNAIntr | TxfifoUndrn/OutPktErr | TxFEmp | INEPNakEff/Back2BackSETup | INTknEPMis/StsPhseRcvd | INTknTXFEmp/OUTTknEPdis | TimeOUT/SetUp | AHBErr | EPDisbld | XferCompl | |||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15 | StupPktRcvd | 收到 SETUP 数据包。 | R_SS_WC |
| 14 | NYETIntrpt | NYET 中断。 | R_SS_WC |
| 13 | NAKIntrpt | NAK 中断。 | R_SS_WC |
| 12 | BbleErrIntrpt | Babble 错误中断。 | R_SS_WC |
| 11 | PktDrpSts | ISOC OUT 数据包丢失状态。 | R_SS_WC |
| 10 | Reserved | 写入无影响,读取为零。 | R |
| 9 | BNAIntr | 缓冲区不可用中断。 | R_SS_WC |
| 8 | TxfifoUndrn/OutPktErr | IN FIFO 欠载或 OUT 数据包错误。 | R_SS_WC |
| 7 | TxFEmp | 传输 FIFO 空,仅对 IN 端点有效。 | R |
| 6 | INEPNakEff/Back2BackSETup | IN NAK 生效或控制 OUT 端点收到背靠背 SETUP。 | R_SS_WC |
| 5 | INTknEPMis/StsPhseRcvd | IN 令牌端点不匹配或控制写状态阶段已收到。 | R_SS_WC |
| 4 | INTknTXFEmp/OUTTknEPdis | TxFIFO 空时收到 IN 令牌或端点禁用时收到 OUT 令牌。 | R_SS_WC |
| 3 | TimeOUT/SetUp | 超时条件或 SETUP 阶段完成。 | R_SS_WC |
| 2 | AHBErr | AHB 错误。 | R_SS_WC |
| 1 | EPDisbld | 端点禁用中断。 | R_SS_WC |
| 0 | XferCompl | 传输完成中断。 | R |
设备端点 0 传输大小寄存器
一旦使用设备控制端点 0 控制寄存器的端点启用位(DIEPCTL0.EPEna/DOEPCTL0.EPEna)启用端点 0,内核就会修改该寄存器。只有当内核清除了端点启用位后,应用程序才能读取该寄存器。非零端点使用端点 1-15 的寄存器。启用散射/收集 DMA 模式时,应用程序不得对该寄存器进行编程。如果应用程序在启用散射/采集 DMA 模式时读取该寄存器,内核将返回所有 0。注:仅适用于设备模式。注:IN 端点的偏移量: 0x910;OUT 端点的偏移量: 0xB10。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | Reserved | 写入无影响,读取为零。 | R |
| 30:29 | SUPCnt | SETUP 数据包计数 该字段指定端点可接收的背靠背 SETUP 数据包数量。 2'b01:1 个数据包 2'b10:2 个数据包 2'b11:3 个数据包 | RW |
| 28:20 | Reserved | 写入无影响,读取为零。 | R |
| 19 | PktCnt | 数据包计数 数据包写入 RxFIFO 后,该字段递减为零。 | RW |
| 18:7 | Reserved | 写入无影响,读取为零。 | R |
| 6:0 | XferSize | 传输大小 表示端点 0 的传输大小(以字节为单位)。 内核只有在数据传输大小用尽后 才会中断应用程序。 传输大小可设置为端点的最大数据包大小,在每个数据包结 束时中断。 每次从 RxFIFO 读取数据包并写入外部存储器时,内核都会递减该字段。 | RW |
| 30:29 | MC | 多重计数 仅适用于 IN 端点。 对于周期 IN 端点,该字段表示 USB 上每个微帧必须传输的数据包数 量。 内核使用该字段来计算等时 IN 端点的数据 PID。 • 2'b01:1 个数据包 • 2'b10:2 个数据包 • 2'b11:3 个数据包 | RW |
| 28:19 | PktCnt | 数据包计数 表示构成该端点传输大小数据量的 USB 数据包总数(PktCnt=XferSize /MPS)。 开机值为 10' d10。 IN 端点: 每次从 TxFIFO 读取数据包(最大大小或短数据包)时,该 字段都会递减。 输出端点: 每次向 RxFIFO 写入数据包(最大大小或短数据包)时,该 字段都会递减。 | RW |
| 18:0 | XferSize | 传输大小 该字段包含当前端点的传输大小(以字节为单位)。 传输大小 (XferSize) = 端点列表中所有描述符的缓冲区大小之和。 | RW |
| 31:0 | DMAAddr | DMA 地址 保存用于存储或获取端点数据的外部存储器的起始地址。 注:对于控制端点,该字段可存储控制 OUT 数据包和 SETUP 事务数据包。 当 连续接收到三个以上 SETUP 数据包时,内存中的 SETUP 数据包将被覆盖。 每 个 AHB 事务都会递增该寄存器。 应用程序只能提供一个 DWORD 对齐地址。 未启用散射/收集 DMA 模式时,应用程序将起始地址值编程到该字段中。 启用散射/收集 DMA 模式时,该字段表示描述符列表的基指针。 | RW |
设备端点-n 传输大小寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | MC/RxDPID/SUPCnt | PktCnt | XferSize | ||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | Reserved | 写入无影响,读取为零。 | R |
| 30:29 | MC/RxDPID/SUPCnt | 多重计数、接收数据 PID 或 SETUP 数据包计数。 | RW |
| 28:19 | PktCnt | 数据包计数。 | RW |
| 18:0 | XferSize | 当前端点的传输大小。 | RW |
设备端点-n DMA 地址寄存器
| Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | DMAAddr | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DMAAddr | 保存用于存储或获取端点数据的外部存储器起始地址。 | RW |
DIEPDMABnBn
这些字段仅在散射/收集 DMA 时存在。这些寄存器在 RAM 中实现,而不是基于触发器实现。注:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DMABufferAddr | DMA 缓冲区地址 该寄存器在相应端点的数据传输进行时更新。 该寄存器仅在散射/收集 DMA 模式下存在。 否则该字段为保留字段。 | R |
设备 IN 端点发送 FIFO 状态寄存器
该只读寄存器包含设备 IN 端点 TxFIFO 的可用空间信息。注:仅适用于设备模式。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | INEPTxFSpcAvail | IN 端点 TxFIFO 可用空间 表示端点 TxFIFO 中可用的空闲空间量。 数值以 32 位字为单位。 16' h0:端点 TxFIFO 已满 16' h1:1 个可用字 16' h2:2 个字可用 16' hn:n 个可用字(其中 0≤n≤32,768) 16' h8000:可用 32768 个字符 其他:保留 | R |
电源和时钟门控寄存器
该寄存器在主机和设备模式下可用。应用程序可使用该寄存器控制内核的掉电和时钟门控功能。
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | Suspended | 深度睡眠 该位表示 PHY 在 L1 状态时处于深度睡眠状态。 | R |
| 6 | PhySleep | PHY 处于睡眠状态 该位表示 PHY 处于睡眠状态。 | R |
| 5:1 | Reserved | 写入无影响,读取为零。 | R |
| 0 | StopPclk | 停止 Pclk 当 USB 暂停、会话无效或设备断开连接时,应用程序设置该位以停止 PHY 时钟 (phy_clk)。 当 USB 恢复或新会话开始时,应用程序清零该位。 | R |