El microcontrolador NXP LPC 4330 arranca muy caliente y a veces no arranca

EDITAR 3 La solución correcta se muestra a continuación, en la respuesta de TurboJ, de hecho, este problema exacto se mencionó en la errata LPC4300 ES_LPC43x0:

ingrese la descripción de la imagen aquí

EDITAR: No, lo siento, falsa alarma. La nueva junta comenzó a hacer lo mismo :(

EDICIÓN 2: Empiezo a preguntarme si el mal diseño es el culpable. Se muestra el carril +3V3. Debido a que la placa es de 2 capas, tuve que renunciar al plano de potencia tradicional y la potencia la proporciona un solo trazo de 6 mil. Noté que el problema nunca ocurrió en una placa sin capacitores de desacoplamiento ocupados, pero comenzó a ocurrir cuando agregué los capacitores de .1uF.

Tengo una placa con un microcontrolador LPC NXP 4330 (ARM Cortex M4/M0 de doble núcleo), en un factor de forma TBGA-100. La situación de la energía es complicada porque tengo sensores que requieren una potencia de precisión de 4 V, por lo que el suministro principal debe ser una caída de LDO por encima de los 4 V, por lo que se alimenta de la siguiente manera:

Lipoly de 3,7 V o USB (controlado a través del cargador de batería MAX1555) -> Conmutador de subida/bajada de 4,5 V (conmutador integrado TPS63061) -> Lineal de caída baja de 3,3 V (LP38691) -> LPC 4330

He notado que en el arranque, el micro se pone muy caliente (demasiado caliente para tocarlo) por un segundo, antes de establecerse a una temperatura más razonable. Cuando hace esto, puedo comunicarme a través de JTAG sin problemas y ejecutar mi aplicación. Siempre se iniciará así cuando se conecte a una fuente de alimentación de banco de 4,5 V (sin pasar por alto el regulador de conmutación por completo). La corriente de sobretensión es muy alta, hasta un par de cientos de mA, como lo confirma el aumento de temperatura.

Cuando está conectado al conmutador (afortunadamente, está en otra placa, por lo que es fácil de eludir), a veces no se inicia. Supongo que esto se debe a que la sobrecorriente está causando que el conmutador se apague porque entra en algún modo de sobrecorriente. Si desconecto el conmutador de la carga, primero enchufo la batería y luego la vuelvo a enchufar en la carga, hará que el micro se caliente (como de costumbre) y luego funcione.

¿Es este comportamiento normal para el LPC 4330? Parece bastante inusual que un microcontrolador necesite varios cientos de mA para iniciarse (¿adónde va toda esa corriente?) ¿Hay alguna manera de evitar esta irrupción de corriente inicial cuando todo el circuito está conectado?

He incluido un esquema, tendré que realizar pruebas en la rampa de suministro el lunes.

esquema (placa micro principal)Placa principal del microcontrolador

esquema (tablero de potencia)Tarjeta de alimentación y conector USB

diseño que muestra el carril +3V3Diseño que muestra el riel +3V3

Sería útil un esquema y un seguimiento del alcance de la línea de 3.3V al inicio.
Odio este tipo de esquemas. Tienes que mirar todo el diagrama para encontrar a qué se conecta una red.
Es difícil de leer a menos que tenga el software, ya que entonces puede escribir show <NET> en el símbolo del sistema. Es principalmente para mantenerse dentro de las limitaciones del software gratuito Eagle (1 página esquemática)
¿Qué sucede si mantiene el reinicio del procesador afirmado mientras lo enciende?
Si sueldo un cable a tierra en lugar de la resistencia en !RESET, no pasa nada. No se calienta, pero el procesador tampoco puede salir de reset. No tengo un interruptor de reinicio, por lo que no hay forma de afirmar físicamente !RESET después de encender.
Que bueno que lo solucionaste. En lugar de editar la pregunta, la forma preferida es publicar la solución como una respuesta y puede marcarla como aceptada para que no parezca que todavía está esperando una solución.
Lamentablemente no fue la solución, todavía sucede en el nuevo tablero. Los problemas de puesta en marcha son realmente un dolor de diagnosticar...
Si mantener la CPU en reinicio evita el pico de energía, entonces sospecharía menos del bloqueo y más sospecharía de las guerras de controladores IO. O componentes de soporte incorrectos instalados; Una vez vi algo así cuando se instalaron resistencias de polarización incorrectas de órdenes de magnitud cerca de un transformador de ethernet. ¿Puede intentar modificar el firmware, por ejemplo, para que se detenga inmediatamente, luego mueva el alto después de cada configuración periférica hasta que descubra dónde entra el pico actual?
Intenté esto, pero parece que ocurrirá si la línea !RESET se levanta en absoluto. Además, el problema no persiste cuando el código se está ejecutando, se calentará y luego se enfriará a una temperatura razonable.

Respuestas (2)

Una posible fuente de bloqueo es USB_VBUS. La hoja de datos del LPC43xx permite que VBUS sea de 5 V solo cuando VCC está presente, pero en su caso, esto lleva un poco de tiempo hasta que se encienden los reguladores. Considere agregar una resistencia en esta ruta.

Otro problema es el ON-Switch de los FPGA 3V3 LDO. Estará habilitado de forma predeterminada, ya que los pines GPIO son "débiles altos" cuando no están configurados. El nivel de voltaje resultante es lo suficientemente alto como para encender el regulador. El SNSpin debe estar conectado a VOUT, si está presente. Deberías cambiar el dibujo en caso de que no lo sean.

Intenté probarlo solo con la batería (sin USB conectado en absoluto) y aún se enganchará/se calentará, pero parece que este es un problema potencial. Noté que muchos diseños usarán un LM3526-H (interruptor de alimentación USB), pero parece innecesariamente complicado ya que no necesito hacer nada sofisticado con el USB (sin OTG, por ejemplo). ¿Agregar una resistencia a VBUS simplemente limitaría la corriente, o es para aumentar el tiempo de subida?
Además, no hay un pin SNS en el paquete del LDO que estoy usando, curiosamente hay un pin N/C donde existe el SNS en otros paquetes. Dejé el SNS en el símbolo esquemático porque los paquetes alternativos lo tienen, pero supongo que podría cambiarle el nombre a SNS/NC. Debería estar bien que el FPGA LDO se inicie, eso solo existe para dar la micro flexibilidad para apagar el FPGA si es necesario para ahorrar energía.
Lamento resucitar un hilo viejo, ¡pero esto fue todo! Cambié esto a la respuesta aceptada.

NXP 4330 de acuerdo con IEC 60134, la corriente máxima absoluta no debe exceder los 100 mA. El dispositivo tiene una potencia nominal de 80 mA a 200 MHz a 3,3 V. Parece que se está disipando mucho más que esto, así que sospecho

si tiene una rampa de inicio lenta en el suministro, la inestabilidad interna puede causar oscilaciones de frecuencia máxima, por lo que un reinicio de encendido puede ayudar. Naturalmente, si el chip comienza a oscilar de 2 a 3 V y hay voltajes de interfaz que exceden este nivel, pueden ocurrir fallas de bloqueo donde las corrientes de cortocircuito pueden exceder los 150 mA por puerto, así que verifique su potencia en las rampas de secuencia en un osciloscopio con una derivación de corriente. Verifique que el interruptor de su interfaz tenga una resistencia lo suficientemente baja como para cambiar rápidamente.

Me pregunto si el diseño tiene algo que ver con esto, ya que tuve que usar un diseño de 2 capas (por lo que, aunque el plano de tierra está casi intacto, no hay un plano de potencia, solo rastros que suministran energía). Sin embargo, si el aumento lento es un problema, ¿no empeora el problema una mayor capacitancia (en forma de plano de potencia)? ¿Ayudaría agregar un capacitor a la señal !RESET (retrasando así el inicio de la ejecución del programa)?
Si su energía cambia en unos pocos EE.UU., no hay problema. Si cambia en 100mS, gran problema. Incluso con 100 uF a bordo, un interruptor de 0,05 ohmios se enciende en 5 us. Verifique su tiempo de subida y voltaje y sospeche de su interruptor. !RESET siempre es mayor por diseño que el peor caso de tensión de rampa. Entonces sí.