I have done a good amount of research, but cannot come to a conclusion. I am designing a circuit which involves a battery powered device and a USB connection to charge it. The circuit has several current paths.

In order to remain compliant to the USB 2.0 spec, I can only draw 100mA from the host when I am not enumerated, but once I am enumerated, I can draw 500mA. This actually presents a fairly large issue for the design, because 100mA means I have to put in way more effort into current limiting when not enumerated. Space is a massive issue and eliminating as many tiny chips as I can vastly reduces the complexity. We are talking a 1.5 sq inch board here or less.

I do not have plans to use a USB 2.0 connector, but want to go with a type C connector, because type C is very... cool because of its extra pins and reversible nature. However, I plan to use USB 2.0 high speed data and not 3.0+ speeds.

With this in mind, the type C connector has the CC pins. Now if I want to connect to a type A host (legacy host port), I need an adapter which will internally pull up the CC pins with a 56k pull up.

Here is my understanding of the resistor values on the CC pin. There are 3 pull up resistor values that advertise Default USB power (56k), 1.5A current, and 3.0A current. With regards to the 1.5A or 3.0A current advertisements, it is my understanding that I can just start drawing that much power right out of the gate without any enumeration. Is that assumption correct?

Default USB power for a type C connector is very fuzzy. All of the documents I read say 500mA for USB 2.0 or 900mA for USB 3.0. Is this "out of the gate", meaning I can draw that current without enumeration, or is this 'after' enumeration? If this is 'after' enumeration, it means I am back to square one in that I can only draw 100mA before enumeration and 500mA after enumeration. My hesitant guess is that this is 'after' enumeration, because as far as the legacy host port is concerned, it has no knowledge of the type C connector and is still connected to 4 pins on the cable on one end. However, you do have the converse that the type C spec and documents state that the port must allow up to 500mA of current.

  • Is your device a USB device? – Ale..chenski Jan 24 '17 at 4:03
  • @AliChen: The question says "I plan to use USB 2.0 high speed data" – Ben Voigt Jan 24 '17 at 4:42
  • Is it really so hard to reduce current until enumeration? Normally these situations are a pain because you don't want to have to fit a micro running a USB stack, but you're doing that anyway. Can you not just put a small FET to disable the rest of your circuit until the device has enumerated? – Jon Jan 24 '17 at 9:25
  • It actually is difficult to reduce the current, and it involves more than just putting a FET in to disable part of the circuit. There are 2 devices on board, both with firmware that can be updated and one of them is the 'port / power manager. This device needs to work under all circumstances, even from a dead battery. We need to also be able to communicate over USB but not power the system from USB, essentially USB connected for data but not power. In this case, we would send a command down from the PC to switch the power from USB to battery – user2313423 Jan 24 '17 at 13:49

Unfortunately, yes, if the USB 2.0 device seeks the USB-IF certification, it must obey the sequence 100mA -> USB_connect -> enumerated/configured -> full draw of port current. The "full draw" however should be determined by sensing the value of pull-up on attached CC pin.

If the attached cable is a "legacy cable" compliant to Type-C specifications, it should have 56k built-in pullup (you generally don't need any adapter, the cable has the pull-up).

If the attached cable is the "Type-C Standard Cable" connected to another Type-C port, the CC pull-up will be defined by the sourcing port, whichever it is capable of, 1.5 or 3A.

If you want your device to be practically charged, and charged faster, it is advisable to implement a battery-charging detector IC, at least to determine if the port supports Chinese-style charger signature, D+ connected to D-.

To really comply with USB-IF test specifications when using Type-C connector, you need to consult very carefully with this document, Type_C_Functional_Test_Specifications. This is an evolving area, so check for updates.

But if you don't bother with exhaustive USB-IF certification (as most manufacturers do), just take 500mA if it is enough for you, since every reputable host USB port must unconditionally support 500mA of sourcing (except nearly non-existing subset of low-powered portable gadgets running form tiny batteries).

  • Humbug, OK, I had a feeling this was the case. I would like to be USB compliant, so I can only draw 100mA when not enumerated from a legacy port. This makes the design somewhat more complicated, but you have answered my question. – user2313423 Jan 24 '17 at 14:00

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.