How to adjust USBPHYC settings using USB Eye Diagram

Revision as of 09:33, 21 September 2022 by Registered User
Under construction.png Coming soon


1. General recommendations[edit source]

At IC level, Eye Diagram is characterized with a specific reference resistor between USB_RREF and ground.

Verify first that USB_RREF resistor is correctly connected and has proper value and precision (3 kΩ 1%)

2. Eye Diagram[edit source]

Common modeJitterLevel attenuationRising edgeRippleSignal-to-NoiseFalling egdeCommon modeJitterLevel attenuationRising edgeRipplesignal-to-NoiseFalling edgeUSB Eye diagram.png

2.1. Common mode troubleshooting[edit source]

Hardware root causes to investigate
  • Mismatch between D+ and D- (in terms of length and/or parallelism)
  • Check layout and add common mode filter (e.g. ECMF02-2AMX6[1])
Info white.png Information
It is not possible to solve common mode issue with software.

2.2. Jitter troubleshooting[edit source]

Hardware root causes to investigate
  • Too much capacitance (component or PCB) on D+/D- lines
  • USB Power/GND instability
Check decoupling / Check grounding
Software potential tuning

Only fine tuning available. High jitter has an HW root cause in most cases.

  • USBPHYC_TUNEx.HSDRVRFRED
0: increase rising edge but add jitter
  • USBPHYC_TUNEx.INCURREN/.INCURRINT
Reduce current increase with .INCURREN=0 or .INCURRINT=0
  • USBPHYC_TUNEx.HSDRVCHKITRM
Reduce the increase of the main level

2.3. Level attenuation or Signal-to-Noise troubleshooting[edit source]

Hardware root causes to investigate
  • too much serial resistance and capacitance (component or PCB) on D+/D- lines
  • USB Power/GND instability
Check decoupling / Check grounding
Software potential tuning
  • USBPHYC_TUNEx.HSDRVCHKITRM
Higher the value, higher will be the level of signal.
But noise and ripple can appear
  • USBPHYC_TUNEx.HSDRVCURINCR/.HSDRVDCLEV
Higher the value, higher will be the margin for the level.
But jitter in the rising edge and noise can appear

2.4. Rising edge or Falling edge troubleshooting[edit source]

Hardware root causes to investigate
  • too much serial resistance and capacitance (component or PCB) on D+/D- lines
  • Impedance mismatch : check characteristic impedance of lines, stubs…
Software potential tuning
  • USBPHYC_TUNEx.HSDRVRFRED
0 improve rising edge
1 slow-down rising edge.
Potential impact on jitter
  • USBPHYC_TUNEx.HSDRVCHKITRM
Depending on level, slope is increased/decreased
  • USBPHYC_TUNEx.HSDRVSLEW
0 normal rising edge
1 reduce rising edge.
Useful to reduce a hill shape ripple on top of rising/falling edge
  • USBPHYC_TUNEx.HSDRVCURINCR/.HSDRVDCLEV
Improve slope speed.
But jitter in the rising edge and noise can appear

2.5. Ripple troubleshooting[edit source]

Hardware root causes to investigate
  • Impedance mismatch : check characteristic impedance of lines, stubs…
Software potential tuning
  • USBPHYC_TUNEx.HSDRVCHKZTRM[1:0]
00: Usually open the eye but can create some jitter and ripple
11: Close the eye but can reduce jitter and ripple
  • USBPHYC_TUNEx.HSDRVSLEW
0 normal rising edge
1 reduce rising edge.
Useful to reduce a hill shape ripple on top of rising/falling edge

3. link between Register values and Device Tree description[edit source]

Only few bitfields should be adjusted in the scope of Eye Diagram tuning. It is recommended to keep other as described in default Device Tree examples. See also phy-stm32-usbphyc.yaml[2]

Device Tree item details USBPHYC_TUNEx field
st,current-boost <1> current boosting of 1mA .INCURREN=1/.INCURRINT=0
<2> current boosting of 2mA .INCURREN=1/.INCURRINT=1
st,no-lsfs-fb-cap disables the LS/FS feedback capacitor .LFSCAPEN=1
st,hs-slew-ctrl slows the HS driver slew rate by 10% .HSDRVSLEW=1
st,hs-dc-level <0> decreases the HS driver DC level by 5 to 7mV .HSDRVDCCUR=1
<1> increases the HS driver DC level by 5 to 7mV .HSDRVCURINCR=1/.HSDRVDCLEV=0
<2> increases the HS driver DC level by 10 to 14mV .HSDRVCURINCR=1/.HSDRVDCLEV=1
st,fs-rftime-tuning enables the FS rise/fall tuning option .FSDRVRFRED=1
st,hs-rftime-reduction enables the HS rise/fall reduction feature .HSDRVRFRED=1
st,hs-current-trim controls HS driver current trimming for choke .HSDRVCHKITRM=n [0:15]
st,hs-impedance-trim controls HS driver impedance tuning for choke .HSDRVCHKZTRM=n [0:3]
st,squelch-level adjusts the squelch DC threshold value .SQLCHCTL=n [0:3]
st,hs-rx-gain-eq enables the HS Rx gain equalizer .HDRXGNEQEN
st,hs-rx-offset adjusts the HS Rx offset .HSRXOFF=n [0:3]
st,no-hs-ftime-ctrl disables the HS fall time control of single ended signals during pre-emphasis .HSFALLPREEM=1
st,no-lsfs-sc disables the short circuit protection in LS/FS driver .SHTCCTCTLPROT
st,hs-tx-staggering enables the basic staggering in HS Tx mode .STAGSEL


  • References: