USB-C Problems with USB-PD cycling every second (ANG)

Some points to note about the 22k vs 10k resistor pullup (Rp) and its potential affects on devices.

  1. 22k results in idle 0.88V. Idle is the voltage between CC messages.
  2. 10k results in idle 1.6V. Idle is the voltage between CC messages.
  3. the CC messages swing between 0 and 1.2V
  4. Current = V / (Rp + Rd)
    5V / (22k + 5.1k) = 0.184mA
    5V / (10k + 5.1k) = 0.331mA
  5. Current affects noise immunity. More current == better noise immunity. So the 10k case is about twice as noise immune as the 22k case. Note: lot of other factors also affect noise immunity, this is just one of them.
  6. Using idle of 0.88V makes the detection of the first bit of the CC message difficult to get right. It sometimes adds an extra bit, sometimes drops the first bit.
  7. Every non-FW laptop I tested with uses the 1.6V idle option. I have only found the FW16 laptop using the 0.88V idle option.
  8. Every USB device I have negotiates the power using the CC messages. I don’t have any devices that only used the 22k/10k to decide how much power to draw.
  9. Only USB-C has CC messaging, so the 22k/10k only affects things one plugs into USB-C ports. Those are all normally modern components and thus unlikely to only use the 22k/10k to decide on current draw.
  10. The CC message detection logic in USB-C chips is normally done in hardware so firmware updates are unlikely to make them better at detecting CC messages. There are a lot of problematic USB-C chips out there.
  11. When problem cycling devices are instead plugged into USB-A ports, they have worked OK. My theory on that, is that USB-A does not have CC messages, and thus the Rp resistor is not involved at all with USB-A, so those obviously will work. E.g. the problem iPhone noted in other threads. USB-A uses different pins for negotiation messages and also different modulation.
    USB-A uses: Frequency Shift Key (FSK) modulation coupled onto the VBUS wire.
    USB-C uses: Bi-phase mark code (BMC) encoding onto the CC1/CC2 wire.
  12. I don’t exactly know why the USB-C standard chose BMC. FSK is much better at noise immunity than BMC. It is interesting to note the USB-C supports both. It says all devices must do BMC and FSK is optional, but it might be worth the FW16 falling back to FSK if the BMC negotiation fails.

Summary:
My advice to FW, for design future main-boards, is to design them so that they can all use the 10k Rp and have associated over current protection so if devices draw too much, it will not damage the main-board. This will make the future FW main-boards have better compatibility with a wider range of USB-C devices.

As a work around, but just for me, I will be adding an EC command, so that I can change the Rp on one of the USB-C ports to output idle 1.6V. So that I can connect these problematic cycling USB-C devices to that one port and at least they will connect and not cycle.

3 Likes