Estoy diseñando un dispositivo alrededor del STM32L476. Mi dispositivo funciona principalmente con baterías, pero tiene un puerto USB que, cuando está enchufado, quiero usar como fuente de alimentación alternativa (a través de un regulador de 3.3 V) para limitar el consumo de la batería. También es posible que el usuario conecte el puerto USB mientras no haya baterías.
Quiero poder detectar cuando el puerto USB está conectado, así que estoy usando PA9 como OTF_FS_VBUS.
La buena noticia : la hoja de datos dice que el pin PA9 es tolerante a 5V.
Las malas noticias : los pines tolerantes a 5V parecen ser realmente tolerantes a 5V solo cuando se aplica energía. Hoja de datos §6.2 tabla 18 dice:
Tensión de entrada máxima en los pines FT_xxx: min (VDD, VDDA, VDDIO2, VDDUSB, VLCD) + 4.0V
En mi caso, si no hay baterías y el usuario conecta el puerto USB, hay un tiempo, antes de que se inicie el regulador, durante el cual el voltaje en el PA9 será de 5 V mientras no se aplique alimentación a la CPU. alfileres.
Las noticias aún más malas : la inyección actual no está permitida: hoja de datos §6.2, tabla 19, dice:
Corriente inyectada en FT_xxx: -5 / + 0 (ver nota 4)
Nota 4: una inyección positiva es inducida por VIN > VDDIOx mientras que una inyección negativa es inducida por VIN < VSS. IINJ (PIN) nunca debe superarse.
Parece que no puedo usar una resistencia simple para limitar el exceso de corriente en PA9 durante el tiempo en que se inicia el regulador. Cualquier cantidad de corriente que fluiría de VBUS a PA9 antes de que VDD se acelere está aparentemente prohibida.
¿Qué hicieron los demás?
Eché un vistazo a los numerosos diseños en torno a los chips STM32, observando sus conexiones VBUS, y parece que no les importa. Conectan VBUS directamente a PA9, o eventualmente a través de una resistencia, pero nunca vi nada más complicado. Pero en su mayoría son tableros de desarrollo, así que supongo que la robustez (¿es eso una palabra?) No es muy importante. Y, por lo general, no reciben alimentación a través del puerto USB y, por supuesto, suponen que el usuario no conectará el puerto USB antes de encender la placa.
¿Cuál es mi plan?
Colocando esto entre VBUS en el puerto USB y el pin PA9 de la MCU:
Realmente traté de mantenerlo simple. Básicamente, garantiza que VUSB_CPU (que es el pin PA9) nunca pueda estar por encima de VCPU + 4V (Vz + Vbe), sin consumir energía si está bien.
Mis preguntas principales son : ¿Tengo razón en mi análisis? ¿Es este circuito una buena solución? ¿Me preocupo por cosas que son irrelevantes? ¿Por qué a nadie más parece importarle este problema potencial?
Pregunta adicional : planeo usar USB OTG. ¿Es eso un problema si hay una resistencia de 4.7 k entre el conector y el pin PA9? Supongo que sería si tuviera que usar VBUS pulsando durante SRP, pero este método aparentemente está en desuso. Entonces, ¿estoy bien, sea cual sea el rol (dispositivo / host) de mi dispositivo?
Una última : ¿Cuál es la corriente máxima extraída por el pin de suministro VDDUSB? La hoja de datos especifica, para el periférico USB: 16.4µA / MHz para el dominio de reloj AHB + 23.2µA / MHz para el dominio de reloj independiente, pero no sabemos de dónde se extrae (VDD o VDDUSB).