Detección a nivel de hardware de USB3.0 frente a USB2.0

Estoy diseñando un cargador de batería USB, y estoy tratando de usar hardware simple (los circuitos integrados están bien, simplemente nada en lo que tenga que cargar el firmware preferiblemente) para detectar si la toma USB en la que estoy conectando el dispositivo es o no USB3.0 o USB2.0, por lo que puedo determinar con seguridad cuánta corriente puedo consumir. Estoy usando un chip BQ2439RSER para determinar si el enchufe al que estoy enchufado es un puerto de bajada estándar, un puerto de bajada de carga o un puerto de carga dedicado. Sin embargo, tengo problemas para encontrar una manera simple de verificar si el puerto host es USB3.0 o USB2.0.

Mi idea inicial fue verificar si hay pullups/pulldowns en cualquiera de los pines USB3 adicionales que no están presentes en un conector USB2, sin embargo, en todos los esquemas que he visto, los pares diferenciales de supervelocidad tienen condensadores de bloqueo (consulte la página 11 de esta hoja de datos http://www.ti.com/lit/an/slla329/slla329.pdf ). Lo siguiente que hice fue verificar si el pin GND_DRAIN estaba conectado al pin USB GND común, pero esta publicación ( USB3 con menos cables ) dice que GND_DRAIN y GND no necesariamente van a ser lo mismo.

No necesito ninguno de los pares RX/TX para trabajar o transmitir datos, solo me interesa identificar la corriente máxima permitida y dibujarla. Soy consciente de que algunos dispositivos me limitarán a 100 mA, pero en mi experiencia, estos parecen ser pocos y distantes entre sí en estos días, por lo que estoy dispuesto a probar el prototipo sin enumeración (en el peor de los casos, agregaré un host FT232R controlador para encargarse de eso más tarde, pero estoy tratando de mantener esto lo más simple posible).

Gracias por la ayuda

¿Qué velocidad admite su dispositivo? Tiene USB3?
Entonces, ¿tu dispositivo es el periférico? Entonces es posible que desee buscar en cualquier IC nuevo que el BQ que menciona. Uno que hace negociaciones de alta capacidad usb 3.0 por usted. Estoy seguro de que hay algunos que se pueden configurar a través de resistencias en lugar de alguna versión programable.
Porque la carga USB 3.0 a una corriente o voltaje más alto requiere enumeración.
El dispositivo en realidad no realiza ninguna comunicación. Solo necesito identificar el tipo de puerto para saber si puedo extraer con seguridad 500 mA o 900 mA del puerto. He estado buscando durante un par de días y no he encontrado un IC que identifique el cargador y negocie el nivel de usb3.0. (editar: Sí, mi dispositivo es el periférico. Es completamente tonto, sin embargo, no está destinado a hablar con el host, solo consume energía del Vbus).
@Passerby, no, en realidad no. Para un host USB3 normal (que se designa formalmente como "puerto de alta potencia") no es necesaria la enumeración, y siempre se pueden obtener 900 mA de forma segura. Este es el requisito para un anfitrión. El dispositivo funcional, sin embargo, no tiene derecho a tomar más de "una unidad" antes de ser enumerado y configurado, que es de 150 mA. La regla de "una unidad" solo se aplica a los llamados "hosts integrados de bajo consumo", generalmente dispositivos que funcionan con baterías. Pero, ¿quién intentaría cargar una computadora portátil o un banco de energía desde un pequeño teléfono inteligente? Y los "hosts de baja potencia" deberían limitar la corriente VBUS de todos modos.
@alichen, estamos hablando de voltajes que no son de 5 V y corrientes de más de 1 amperio, que necesitan comunicación negociada.
@Passerby, No. Consulte la Sección 11.4.1 de las especificaciones USB3.1. "Los sistemas que obtienen energía operativa externa, ya sea CA o CC, deben ser capaces de suministrar al menos seis unidades de carga a cada puerto". Y luego: "Los concentradores que obtienen energía operativa externamente (no de VBUS) deben suministrar seis unidades de carga a cada puerto". No se adjuntan otras condiciones. Seis veces 150 mA = 900 mA por cada puerto en una PC normal o incluso en una computadora portátil cuando se conecta a un adaptador de CA.
Estás mirando lo mínimo...
Este es un "mínimo" para un puerto USB 3.1 estándar, sí. Pero para obtener corrientes más altas, las especificaciones de carga de la batería (BC1.2) serán manejadas por el chip BQ2439RSER. Sin Tipo-C, el poder se puede negociar solo a través de BC. En TODOS LOS CASOS no se requiere la enumeración USB. Todas las especificaciones USB se separan intencionalmente de BC o Power Delivery. Son especificaciones casi independientes.

Respuestas (1)

Normalmente, la capacidad del puerto está determinada por el dispositivo después de conectar y configurar la interfaz USB. Y luego controle el cargador en consecuencia. Pero si el dispositivo que diseña no tiene ningún USB, solo un cargador con un cable USB3, puede usar la capacidad de detección de Rx del canal USB3 Tx, consulte la sección 6-11 de las especificaciones de USB3.0.

Esencialmente, debe proporcionar una terminación de 45 ohmios en los cables Tx -> Rx. El host aplicará un pulso a los cables Tx-/Tx+ y observará el tiempo de respuesta de RC. Sin embargo, este pulso puede ser difícil de detectar en el lado Rx. Si el host detecta la terminación, comenzará a enviar señales diferenciales LFPS, Polling.LFPS, que son ráfagas a 10-50MHz y 1us de duración, repetidas cada 10us hasta el tiempo de espera de 360ms, ya que su dispositivo no responderá. Debería poder detectar esta actividad. O tal vez cualquier actividad diferencial en las líneas Tx le dé una pista si el puerto host es USB3 o USB2.

En realidad, es posible que solo desee detectar la actividad de detección de Rx sin proporcionar la terminación, solo servirá un receptor de un solo extremo de alta impedancia, ya que el host debe verificar periódicamente la presencia de la terminación Rx.

¡Gracias por el consejo! ¡Leeré 6-11 y veré si puedo encontrar algún tipo de solución de sondeo! Proporcionaré actualizaciones cuando haga algún progreso.
¿Sería capaz de proporcionar alguna información sobre el momento de la secuenciación de RX-Detect? Sé que será una señal de modo común aplicada a las líneas RX+/RX- entrantes, con un voltaje de no más de 600 mV, pero la especificación no entra en muchos más detalles. Además, ¿con qué frecuencia se volvería a verificar la presencia de terminación? Lo siento si las respuestas están en la especificación, he buscado pero es un documento gigantesco. Si no puedo hacer que eso funcione, siempre puedo agregar una terminación y luego colocar un pequeño balun en las líneas RX para detectar las señales LFPS. ¡Gracias por su ayuda de nuevo!
@Platytude, oh, hombre, me obligaste a encender mi alcance ... El pulso es de 10 us de largo, positivo de 400 mV de alto y la tasa de repetición es de aproximadamente 5 ms. Edge es de aproximadamente 50 ns en un cable de ~ 2 m. Te enviaré una factura...
Jajajaja, muy apreciado, eso debería ser todo lo que necesito