本问转自公众号,欢迎关注
微信公众平台 (qq.com)
前言
本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: 201: 410: 811:16 |
| 23:22 |
NPTxQDepth |
非周期请求队列深度00: 201: 410: 811:保留 |
| 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 |
设备模式支持的端点数,不包括端点00代表支持0个端点...15代表支持15个端点 |
| 9:8 |
FSPhyType |
全速PHY接口类型00:不支持全速接口01:独立的全速接口10:全速接口和UTMI+引脚共享11:全速接口和ULPI引脚共享 |
| 7:6 |
HSPhyType |
高速PHY接口类型00:不支持高速PHY接口01: UTMI+10: ULPI11: UTMI+和 ULPI这种模式软件可以配置选择UTMI+还是ULPI |
| 5 |
SingPnt |
0:多点应用 (支持hub和split传输)1:单点应用 (不支持hub和 split传输) |
| 4:3 |
OtgArch |
00: Slave-Only模式01: External DMA10: Internal DMAOthers: Reserved |
| 2:0 |
OtgMode |
000:支持HNP和SRP的OTG (Host & Device)001:支持SRP的OTG (Host & Device)010:不支持HNP和SRP的(Host and Device)011: 支持SRP的Device100: Non-OTG Device101:支持SRP的Host110: 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:不支持LPM1:支持 |
| 14 |
BCSupport |
0:不支持电池充电器1:支持 |
| 13 |
HSICMode |
1:支持HSIC接口,和UTMI PHY接口共享0:不支持HSIC接口 |
| 12 |
ADPSupport |
0:不支持ADP1:支持 |
| 11 |
RstType |
复位方式0:内核使用异步复位方式1:内核使用同步复位方式 |
| 10 |
OptFeature |
0: 不移除用户ID寄存器,GPIO接口,SOF翻转和计数端口。1: 移除上述功能 |
| 9 |
VndctlSupt |
0:不支持厂商控制接口1:支持 |
| 8 |
I2CIntSel |
0:无IC接口1:有 |
| 7 |
OtgEn |
0:不支持OTG1:支持 |
| 6:4 |
PktSizeWidth |
包大小计数器的位宽,最大10位,可表示0~1023 1K000: 4 bits001: 5 bits010: 6 bits011: 7 bits100: 8 bits101: 9 bits110: 10 bitsOthers: Reserved |
| 3:0 |
XferSizeWidth |
传输大小计数器位宽,最大19位,可以表示0~524287 512K0000: 11 bits0001: 12 bits...1000: 19 bitsOthers: Reserved |
| 偏移0x50 名字GHWCFG4 |
|
|
|---|
| 位域 |
符号 |
描述 |
| 31 |
DescDMA |
0:Scatter/Gather DMA不可由软件动态配置使能1:可以由软件动态配置使能 |
| 30 |
DescDMAEnabled |
0:不支持Scatter/Gather DMA1:支持 |
| 29:26 |
INEps |
设备模式包括控制端点的IN端点数0: 1 IN端点1: 2 IN端点....15: 16 IN端点 |
| 25 |
DedFifoMode |
是否支持设备模式IN端点使用独立的FIFO0:不支持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 bits01: 16 bits10: 8/16 bits,软件配置其他:保留 |
| 13 |
EnhancedLPMSupt |
是否支持增强的LPM,1使能基于FIFO状态的进入L1行为TX FIFO相关ISOC IN TX FIFO非空时也支持接受L1请求Non-Periodic TX FIFO非空时拒绝L1请求在L1状态时确保应用可以Flush TX FIFORX 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频率是否小于60MHz0:否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 ApplicationOnly? |
GHWCFG2的b5查看配置值SingPnt |
|
| LPM Mode of Operation |
GHWCFG3的b15查看配置值 |
|
| Enable descriptor basedscatter/gather DMA |
GHWCFG4的b30查看配置值是否使能b31查看是否软件可动态 使能 |
|
| Enable Dedicated TransmitFIFO for device IN Endpoints? |
GHWCFG4的b25查看配置值 |
|
| Enable option for endpointspecific 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 SerialTransceiver Interface |
GHWCFG2的b[9:8]查看配置值 |
|
| USB IC_USB TransceiverInterface |
GHWCFG2的b31查看配置值 |
|
| Default (Power on) Interfaceselection: 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 ControlInterface? |
GHWCFG3的b9查看配置值 |
|
|
|
|
设备端点配置参数
| Number of Device ModeEndpoints in Addition toControl Endpoint 0 |
GHWCFG2的b[13:10]查看配置值 |
|
|---|
| Number of Device ModePeriodic IN Endpoints |
GHWCFG4的b[3:0]查看配置值 |
|
| Number of Device Mode activeIN Endpoints Including ControlEndpoint 0 |
GHWCFG4的b[29:26] |
|
| Number of Device ModeControl Endpoints in Additionto Endpoint 0 |
GHWCFG4的b[19:16] |
|
|
|
|
主机端点配置参数
| Number of Host ModeChannels |
GHWCFG2的b[17:14] |
|
|---|
| Is Periodic OUT ChannelSupport Needed in HostMode? |
|
|
|
|
|
端点通道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 TxData FIFO Depth (16 to 32768) |
|
|
| Largest Non-Periodic Tx DataFIFO Depth (16 to 32768) |
|
|
| Largest Host Mode Periodic TxData FIFO Depth (16 to 32768) |
|
|
| Non-Periodic Request QueueDepth |
GHWCFG2的[23:22] |
|
| Host Mode Periodic RequestQueue Depth |
GHWCFG2的[25:24] |
|
| Device Mode IN TokenSequence Learning QueueDepth (0 to 30) |
GHWCFG2的b[30:26] |
|
可添加的配置选项参数
| Enable Service Interval BasedScheduling for ISOC INEndpoints |
GHWCFG4的b10 |
|
|---|
| Width of Transfer SizeCounters |
GHWCFG3的[3:0] |
|
| Width of Packet Counters |
GHWCFG3的b[6:4] |
|
| Remove Optional Features? |
GHWCFG3的b10 |
|
| Power-on Value of User IDRegister |
|
|
| Enable Power Optimization? |
GHWCFG4的b7 b6 b4 |
|
| Is Minimum AHB OperatingFrequency less than 60 MHz? |
GHWCFG4的b5 |
|
| Reset Style for Clocked alwaysBlocks in RTL? |
GHWCFG3的b11 |
|
| Enable Filter on "iddig" signalfrom 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 ControlTransfer Flow Support? |
|
|
| Enable Dynamic PowerReduction? |
|
|
| Enable UPF Power Clamps? |
|
|
| Enable UPF Power SwitchPolarity? |
|
|
端点方向参数
| Direction of Endpoint n(for n = 1; n <=OTG_NUM_EPS) |
GHWCFG1 |
|
|---|
|
|
|
|
|
|
设备周期FIFO深度参数
| Largest Device Mode PeriodicTx Data FIFO n Depth (4 to768)(for n = 1; n <=OTG_NUM_PERIO_EPS) |
|
|
|---|
|
|
|
设备IN端点FIFO深度参数
| Largest Device Mode Tx DataFIFO n Depth (16 to 32768)(for n = 0; n <=OTG_NUM_IN_EPS-1) |
|
|
|---|
|
|
|
UTMI-To-UTMI桥组件参数
|
|
|
|---|
| Enable UTMI-To-UTMI BridgeComponent? |
OTG_HSPHY_INTERFACE == 1 && OTG_HSPHY_DWIDTH != 2&& OTG_MODE > 2 |
|
总结
以上列举了所有相关配置参数,大部分参数都可以通过4个全局硬件配置寄存器中查看。通过查看这些寄存器可以知道控制器当前的配置,知道具备哪些能力,以便后续驱动编写。