Tablero personalizado STM32F4, bajo voltaje en el pin de reinicio

Diseñé la siguiente placa personalizada STM32F407vgt6 para un proyecto.

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

Recientemente soldé las partes y encendí la placa. Intenté programar la placa a través de una placa Discovery STM32F429 a través de la interfaz SWD y obtuve muchos errores que indicaban que la MCU se estaba reiniciando. Luego probé el pin NRST y leí un valor de 0,40 voltios.

El MCU es completamente nuevo. Todos los condensadores de desacoplamiento parecen estar recibiendo suficiente voltaje (2,9 voltios). El regulador también funciona bien. No estoy seguro de por qué el pin NRST tiene un voltaje bajo. Aquí está la parte relevante del diseño del tablero.ingrese la descripción de la imagen aquí

edit1: Esta es una placa de dos capas con la capa superior siendo GND+señal y la inferior siendo VDD+señal. Creo que vale la pena mencionar que a veces el NRST baja a 0,20 voltios. Simplemente varía alrededor de 0,20 - 0,40.

Puedo agregar una imagen de la placa si quieren ver si hay algún problema con la soldadura. Aquí están las fotos de la placa. Tenga en cuenta que traté de cortar la línea VCAP, pero no ayudó suponiendo que corté con éxito la línea.

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

actualizar

Saqué el pin NRST alto. Después de eso, pude conectar y programar la MCU a través de la placa STM32F429 a través de la utilidad ST-Link. La utilidad ST-Link indica que la memoria está programada y verificada. Escribí un pequeño programa que alterna algunos pines GPIO, pero cuando mido el voltaje en esos pines, no veo que suban (3V) o bajen (0V). Simplemente varían alrededor de valores irrelevantes (1.2V, 0.4V, 0.9V, etc.).

Si descubre que agregar un tirón de resistencia adicional no se levanta, es posible que deba considerar las consecuencias del daño por descarga electrostática.
@TonyStewartolderthandirt No digo que agregar una resistencia adicional no ayude. Solo digo que no debería ser necesario en primer lugar.
Si sigues mis sugerencias, encontrarás la causa raíz.
@TonyStewartolderthandirt Su sugerencia es una "solución" para el problema. No veo cómo nos ayudará a encontrar la causa raíz
Si las entradas no utilizadas están oscilando, puede arreglarlo, si NRST tiene una fuga a tierra afectada por esas entradas, puede arreglarlo, si no, entonces puede ser una fuga destructiva (ESD), entonces proteja la entrada. Así que no estoy de acuerdo. Debe informarle la causa, no la solución, mediante una investigación forense de estos posibles problemas y futuras soluciones en el diseño.
¿Cuál es la resistencia entre NRST y el pin de tierra de MCU? ¿Cuánto es el consumo actual de MCU ahora?
¿ Está bien el interruptor ?
Su plano de poder no se vierte en su imagen; con suerte, en realidad está en su tablero. También asegúrese de que su IC no esté girado 90 grados en la huella; es un error fácil de cometer (pista, la escritura en el chip no coincide con la orientación en la hoja de datos, debe usar el marcador pin 1 y no la escritura)
(a) " Puedo agregar una foto de la pizarra " Sí, por favor, fotos en primer plano y enfocadas de la parte superior e inferior de la pizarra. (b) " Simplemente flota alrededor de 0.20 - 0.40 ". Tendría cuidado al usar la palabra "flota", ya que implica un tipo específico de situación que aún no se ha confirmado en su placa (por lo que puedo ver) . A menos que sepa que el pin está flotando, una mejor palabra podría ser "varía". (c) Si tiene acceso a un osciloscopio, sugiero ver NRSTa una sensibilidad razonable (por ejemplo, 0,1 V/div, no 1 V/div) y ver qué tan estable es. (d) ¿Ha verificado también Vdd con un 'alcance?
Aparte, encuentro que la parte del monstruo con 100 conexiones es bastante difícil de manejar. Realmente prefiero dividir el chip en puertas funcionales en Eagle.
@ChrisStratton Sí, el plano superior está rectificado y el plano inferior es VDD. También verifiqué la orientación del chip y parece ser correcto, como se puede ver en las imágenes.
@SamGibson No tengo acceso a un 'alcance, desafortunadamente. He estado probando el pin NRST con un multímetro y parece haber bajado aún más a 0,05 voltios. Extraño.
Gracias. Desafortunadamente, no tener un alcance le impide ver si una lectura de X del multímetro es realmente un voltaje constante de X, o si realmente está cambiando entre los voltajes A y B, con un promedio de X. Esa diferencia puede ser importante para encontrar fallas. de esta complejidad. " Saqué el pin NRST alto " ¿Cómo? ¿Directamente a Vdd con un cable o con una resistencia? Dijiste que los pines GPIO " varían alrededor de valores irrelevantes (1.2V, 0.4V, 0.9V, etc.) ". Dependiendo de su programa, esas medidas con un multímetro pueden ser correctas, ya que dijo que su programa alterna esos pines GPIO.
@SamGibson Conecté el pin directamente a una fuente de 3.3v. ¿Alternar no significa alternar entre alto y bajo? En ese caso, ¿por qué variarían los valores según mi código? ¿No son definitivos los valores altos y bajos?
" Conecté el pin [NRST] directamente a una fuente de 3.3v " ¡Vaya! Eso anula cualquier posible intento de la MCU de derribarlo y podría dañar la MCU. Sospecho que la MCU todavía intentó derribarlo, es decir, todavía no está feliz. "¿ Alternar no significa alternar entre alto y bajo? " Sí, pero dependiendo del ciclo de trabajo de la alternancia en su código , el voltaje promedio (que es todo lo que puede mostrar un multímetro), no será el voltaje de cualquiera de los lógica "alta" o la lógica "baja". Esa es una de las razones por las que el voltaje medido depende de su código. Sospecho que todavía tienes un problema relacionado con la energía.
@SamGibson El código alterna los pines cada 3 segundos. Entonces los pines tienen suficiente tiempo para subir y bajar. Ahora intentaré agregar una resistencia en serie con NRST. Estoy de acuerdo con la idea de tener un problema relacionado con el poder. Pero, ¿qué más hay aparte de la conexión VCAP incorrecta que traté de cortar?
" El código alterna los pines cada 3 segundos " Esa es la primera vez que se menciona: la palabra "alternar" podría significar cambiar a 100 MHz o 0,0001 Hz, etc. V?) y ~0V en un DMM. Desafortunadamente, las imágenes no están lo suficientemente enfocadas (¿desenfoque de movimiento?) para ver la soldadura en detalle. Además, si se conectó NRSTdirectamente a 3,3 V, pero Vdd es solo de 2,9 V, entonces necesita una verificación especial para ver si está permitido. No puedo incluir todas las sugerencias de solución de problemas en un comentario aquí. Si quieres usar el chat aquí en SE, házmelo saber.
@SamGibson Podemos seguir discutiendo el uso del chat SE. Aunque no estoy seguro de cómo iniciar una sesión de chat.
Como se discutió: enlace de la sala de chat

Respuestas (2)

Una posible explicación de que sea bajo es que la MCU NRSTlo está reduciendo . Eso es posible porque la familia STM32 controlará ese NRSTpin externo, cuando cualquiera de los módulos de reinicio interno quiera reiniciar la MCU. El candidato obvio en este caso es el restablecimiento de energía, si hay un problema relacionado con la energía. Este diagrama está tomado de la nota de aplicación ST AN4488 a la que se hace referencia a continuación:

Circuito de reinicio STM32F4

Dado que informa que NRSTestá a 0.4 V y no a un voltaje aún más bajo, parece poco probable que el interruptor de reinicio en sí sea la causa, pero vale la pena verificarlo.

En una primera revisión rápida de su diseño, veo 2 áreas principales de preocupación:

  • BOOT1esta flotando

    Aunque, con BOOT0conexión a tierra, el nivel lógico real de BOOT1no afecta el modo de arranque (como se muestra en la tabla 6 de ST AN4488 a la que se hace referencia a continuación), no he visto un diseño en el que BOOT1el pin quede flotando. Si bien dudo que cause el síntoma específico que informa, lo arreglaría en un nivel lógico válido. FYI, los diseños de referencia STM32F4 tienen resistencias de 10k en serie con ambos BOOTpines, antes de que se suban o bajen externamente, según sea necesario.

  • VCAP1y VCAP2están conectados

    Esta es mi principal preocupación. No he visto la arquitectura interna de MCU para mostrar la diferencia entre estos dos pines (que desacoplan el dominio de alimentación interno de 1,2 V del núcleo de MCU), pero observe que en el documento ST "AN4488: Primeros pasos con el desarrollo de hardware de MCU STM32F4xxxx " , estos dos pines están conectados por separado a un capacitor de 2.2uF, y no, como se muestra en su esquema y PCB, conectados juntos y luego conectados conjuntamente a dos capacitores de 2.2uF.

    Parte del texto sobre esto en el documento anterior es un poco ambiguo, pero el esquema de referencia en la página 34 del PDF es claro acerca de cómo se deben usar esos pines:

    Conexiones VCAP del esquema de referencia STM32F4

    Mirando el diseño de su PCB, parece que simplemente puede cortar la pista que une sus capacitores C11y C13realizar la separación necesaria. Además, asegúrese de estar utilizando el tipo de condensadores especificado, si aún no lo está haciendo.

    Mi hipótesis es que esta conexión incorrecta entre los dos VCAPpines podría estar causando que la MCU mantenga su restablecimiento de energía interno afirmado, que es lo que está midiendo como la lógica baja (0.4V) en el NRSTpin.


Recomiendo leer todo el documento, incluida la sección 9.3 titulada "MCU no funciona correctamente", que puede brindarle más ideas sobre las áreas que debe investigar.

No sé cómo me perdí esa parte de la conexión VCAP al diseñar la placa. Ese es un defecto de diseño obvio de mi tablero. Gracias por señalar eso. Intentaré cortar la línea entre las tapas y ver si ayuda. Por lo que vale, revisé el documento anterior durante la fase de diseño, pero de alguna manera me perdí algunos detalles.

Probablemente necesite una resistencia pull-up (10 K más o menos desde el pin de reinicio a Vcc) para asegurarse de que el pin de reinicio esté alto cuando no se presiona el botón de reinicio.

Esto no es realmente necesario ya que el pin NRST se eleva internamente. El diseño de referencia tampoco incluye una resistencia pull-up para el pin.
Si las entradas no utilizadas se inicializan, no deberían estar flotando.