STM32 & ST-LINK - El conector SWD no funciona

1

Estoy utilizando un depurador ST-LINK / V2 (versión de firmware V2.J27.S6, actualizado) para programar mi placa de descubrimiento STM32F407G. Hasta ahora, he estado usando USB para flashear la MCU, usando la STM32 ST-LINK Utility v4.0.0.0 (controlador v4.4.0.0, st-link_cli.exe v3.0.0.0, todos deberían estar actualizados) -fecha). Ahora nos estamos deshaciendo de la placa de descubrimiento y necesitamos actualizar la MCU mediante la interfaz SWD. Sin embargo, encontré algún comportamiento que es inconsistente con el manual del depurador ST-LINK / V2 ( UM1075 ).

La conexión de los pines según el manual es

JTAG (en el depurador ST-LINK) - SWD (CN2 en la placa STM32)

  • 1 - 1 (MCU VDD)
  • 5 - 2 (GND)
  • 7 - 3 (SWDIO)
  • 9 - 4 (SWDCLK)

Sin embargo, en esta configuración me sale el error

  

No se puede conectar al objetivo

Se lee el archivo de registro

  

Se detectó un dispositivo ST-Link / V2
  Voltaje objetivo detectado: 0.722835
  Error al obtener el IDCODE de destino: si SWD, verifique la conexión SWD
  Error (4) al inicializar ST-Link en modo SWD

Este error también lo encontré en esta pregunta pero no hay una respuesta satisfactoria. Creo que esencialmente significa que no detecta el voltaje VDD en la placa STM32 (aunque está alimentado con 3V).

Logré resolver el problema conectando directamente los pines de la siguiente manera:

  • JTAG 1 - P1 VDD
  • JTAG 5 - P1 GND
  • JTAG 7 - P2 PA13
  • JTAG 9 - P2 PA15

Y ahora todo funciona bien, puedo flashear la placa como solía hacerlo con USB.

Encontré preguntas similares aquí y aquí pero ninguno de ellos ayudado.

Curiosamente, ambos tipos de comportamiento no dependen de las posiciones del puente ST-LINK CN3 en la placa STM32. (¿Por qué no?)

¿Por qué no puedo usar el conector SWD? ¿Por qué el ST-LINK / V2 no detecta el voltaje VDD?

Editar

Se encontró que R2 no está instalado (vea el esquema SWD pág. 27 de STM32F407G manual de la placa de descubrimiento ). Había sospechado que encajar esto con una resistencia de 100R resolvería el problema pero no hizo ninguna diferencia.

    
pregunta Quasilattice

2 respuestas

3

El conector SWD en una placa Discovery (CN2) no es para la programación de la MCU de destino en la placa.

Más bien, es para permitir que el ST-LINK a bordo se utilice para programar un objetivo externo.

Si desea programar el objetivo a bordo con un programador diferente, deberá estudiar los esquemas, encontrar todas las señales relevantes y asegurarse de que el programador a bordo no esté cargando las líneas, lo que suena sobre lo que hizo al recoger los pines SWD de sus posiciones de ruptura de GPIO.

Al mirar los esquemas, parece que con los puentes CN3 eliminados, el Target SWCLK debería estar disponible en CN3-2 y su SWDIO en CN3-4. Pero los pines 1 y 3 de ese conector no están conectados a tierra, sino que son las versiones del programador a bordo de estas señales que llegan a las posiciones de los puentes.

    
respondido por el Chris Stratton
0

EDIT

Para usar el descubrimiento stm32f4 como un depurador stlink

Hay un conector SWD en la placa de descubrimiento stm32f4.

pin 1 vref (vcc), pin 2 swdclk, pin3 ground, pin 4 swdio (CN2)

y retire los puentes CN3.

Para acceder al destino con algún otro depurador SWD

Retire los puentes CN3 y el pin 2 es swdclk, el pin 4 es swdio. Necesitará una conexión a tierra y generalmente una referencia de voltaje (de modo que el depurador que está utilizando sepa si se trata de un 1.8v o 3.3v o 5v u otro, básicamente para alimentar el IO en el depurador), que puede tomar del extremo del depurador stlink o el extremo objetivo, lo que sea que elija un 3.xV y una base.

O simplemente haga lo que está haciendo y retire los puentes en el extremo del depurador y acceda a los pines swd directamente (PA13 / 15).

Toda esta información está disponible en la documentación de ST para la pizarra. No necesariamente usan los nombres SWDIO / SWDCLk en todas partes.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas