No se puede programar una placa STM32 personalizada

9

He diseñado una placa STM32 simple. A continuación se muestran las imágenes de diseño esquemático y de pcb:

Esquemático:
ingrese la descripción de la imagen aquí

Diseño de PCB: ingrese la descripción de la imagen aquí

Diseño de PCB con VDD resaltado: ingrese la descripción de la imagen aquí

Diseño de PCB con GND resaltado: ingrese la descripción de la imagen aquí

Solo las partes de este diseño que son relevantes para mi pregunta se muestran en las imágenes de arriba.

Mi problema es: intenté usar el ST-Link incorporado de una placa de descubrimiento STM32 para programar esta placa personalizada, pero aún no tuve éxito. La aplicación ST-Link Utility en PC puede reconocer al programador, pero no puede detectar el MCU objetivo. Los mensajes de error que recibí fueron: "Destino no conectado" y "Error de comunicación USB ST-Link".

Aquí hay algunos datos relacionados sobre mi problema:

  • La placa de descubrimiento STM32 funciona bien: puedo usar su ST-Link incorporado para programar su MCU STM32 integrada. Esto esta bien.
  • La MCU STM32 se ha soldado con la orientación correcta en la placa personalizada. Lo revisé dos veces.
  • He comprobado las trazas de VDD y SWD. Están bien conectados (sin problemas de soldadura). Pin Boot0 está a 0V. El pin NRST está a 3.3V.
  • El cable SWD es corto, solo 7-8 cm de longitud.
  • El STM32 en mi placa personalizada es del mismo tipo que el de la placa Discovery.
  • He seguido las instrucciones en el manual de la placa de descubrimiento STM32 sobre cómo usar la placa de descubrimiento para programar una MCU STM32 externa. Para ser más específico, eliminé los 2 puentes CN3, y luego conecté las placas como en esta tabla: ingrese la descripción de la imagen aquí

  • También eliminé el puente de soldadura SB11 en el Discovery Board (para que el pin NRST pueda funcionar correctamente).

  • He probado la aplicación ST-Link Utility y Keil. Los mensajes de error que recibí son los mismos.
  • Al principio no conecté el pin 6 en la tabla anterior (SWO) porque, que yo sepa, no es necesario. Sin embargo, después de eso también lo conecté, pero las cosas aún no funcionaron.
  • También agregué una tapa de 100nF del pin NRST a GND, y luego una resistencia pull-up de 100k de este pin a VDD. El problema aún persiste.
  • También he tratado de usar el modo "conectar en restablecimiento" del programa de utilidad ST-Link. Sin suerte tampoco.

Sospecho que puede haber algo mal con el diseño, pero no estoy seguro. Por favor ayudame a resolver el problema.

Muchas gracias :)

usuario3286500
fuente
Hasta donde recuerdo, tienes que alimentar tanto el st-link como tu placa personalizada. El 3.3V en el conector SWD de su placa personalizada tiene que proporcionar los 3.3V para que el st-link lo detecte.
davidrojas
@davidrojas: Gracias por tu respuesta. Bueno, actualmente enciendo mi ST-Link por el puerto USB desde mi PC. La placa STM32 personalizada está alimentada por un 3.3V externo e independiente. Sin embargo, la tierra de estas 2 placas ya está conectada (como en la tabla anterior). Además, el 3.3V de mi placa personalizada también está conectado a VDD_TARGET en el ST-Link. ¿Crees que esto es suficiente?
user3286500
Debería ser suficiente, sí. Otro problema podría ser la longitud y el diseño de las líneas SWDIO y SWCLK, he tenido problemas de conexión intermitente en el pasado debido a esto. Tienen que ser lo más cortos posible. Intente reducir la velocidad del SWD también.
davidrojas
He bajado la velocidad de SWD, desde el valor predeterminado de 1.8 MHz a menos de 400 kHz, pero aún no he tenido éxito. En cuanto a la longitud del cable, en mi configuración, la longitud total de la conexión SWD (desde ST-Link al STM32 objetivo) es de aproximadamente 12-13 cm. ¿Esto todavía está dentro del límite?
user3286500
1
¿Notó que la conexión a tierra debajo del chip está aislada físicamente y no está realmente conectada a ninguno de los pines de conexión a tierra? Las conexiones reales entre los pines de tierra siguen caminos tortuosos fuera del chip, y algunos de ellos podrían estar aislados. Debe ajustar sus espacios libres para que el vertido de tierra no tenga islas aisladas, y esto ayudará a asegurarse de que todos los pines de tierra del chip estén mucho más cerca del mismo potencial.
Dave Tweed

Respuestas:

5

Gracias por tus buenos comentarios. Gracias a ellos, he confiado en que mi diseño está libre de errores. Es por eso que concentré mi atención en buscar errores en el hardware. Y encontré el error! Este es un error de soldadura.

Encontré este error después de seguir estas instrucciones: "Use un multímetro y pruebe todas las conexiones en busca de cortocircuitos o falta de conexión. Recuerde tocar los pines / almohadillas / lo que sea realmente suavemente, porque si presiona la sonda con fuerza, puede" arreglar "la conexión temporalmente (por ejemplo, empuja el pin de IC a la traza en PCB y la prueba está bien, pero tan pronto como suelta el pin se dobla de nuevo)". La publicación original está aquí .

usuario3286500
fuente