MUSBMHDRC 寄存器映射分为以下部分:
Common USB registers (00h–0Fh) – 这些寄存器为整个内核提供控制和状态。
Indexed Endpoint Control/Status registers (10h–1Fh)-这些寄存器为当前选定的端点提供控制和状态。 映射到此部分的寄存器取决于内核是处于外设模式 (DevCtl.D2=0) 还是主机模式 (DevCtl.D2=1) 以及索引寄存器的值。
FIFOs (20h–5Fh)- 该地址范围提供对端点 FIFO 的访问。
Additional Control and Configuration registers (60h–7Fh) 这些寄存器提供额外的设备状态和控制。
Target Endpoint Control Registers (80h–FFh) -在配置 GUI 中启用多点选项时,这些寄存器为每个端点提供目标功能和集线器地址详细信息。 只有在启用多点选项时才能访问这些寄存器。
Non-Indexed Endpoint Control/Status registers (100h and above)-在 10h–1Fh 可用的寄存器,可独立于索引寄存器的设置进行访问。 100h–10Fh EP0 寄存器; 110h–11Fh EP1 寄存器; 120h–12Fh EP2; 等等。
DMA Control Registers (200h and above)-这些寄存器仅在设计被综合为包括可选的 DMA 控制器时才会出现
RqPktCount Registers (304h – 33Ch)- 这些寄存器在主机模式下与 AutoReq 结合使用
DPktBufDis Registers (340h – 343h) 这些寄存器提供了对禁用双数据包缓冲的直接用户控制。
C_T_UCH Registers (344h – 345h) 这些寄存器设置调频超时定时器。
C_T_HSRTN Registers (346h – 347h)-这些寄存器设置从高速恢复信号结束到启用 UTM 正常操作模式的延迟。
COMMON REGISTERS
FAddr
FAddr 是一个 8 位寄存器,应写入事务外围部分的 7 位地址。
当 MUSBMHDRC 在外设模式下使用时(DevCtl.D2=0),该寄存器应写入通过 SET_ADDRESS 命令接收到的地址,然后用于解码后续令牌包中的功能地址。
power
power是一个 8 位寄存器,用于控制挂起和恢复信号,以及 MUSBMHDRC 的一些基本操作方面。
IntrTx
IntrTx 是一个 16 位只读寄存器,用于指示端点 0 和 TX 端点 1-15 当前处于活动状态的中断。 注意:与尚未配置的端点相关的位将始终返回 0。还请注意,当读取该寄存器时,所有活动中断都将被清除。
IntrRx
IntrRx 是一个 16 位只读寄存器,指示 Rx 端点 1 – 15 的哪些中断当前处于活动状态。 注意:与尚未配置的端点相关的位将始终返回 0。还请注意,当读取该寄存器时,所有活动中断都将被清除。
IntrTxE
IntrTxE 是一个 16 位寄存器,为 IntrTx 中的中断提供中断使能位。 当某个位设置为 1 时,MC_NINT 将在 IntrTx 寄存器中的相应中断被置位时置位。 如果某个位设置为 0,则 IntrTx 中的中断仍然设置,但 MC_NINT 未置位。 复位时,与设计中包含的端点 0 和 TX 端点对应的位设置为 1,而其余位设置为 0。注意:与尚未配置的端点相关的位将始终返回 0。
IntrRxE
IntrRxE 是一个 16 位寄存器,为 IntrRx 中的中断提供中断使能位。 当某个位设置为 1 时,MC_NINT 将在 IntrRx 寄存器中的相应中断被置位时置位。 当某个位设置为 0 时,IntrRx 中的中断仍然设置,但 MC_NINT 未置位。 复位时,与设计中包含的 Rx 端点对应的位设置为 1,而其余位设置为 0。注意:与尚未配置的端点相关的位将始终返回 0。
IntrUSB
IntrUSB 是一个 8 位只读寄存器,用于指示当前处于活动状态的 USB 中断。 读取该寄存器时,所有活动中断都将被清除。
IntrUSBE
IntrUSBE 是一个 8 位寄存器,为 IntrUSB 中的每个中断提供中断使能位。
Frame
Frame是一个 16 位只读寄存器,保存最后接收到的帧号。
INDEX
每个 TX 端点和每个 Rx 端点都有自己的一组控制/状态寄存器,位于 100h – 1FFh 之间。 此外,一组 TX 控制/状态和一组 Rx 控制/状态寄存器出现在 10h – 19h。INDEX是一个 4 位寄存器,用于确定访问哪些端点控制/状态寄存器
在 10h – 19h 访问端点的控制/状态寄存器之前,应将端点号写入索引寄存器以确保正确的控制/状态寄存器出现在内存映射中。
Testmode
Testmode 是一个 8 位寄存器,主要用于将 MUSBMHDRC 置于 USB 2.0 规范中描述的高速操作的四种测试模式之一 - 以响应 SET FEATURE: TESTMODE 命令。 它不用于正常操作。
DevCtl
DevCtl 是一个 8 位寄存器,用于选择 MUSBMHDRC 是在 Peripheral 模式下还是在 Host 模式下运行,以及用于控制和监视 USB VBus 线。 如果 PHY 暂停,则不会接收到 PHY 时钟 (XCLK) 并且不会对 VBus 进行采样。
MISC
MISC 寄存器是一个 8 位寄存器,包含各种通用配置位。 这些位包括 Rx/TX Early DMA 使能位。 根据下表,配置位占用寄存器。
INDEXED REGISTERS
TxMaxP (10h)
TxMaxP 寄存器定义了在一次操作中可以通过选定的 TX 端点传输的最大数据量。 每个 TX 端点(端点 0 除外)都有一个 TxMaxP 寄存器。
CSR0L (12h)
CSR0L 是一个 8 位寄存器,为端点 0 提供控制和状态位。注意:寄存器的解释取决于 MUSBMHDRC 是作为外设还是作为主机。 用户还应该知道,读取寄存器时返回的值反映了所获得的状态,例如 作为写入寄存器的结果。
CSR0H (13h)
CSR0H 是一个 8 位寄存器,为端点 0 提供控制位和状态位。注意:寄存器的解释取决于 MUSBMHDRC 是作为外设还是主机。 用户还应该知道,读取寄存器时返回的值反映了所获得的状态,例如 作为写入寄存器的结果。
RxMaxP (14h)
RxMaxP 寄存器定义了在一次操作中可以通过选定的 Rx 端点传输的最大数据量。 每个 Rx 端点(端点 0 除外)都有一个 RxMaxP 寄存器。
RxCSRL (16h)
RxCSRL 是一个 8 位寄存器,为通过当前选择的 Rx 端点的传输提供控制和状态位。 每个配置的 Rx 端点(不包括端点 0)都有一个 RxCSRL 寄存器。 注意:寄存器的解释取决于 MUSBMHDRC 是作为外设还是主机。 用户还应该知道,读取寄存器时返回的值反映了所获得的状态,例如 作为写入寄存器的结果。
RxCSRH (17h)
RxCSRH 是一个 8 位寄存器,它为通过当前选择的 Rx 端点的传输提供额外的控制和状态位。 每个配置的 Rx 端点(不包括端点 0)都有一个 RxCSRH 寄存器。 注意:寄存器的解释取决于 MUSBMHDRC 是作为外设还是主机。 用户还应该知道,读取寄存器时返回的值反映了所获得的状态,例如 作为写入寄存器的结果。
Count0 (18h)
Count0 是一个 7 位只读寄存器,指示 Endpoint 0 FIFO 中接收到的数据字节数。 返回的值随着 FIFO 内容的变化而变化,并且仅在设置 RxPktRdy (CSR0.D0) 时有效。
RxCount(18h)
RxCount是一个 14 位只读寄存器,用于保存当前排队的数据包中要从 Rx FIFO 读取的数据字节数。 如果数据包作为多个批量数据包传输,则给出的数字将用于组合数据包。
注意:返回的值会随着 FIFO 的卸载而改变,并且仅在设置 RxPktRdy (RxCSR.D0) 时有效。
TxType (1Ah)
TxType 是一个 8 位寄存器,应写入端点要作为目标的端点编号、用于当前选择的 TX 端点的事务协议及其运行速度。 每个配置的 TX 端点都有一个 TxType 寄存器(端点 0 除外,它在 1Ah 处有自己的类型寄存器)。 D6-D7 仅在内核配置了多点选项时有效。
TxInterval (1Bh)
TxInterval 是一个 8 位寄存器,用于中断和同步传输,定义当前选择的 TX 端点的轮询间隔。 对于批量端点,此寄存器设置帧/微帧数,在此之后端点在接收 NAK 响应流时应超时。
每个配置的 TX 端点(端点 0 除外)都有一个 TxInterval 寄存器。
NAKLimit0 (1Bh)
NAKLimit0 是一个 5 位寄存器,用于设置帧/微帧(高速传输)的数量,在此之后端点 0 应在接收 NAK 响应流时超时。
FIFOSize (1f)
FIFOSize 是一个 8 位只读寄存器,它返回与选定的附加 TX/Rx 端点相关的 FIFO 的大小。
低半字节编码所选 TX 端点 FIFO 的大小; 高半字节编码所选 Rx 端点 FIFO 的大小。 值 3 – 13 对应于 2 n 字节(8 – 8192 字节)的 FIFO 大小。 如果未配置端点,将显示 0 值。 在 TX 和 Rx 端点共享相同 FIFO 的情况下,Rx FIFO 大小将被编码为 0xF。
ConfigData (1f)
ConfigData 是一个 8 位只读寄存器,它返回有关所选内核配置的信息。