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 usarlo como fuente de alimentación alternativa (a través de un regulador de 3.3V) para limitar el consumo de 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.
La mala noticia : los pines tolerantes a 5V parecen ser tolerantes a 5V solo cuando se aplica energía. Hoja de datos §6.2 tabla 18 dice:
Voltaje de entrada máximo en 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 PA9 será de 5V mientras no se aplica energía en los pines de alimentación de la CPU.
Aún más malas noticias : la inyección actual no está permitida: la hoja de datos §6.2, tabla 19, dice:
Corriente inyectada en FT_xxx: -5 / + 0 (ver nota 4)
Nota 4: VIN> VDDIOx induce una inyección positiva, mientras que VIN <VSS induce una inyección negativa. IINJ (PIN) nunca debe ser excedido.
Por lo tanto, 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. Aparentemente, está prohibida cualquier cantidad de corriente que fluya de VBUS a PA9 antes de que aumente el VDD.
¿Qué hicieron los otros?
Eché un vistazo a numerosos diseños alrededor de chips STM32, mirando 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 algo más complicado. Pero en su mayoría son tableros de desarrollo, así que supongo que la robustez (¿es una palabra?) No es muy importante. Y generalmente no se alimentan a través del puerto USB, y ciertamente asumen que el usuario no conectará el puerto USB antes de encender la placa.
Cual es mi plan
Poniendo esto entre VBUS en el puerto USB y el pin PA9 de la MCU:
Realmente intenté mantenerlo simple. Básicamente, asegura que VUSB_CPU (que es el pin PA9) nunca puede estar por encima de VCPU + 4V (Vz + Vbe), sin consumir energía si está bien.
Mis preguntas principales son : ¿Estoy en lo cierto en mi análisis? ¿Es este circuito una buena solución? ¿Me preocupan las 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.7k entre el conector y el pin PA9? Supongo que sería si tuviera que usar el pulso VBUS durante SRP, pero este método aparentemente está en desuso. Entonces, ¿soy bueno, sea cual sea el rol (dispositivo / host) de mi dispositivo?
Una última : ¿Cuál es la corriente máxima consumida 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).
Respuestas:
Vaya con el divisor de resistencia (430k / 620k) en Vbus: esto mantendrá el microcontrolador en especificaciones, y el consumo de corriente parásita no será un problema, ya que se obtendrá exclusivamente de Vbus, no de la batería (que es lo que Asumo que deseas conservar).
fuente
Probablemente el método más simple, use una resistencia de alto valor (10-100k) alimentando un condensador más grande (un par de uF o más) para que el voltaje demore en aumentar, no me preocuparía la fracción de un voltio que se acumula a través del condensador mientras el regulador se está iniciando, si el micro tiene protección ESD, entonces las entradas pueden manejar 5-10V por unas pocas decenas de uS
fuente