MUSBMHDRC 寄存器描述

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 位只读寄存器,它返回有关所选内核配置的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
musb 中文翻译和英文文档.可以通过会话请求协议(SRP)发起USB流量,而双角色设备同时支持SRP和主机协商协议(HNP),并且可以根据需要担任主机或外设的角色。MUSBMHDRC还支持拆分事务,这反过来允许它支持使用带有USB 2.0集线器的全速度或低速设备。核心还包括支持在不使用时关闭便携式设备。 除了端点0之外,MUSBMHDRC是用户可配置的,可支持最多15个‘传输’端点和/或最多15个‘接收’端点。(对于IN事务和OUT事务使用这些端点取决于MUSBMHDRC是用作外设还是用作主机。当用作外设时,IN事务通过TX端点处理,OUT事务通过Rx端点处理。当用作主机时,IN事务通过Rx端点处理,OUT事务通过TX端点处理。)这些附加端点可以在软件中单独配置,以处理批量传输(这也允许它们处理中断传输)、同步传输或控制传输。此外,还可以动态地将端点分配给不同的目标设备函数——最大限度地同时支持设备的数量。 每个端点都需要一个FIFO与之关联。MUSBMHDRC有一个RAM接口,用于连接到用于所有端点FIFOs的同步单端口RAM的单个块。(RAM块本身需要由用户添加。) 端点0的FIFO需要为64字节深,并缓冲1个数据包。RAM接口可以根据其他端点FIFOs进行配置,它的大小可以从8到8192字节,可以缓冲1个或2个数据包。单独的FIFOs可以与每个端点相关联:或者,具有相同端点编号的TX端点和Rx端点可以配置为使用相同的FIFO,例如,如果它们永远不能同时活动,可以减少所需RAM块的大小。 MUSBMHDRC提供了一个32位同步CPU接口,设计用于连接AMBA AHB bus1。接口支持使用AHB总线运行在一个大范围的总线速度。AHB总线上的多层操作也被支持。通过添加合适的包装器/桥接器,MUSBMHDRC还可以很容易地连接到一系列其他标准总线。 还支持对端点FIFOs的DMA访问。 MUSBMHDRC提供了一个UTMI+ 3级兼容接口,用于连接到一个合适的USB高/全速收发器。包含了一个可选的ULPI链接包装器(在musbhdrc /docs目录中包含的musbhdrc_ulpi_an.pdf文档中描述),用于连接到与ULPI兼容的物理。另一种接口也提供,允许使用USB 1.1与核心全速PHY,但仅为全速和低速事务。(此接口见8.1节)。 MUSBMHDRC提供发送和接收USB数据包所需的所有编码、解码、检查和重新请求——仅当端点数据已被成功传输时才中断CPU。 当充当主机时,MUSBMHDRC另外维护一个帧计数器,并自动调度SOF、同步、中断和批量传输。它还包括对在点对点通信中使用的会话请求和主机协商协议的支持,其细节在USB 2.0规范的USB on - go补充中给出。MUSBMHDRC提供了一系列的测试模式——主要是USB 2.0规范中描述的高速运行的四种测试模式。它还包括选项,允许它被迫进入全速模式,高速模式或主机模式。最后一个可能在帮助调试硬件PHY问题时有用。 提供了图形用户界面脚本,用于根据用户的需求配置核心。要使用的脚本取决于所选的CPU接口。请注意:在撰写本文时,内核仅在Verilog中可用。 本规范应与USB运行规范一起阅读,该规范还提供了电源要求、电压水平、连接器等细节。.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值