This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ25883: Using the D+/D- lines for USB Data Transmission from onboard microcontroller

Part Number: BQ25883
Other Parts Discussed in Thread: BQ25886

We are looking at using the BQ25883 as the battery charger for our design. We know the chip uses the D+/D- USB lines to perform the input source detection and perform the BC1.2 communications which we need, but we also need to transmit USB data from our onboard microcontroller (our device will be acting as the USB device or slave) to a PC using the same D+/D-. Can the D+/D- lines be shared between the charger and a microcontroller? What is the best way to implement this? Will the computer still allow a device to enumerate and perform data transmission after the BC1.2 communications?

I've seen in the forums this question on a similar device, the BQ25886, where it was stated by a TI Employee the D+/D- lines go in high impedance around 1 second after connection. But this is not documented anywhere in the datasheet that I can find. Does that also happen with this device?
https://e2e.ti.com/support/power-management/f/196/p/862179/3189193

If a MUX is the recommended way to go, how or who do you recommend to perform the MUX switching? How do you know when it's an allowed time to switch? 

  • Ethan,

    Thank you for referring to a previous post! So as for when to switch the mux there are a few options. Unfortunately the BQ2588X family of device do not have an input detection complete bit that some of our other devices have.

    Section 8.3.3.2 of the BQ25883 datasheet describes what actions happen immediately after input detection is complete. Upon adaptor connection you could keep the MUX switched to BQ25883. Once the host receives an /INT pulse, then switch the mux to the host. When the adaptor is removed, switch the mux back to BQ25883.

    An alternative solution would forgo BC1.2 detection and rely upon the ICO algorithm to set your input current limit. BQ25883 will perform both schemes by default and select the lower of the two values as the input current limit. You could short D+/D- to set the input current limit to 3A and then the ICO routine would limit the current appropriately with making use of D+/D- and no mux would be required. The tradeoff is that your device would no longer perform BC1.2 detection and use the proprietary ICO routine instead. 

    I hope this helps!,

    Ricardo

  • Ricardo,

    Thanks for getting back. 

    Can you confirm that the BQ25883 D+/D- lines go into high-impedance after BC1.2 detection?

    -Ethan

  • Ethan,

    You are correct. D+ and D- will go high impedance after BC1.2 detection is complete.

    Thanks,

    Ricardo

  • Ok, Thanks.

    Can you confirm the below schematic, which details just the D+/D- lines, is what you were implying when you said I could short the D+/D- lines and rely on just the ICO algorithm? 

     

    -Ethan

  • Ethan,

    Yup that is what I was describing. The link below will take you to an application report detailing the ICO algorithm:

    https://www.ti.com/lit/an/slva812c/slva812c.pdf

    Thanks,

    Ricardo

  • Ok. Thank you! And what I believe is the last question for now - 

    Is the host source port allowed to change its max current limits dynamically after establishing BC1.2?

    For example, if upon adapter connection, I establish BC1.2 and am told the host supports 1.5A, is there any chance later during the same connection the host changes its limits down to 500mA and I would need to be informed of this somehow? I know that type of operation happens with Type-C power negotiations but was not sure about BC1.2 specifically.

    I'm worried if I'm MUXed over to the microcontroller after the first BC1.2, I would miss the new BC1.2 request somehow. 

    -Ethan

  • Ethan,

    The host can rewrite the IINDPM bits to set a different input current limit after initial detection is complete. You can rerun BC1.2 detection using the FORCE_INDET bit. You can also rerun ICO using the FORCE_ICO bit.

    Thanks,

    Ricardo

  • Hi Ricardo. 

    I was not meaning on the BQ25883 side, I'm talking about the USB host power source side - like the computer I'm connected. 

    Can the computer port I'm connected to change its max current limits during a connection and after I've established the first BC1.2? Is that allowed via BC1.2? 

    -Ethan

  • Ethan,

    As far as I am aware, no. BC1.2 described SDP, CDP, and DCP and each of these are fixed. After BC1.2, type-C and PD were introduced and those capable adaptors do some further negotiation. BQ25883 is only designed with BC1.2 in mind.

    Thanks,

    Ricardo

  • Alright! Thanks again, Ricardo.

    We have an eval board coming in tomorrow, so if anything comes up, I'll reach back out. Otherwise, have a good weekend coming up and I appreciate the quick support!  

    -Ethan