¿Cómo programar el chip STM32f411RE?

Desarrollé un prototipo usando la placa STM NUCLEO (NUCLEO-F411RE) y ahora que estoy satisfecho con el diseño, ahora estoy en el proceso de probar todo junto en mi propia PCB. Todos los demás componentes diseñados para mi PCB funcionan muy bien, excepto el nuevo STM32F411RE (paquete LQFP4) que he integrado en la placa. ¡No puedo conectarme a la placa a través de la interfaz SWD para cargar ningún programa y ahora estoy completamente perplejo después de muchos intentos de depuración! Seguí todas las recomendaciones de diseño de hardware proporcionadas en las notas de la aplicación STM32 ( https://www.st.com/content/ccc/resource/technical/document/application_note/76/f9/c8/10/8a/33/4b /f0/DM00115714.pdf/files/DM00115714.pdf/jcr:content/translations/en.DM00115714.pdf ).

Intenté usar dos programadores diferentes para comunicarme con la placa; 1) ST-Link/V2-ISOL 2) El ST-Link que se puede romper de la placa NUCLEO

Verifiqué que ambos programadores funcionan cuando se conectan a los pines correctos en la placa de conexión NUCLEO-F4llRE que es VDD/SWCLK(PA14)/GND/SWDIO(PA13)/NRST/SWO(PB3). La verificación de la conexión se realiza con el software STM32 ST-Link Utility. Las configuraciones para la utilidad ST-Link son; configuración de conexión = SWD, frecuencia = 480kHZ (he probado con otras frecuencias), modo = conectar bajo reinicio y el modo de reinicio es Reinicio de hardware.

Cuando intento conectarme, aparece el mensaje "¡No se puede conectar con el objetivo!" error de la utilidad ST-Link, así como un FAIL.txt de ST-Link V2 que contiene "el firmware de la interfaz FALLÓ al restablecer/detener la MCU de destino". Conecté mi osciloscopio para analizar el pin NRST que había subido con una resistencia de 10Kohm junto con una tapa a tierra cerca del pin de reinicio STM32F4. Veo que el ST-Link está enviando un pulso de reinicio pero la MCU pero sin conexión, supongo. Luego traté de conectarme a la placa bajando NRST con una resistencia desplegable de 10k y aún no había conexión... Verifiqué la continuidad entre los pines STM32f4 en la PCB y los pines del conector y todo está bien en términos de soldadura. ¿adivinar? Creo que el diseño y la ubicación del controlador son correctos, ya que seguí la hoja de datos de ST y el diseño de la placa NUCLEO. ¡Tal vez si alguien pudiera verificar eso sería genial! También soy nuevo en el desarrollo de PCB con mcu, por lo que esto podría ser un error estúpido que no veo :)

Además, tengo mi placa alimentada desde una fuente de alimentación separada antes de conectar el programador ST-LINK V2. ¡Cualquier ayuda / recomendación sería muy apreciada ya que estoy atascado! Aquí hay algunas fotos de mi configuración.

Esquema

diseño de placa de circuito impreso

tarjeta de circuito impreso

Verifique dos veces el pinout, verifique dos veces la conectividad a todos los pares de alimentación y tierra. Obtenga una lupa de 10x e inspeccione la soldadura de todos los pines en busca de cortocircuitos o incluso falta de filetes que puedan indicar una abertura sutil. Asegúrese de que el programador tenga un terreno común y que los cables sean cortos. Si el programador no puede activar NRST manualmente, hágalo antes, también intente conectar el programador mientras se mantiene en reinicio. Asegúrese de que las líneas SWD no estén en cortocircuito.
¿Cómo conectó todos esos pines GND que parecen desconectados, por ejemplo, C32 y IC4-Pin 47?
La alineación de los pines frente a los pads en la esquina superior izquierda se ve sospechosamente mal, y ahí es donde se encuentran las señales SWD...
Entonces, una cosa que olvidé mencionar es que cometí un error estúpido en mi esquema para empezar cuando hice el tablero y proporcioné el esquema actualizado. Lo que sucedió es que accidentalmente conecté Vssa a VDD y VDDA a GND, así que corté el rastro de vdd a vssa, que es lo que ves en el tablero. Vdda todavía está conectado a tierra, ¿podría ser este el problema?
@ChrisStratton Me aseguré de que todos los filetes estén bien y que no haya cortocircuitos en las líneas SWD, a punto de intentar mantener el reinicio con la línea del programador conectada, pero sí, la alineación está apenas mal pero nada significativo, todo parece estar bien en las almohadillas . ¿El problema se debe a vdda y vssa, como se mencionó en mi comentario anterior?
@TomL. No golpeé el nido de ratas cuando tomé la captura de pantalla, pero la placa tiene un plano GND superior e inferior en el que están conectados pero no se muestran en esos diagramas.
Después de leer un poco, descubrí que Vdda y Vssa son las conexiones de suministro para los RC y PLL internos y se necesita una consideración cuidadosa en esta línea, ¡así que este es probablemente el problema de comunicación! El nuevo PCB debe ordenarse con una lección difícil de aprender, pero se volvió perezoso una vez y no revisé dos veces el diseño del esquema y el tablero porque olvidé actualizar el tablero antes de ordenar ...
Debe escribir una respuesta que explique que el problema fue este error de cableado de su placa, de lo contrario, la pregunta quedará sin resolver para siempre.

Respuestas (1)

Así que descubrí cuál era el problema, cometí un error estúpido entre el esquema y la PCB, así que asegúrese de verificar siempre tres veces todo antes de enviar la placa para su fabricación. Conecté mal VDDA a GND y VSSA a VDD en el esquema y solo lo noté después de diseñar la PCB y siendo estúpido, me distraje o lo que sea y nunca actualicé la PCB después de arreglar el esquema... Las conexiones VDDA y VSSA son críticas ya que es la fuente de alimentación para los circuitos analógicos internos que consisten en el PLL interno que proporciona el reloj para el controlador (dado que no se usan osciladores externos, que es lo que hice en primer lugar). ¡Sin reloj significa que no hay comunicación con el controlador!