Estoy usando un depurador ST-LINK/V2 (versión de firmware V2.J27.S6, actualizada) para programar mi placa de descubrimiento STM32F407G. Hasta ahora, he estado usando USB para flashear la MCU, usando STM32 ST-LINK Utility v4.0.0.0 (controlador v4.4.0.0, st-link_cli.exe v3.0.0.0, debería estar todo actualizado). -fecha). Ahora nos estamos deshaciendo de la placa de descubrimiento y necesitamos flashear la MCU usando la interfaz SWD. Sin embargo, encontré un comportamiento que es inconsistente con el manual del depurador ST-LINK/V2 ( UM1075 ).
La conexión de pines según el manual es
JTAG (en el depurador ST-LINK) - SWD (CN2 en la placa STM32)
Sin embargo, en esta configuración me sale el error
¡No se puede conectar con el objetivo!
El archivo de registro lee
Dispositivo ST-Link/V2 detectado
Voltaje objetivo detectado: 0.722835
Error al obtener el IDCODE objetivo: 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 tuve una respuesta satisfactoria. Creo que esencialmente significa que no detecta el voltaje VDD en la placa STM32 (aunque se alimenta con 3V).
Logré resolver el problema conectando directamente los pines de la siguiente manera:
Y ahora todo funciona bien, puedo flashear la placa como solía hacerlo con USB.
Encontré preguntas similares aquí y aquí , pero ninguna me ayudó.
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é ST-LINK/V2 no detecta el voltaje VDD?
Editar
Se descubrió que R2 no está instalado (consulte el esquema SWD en la página 27 del manual de la placa de descubrimiento STM32F407G ). Sospeché que colocar esto con una resistencia 100R resolvería el problema, pero no hizo ninguna diferencia.
El conector SWD en una placa Discovery (CN2) no es para programar la MCU de destino integrada.
Más bien, es para permitir que el ST-LINK incorporado se use para programar un objetivo externo.
Si desea programar el objetivo incorporado con un programador diferente, deberá estudiar los esquemas, encontrar todas las señales relevantes y asegurarse de que el programador incorporado no esté cargando las líneas, lo que parece tratarse de lo que desea. hizo al recoger los pines SWD de sus posiciones de ruptura GPIO.
Al observar los esquemas, parece que con los puentes CN3 eliminados, el SWCLK de destino debería estar disponible en CN3-2 y su SWDIO en CN3-4. Pero los pines 1 y 3 de ese conector no son de alimentación y tierra, sino que son las versiones del programador integrado de estas señales que llegan a las posiciones de los puentes.
EDITAR
Para usar el descubrimiento stm32f4 como un depurador de stlink
Hay un conector SWD en la placa de descubrimiento stm32f4.
pin 1 vref (vcc), pin 2 swdclk, pin3 tierra, 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, en general, una referencia de voltaje (para que el depurador que está utilizando sepa si se trata de 1.8v o 3.3v o 5v u otro, básicamente para alimentar el IO en el depurador) que puede tomar desde el final del depurador stlink o el extremo del objetivo, lo que sea, elija un 3.xV y tierra.
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 ST de la placa. No utilizan necesariamente los nombres SWDIO/SWDCLk en todas partes.
tony k
tony k
Quasilattic
viejo contador de tiempo
chris stratton