前言
本IP是一个灵活的可配置的IP,有很多参数可以配置以满足不同的需求,这里的配置参数值得IP的配置参数,不要和软件通过寄存器去配置的参数混淆,IP的配置参数固定之后就不能改了,就决定了IP所具有的能力。对于软件开发者来说也要了解其具体的配置,因为只有知道当前IP的配置,知道支持哪些功能,哪些是软件可以配置的哪些是硬件固定了无法配置的,等等这些,后面写驱动才心中有数。
配置相关寄存器
前面我们介绍了控制器的寄存器,其中有四个只读寄存器GHWCFG1,GHWCFG2,GHWCFG3,GHWCFG4用来显示IP和的相应的配置参数,从名字全局硬件配置寄存器也可以看出其作用,从这四个寄存器可以知道控制器的具体能力。
偏移0x44 名字GHWCFG1 | ||
位域 | 符号 | 描述 |
31:0 | EpDir | 两个bit表示一个端点的方向,低位表示低端点号, b[1:0]表示端点0的方向,其他类推 b00: BIDIR (IN 和 OUT) 双向端点 b01: IN 端点 b10: OUT 端点 b11: Reserved |
偏移0x48 名字GHWCFG2 | ||
位域 | 符号 | 描述 |
31 | OTG_ENABLE_IC_USB | 0:不支持IC_USB全速串行收发接口 1:支持 OTG_FSPHY_INTERFACE == 1 && OTG_ENABLE_IC_USB == 1时为1 |
30:26 | TknQDepth | 设备IN令牌序列队列深度 0~30 |
25:24 | PTxQDepth | 主机模式,周期请求队列深度 00: 2 01: 4 10: 8 11:16 |
23:22 | NPTxQDepth | 非周期请求队列深度 00: 2 01: 4 10: 8 11:保留 |
21 | 保留 | |
20 | MultiProcIntrpt | 0:不支持多处理器中断 1:支持 |
19 | DynFifoSizing | 0:不支持动态调整FIFO大小 1:支持 |
18 | PerioSupport | 主机模式是否支持周期OUT通道 0:不支持 1:支持 |
17:14 | NumHstChnl | 主机支持的通道数 0代表支持1个通道 ... 15代表支持16个通道 |
13:10 | NumDevEps | 设备模式支持的端点数,不包括端点0 0代表支持0个端点 ... 15代表支持15个端点 |
9:8 | FSPhyType | 全速PHY接口类型 00: 不支持全速接口 01: 独立的全速接口 10: 全速接口和UTMI+ 引脚共享 11: 全速接口和ULPI 引脚共享 |
7:6 | HSPhyType | 高速PHY接口类型 00: 不支持高速PHY接口 01: UTMI+ 10: ULPI 11: UTMI+ 和 ULPI这种模式软件可以配置选择UTMI+还是ULPI |
5 | SingPnt | 0: 多点应用 (支持hub 和split 传输) 1: 单点应用 (不支持hub 和 split 传输) |
4:3 | OtgArch | 00: Slave-Only模式 01: External DMA 10: Internal DMA Others: Reserved |
2:0 | OtgMode | 000: 支持HNP和SRP的OTG (Host & Device) 001: 支持SRP的OTG (Host & Device) 010: 不支持HNP和SRP的(Host and Device) 011: 支持SRP的Device 100: Non-OTG Device 101: 支持SRP的Host 110: Non-OTG Host 其他: 保留 |
偏移0x4C 名字GHWCFG3 | ||
位域 | 符号 | 描述 |
31:16 | DfifoDepth | DFIFO 深度 (DfifoDepth - EP_LOC_CNT) 最小32,最大32768,单位是32位(4字节) 注意DfifoDepth是总的DFIFO大小,还有一部分EP_LOC_CNT做端点状态寄存器用,所以真正用于数据传输的只有DfifoDepth - EP_LOC_CNT |
15 | LPMMode | 0:不支持LPM 1:支持 |
14 | BCSupport | 0:不支持电池充电器 1:支持 |
13 | HSICMode | 1:支持HSIC接口,和UTMI PHY接口共享 0:不支持HSIC接口 |
12 | ADPSupport | 0:不支持ADP 1:支持 |
11 | RstType | 复位方式 0:内核使用异步复位方式 1:内核使用同步复位方式 |
10 | OptFeature | 0: 不移除用户ID寄存器,GPIO接口,SOF翻转和计数端口。 1: 移除上述功能 |
9 | VndctlSupt | 0:不支持厂商控制接口 1:支持 |
8 | I2CIntSel | 0:无IC接口 1:有 |
7 | OtgEn | 0:不支持OTG 1:支持 |
6:4 | PktSizeWidth | 包大小计数器的位宽,最大10位,可表示0~1023 1K 000: 4 bits 001: 5 bits 010: 6 bits 011: 7 bits 100: 8 bits 101: 9 bits 110: 10 bits Others: Reserved |
3:0 | XferSizeWidth | 传输大小计数器位宽,最大19位,可以表示0~524287 512K 0000: 11 bits 0001: 12 bits ... 1000: 19 bits Others: Reserved |
偏移0x50 名字GHWCFG4 | ||
位域 | 符号 | 描述 |
31 | DescDMA | 0:Scatter/Gather DMA不可由软件动态配置使能 1:可以由软件动态配置使能 |
30 | DescDMAEnabled | 0:不支持Scatter/Gather DMA 1:支持 |
29:26 | INEps | 设备模式包括控制端点的IN端点数 0: 1 IN 端点 1: 2 IN 端点 .... 15: 16 IN 端点 |
25 | DedFifoMode | 是否支持设备模式IN端点使用独立的FIFO 0:不支持 1:支持 |
24 | SessEndFltr | 0:无session_end滤波 1:有 |
23 | BValidFltr | 0:无b_valid滤波 1:有 |
22 | AValidFltr | 0:无a_valid滤波 1:有 |
21 | VBusValidFltr | 0:不使能VBUS Valid滤波 1:使能 |
20 | IddgFltr | 0:不支持IDDIG滤波 1:支持 |
19:16 | NumCtlEps | 设备模式除了控制端点0以外的控制端点数 0-15 |
15:14 | PhyDataWidth | PHY接口的总线宽度 00: 8 bits 01: 16 bits 10: 8/16 bits, 软件配置 其他:保留 |
13 | EnhancedLPMSupt | 是否支持增强的LPM,1使能 基于FIFO状态的进入L1行为 TX FIFO相关 ISOC IN TX FIFO非空时也支持接受L1请求 Non-Periodic TX FIFO非空时拒绝L1请求 在L1状态时确保应用可以Flush TX FIFO RX FIFO相关 非周期和周期RX FIFO非空时接受L1请求 接受L1请求,但延迟SLEEPM,直到RX SINK缓冲区为空。 任何控制端点在传输时阻止进入L1,PHY时钟被门控关闭也可以Flush TxFIFO。
|
12 | ACGSupt | 是否支持,控制器在没有USB和AHB之间的数据流时支持动态时钟门控降低功耗。 0:不支持 1:支持 |
11 | ipgisocSupt | ISOC OUT内部包间隙最坏情况支持。 根据UTMI规范,最坏场景,RX紧接着RX数据包即任意令牌包后紧接着ISOC OUT令牌时的场景,包间间隙(IPG)为32-bittimes。如果不是能这种场景会检测不到后面的令牌包。默认IPG是使能支持的。如果不支持该功能则取决于AHB 和 PHY 的频率。 0:不支持 1:支持 |
10 | ServIntFlow | 是否支持ISO In端点的基于服务间隔Service-Interval的调度 |
9 | EnhancedLPMSupt1 | 增强的LPM支持 是否支持基于FIFO状态的L1进入条件 0:决绝Bulk/Interrupt TxFIFO非空时的L1请求 1:接受
|
8 | 保留 | |
7 | ExtendedHibernation | 0:不支持扩展休眠功能 1:支持 |
6 | Hibernation | 0:不支持休眠功能 1:支持 |
5 | AhbFreq | 最小AHB频率是否小于60MHz 0:否 1:是 |
4 | PartialPwrDn | 0:不支持分区掉电 1:支持 |
3:0 | NumDevPerioEps | 设备模式支持的周期IN端点数 |
基本配置参数
Mode of Operation | GHWCFG2寄存器的 b[2:0]查看配置值 OtgMode | 支持OTG, HNP, 和 SRP的可以由软件配置不使用。 不支持Non-HNP/SRP的OTG不可以动态切换角色,但是可以根据连接的是A还是B连接去决定是主机还是设备。 如果要支持micro AB插座的嵌入式主机需要配置为0,1,5
|
Architecture | GHWCFG2寄存器的b[4:3] 查看配置值 OtgArch | |
Point-to-Point Application Only? | GHWCFG2的b5查看配置值 SingPnt | |
LPM Mode of Operation | GHWCFG3的b15查看配置值 | |
Enable descriptor based scatter/gather DMA | GHWCFG4的b30查看配置值 是否使能 b31查看是否软件可动态
使能 | |
Enable Dedicated Transmit FIFO for device IN Endpoints? | GHWCFG4的b25查看配置值 | |
Enable option for endpoint specific interrupt | GHWCFG2的b20查看配置值 |
USB物理层接口参数
High-Speed PHY Interface(s) | GHWCFG2的b[7:6]查看配置 值 | |
Data Width of the UTMI+ Interface | GHWCFG4的b[15:14]查看 配置值 | |
USB 1.1 Full-Speed Serial Transceiver Interface | GHWCFG2的b[9:8] 查看配置值 | |
USB IC_USB Transceiver Interface | GHWCFG2的b31查看 配置值 | |
Default (Power on) Interface selection: FS_USB/IC_USB | GUSBCFG的b26初始值 依赖该配置 | |
HSIC Mode of Operation | GHWCFG3的b13查看 配置值 | |
Enable I2C Interface? | GHWCFG3的b8查看 配置值 | |
Enable ULPI Carkit? | OTG_HSPHY_INTERFACE==2 || OTG_HSPHY_INTERFACE==3时使能 支持ULPI接口读PHY寄存器 | |
ADP Controller Support | GHWCFG3的b12查看配置值 | |
Battery Charger Support | GHWCFG3的b14查看配置值 | |
Enable PHY Vendor Control Interface? | GHWCFG3的b9查看配置值 | |
设备端点配置参数
Number of Device Mode Endpoints in Addition to Control Endpoint 0 | GHWCFG2的b[13:10] 查看配置值 | |
Number of Device Mode Periodic IN Endpoints | GHWCFG4的b[3:0] 查看配置值 | |
Number of Device Mode active IN Endpoints Including Control Endpoint 0 | GHWCFG4的b[29:26] | |
Number of Device Mode Control Endpoints in Addition to Endpoint 0 | GHWCFG4的b[19:16] | |
主机端点配置参数
Number of Host Mode Channels | GHWCFG2的b[17:14] | |
Is Periodic OUT Channel Support Needed in Host Mode? | ||
端点通道FIFO配置参数
Total Data FIFO RAM Depth (64 to 32768) | GHWCFG3的b[31:16] | |
Enable Dynamic FIFO Sizing? | GHWCFG2的b19 | |
Largest Rx Data FIFO Depth (16 to 32768) | ||
Largest Non-Periodic Host Tx Data FIFO Depth (16 to 32768) | ||
Largest Non-Periodic Tx Data FIFO Depth (16 to 32768) | ||
Largest Host Mode Periodic Tx Data FIFO Depth (16 to 32768) | ||
Non-Periodic Request Queue Depth | GHWCFG2的[23:22] | |
Host Mode Periodic Request Queue Depth | GHWCFG2的[25:24] | |
Device Mode IN Token Sequence Learning Queue Depth (0 to 30) | GHWCFG2的b[30:26] |
可添加的配置选项参数
Enable Service Interval BasedScheduling for ISOC IN Endpoints | GHWCFG4的b10 | |
Width of Transfer Size Counters | GHWCFG3的[3:0] | |
Width of Packet Counters | GHWCFG3的b[6:4] | |
Remove Optional Features? | GHWCFG3的b10 | |
Power-on Value of User ID Register | ||
Enable Power Optimization? | GHWCFG4的b7 b6 b4 | |
Is Minimum AHB Operating Frequency less than 60 MHz? | GHWCFG4的b5 | |
Reset Style for Clocked always Blocks in RTL? | GHWCFG3的b11 | |
Enable Filter on "iddig" signal from PHY? | GHWCFG4的b20 | |
Enable Filter on "vbus_valid" signal from PHY? | GHWCFG4的b21 | |
Enable Filter on "a_valid" signal from PHY? | GHWCFG4的b22 | |
Enable Filter on "b_valid" signal from PHY? | GHWCFG4的b23 | |
Enable Filter on "session_end" signal from PHY? | GHWCFG4的b24 | |
Enable Exceptional Control Transfer Flow Support? | ||
Enable Dynamic Power Reduction? | ||
Enable UPF Power Clamps? | ||
Enable UPF Power Switch Polarity? |
端点方向参数
Direction of Endpoint n (for n = 1; n <= OTG_NUM_EPS) | GHWCFG1 | |
设备周期FIFO深度参数
Largest Device Mode Periodic Tx Data FIFO n Depth (4 to 768) (for n = 1; n <= OTG_NUM_PERIO_EPS) | ||
设备IN端点FIFO深度参数
Largest Device Mode Tx Data FIFO n Depth (16 to 32768) (for n = 0; n <= OTG_NUM_IN_EPS-1) | ||
UTMI-To-UTMI桥组件参数
Enable UTMI-To-UTMI Bridge Component? | OTG_HSPHY_INTERFACE == 1 && OTG_HSPHY_DWIDTH != 2 && OTG_MODE > 2 | |
总结
以上列举了所有相关配置参数,大部分参数都可以通过4个全局硬件配置寄存器中查看。通过查看这些寄存器可以知道控制器当前的配置,知道具备哪些能力,以便后续驱动编写。