¿Cómo utilizar un ST-Link externo para depurar / programar la MCU STM32F103?


16

Estoy usando STM32F103 MCU para mi propio proyecto y quiero usar el ST-Link de la placa STM32F411 Nucleo para propósitos de depuración / programación externa.

He desactivado los puentes CN2 y mi pregunta real está en los pinouts de SWO (CN2). Cómo procedo en esto es como sigue:

  • PIN 1 (de SWO) es VDD_Target
  • PIN 2 es SWCLK
  • PIN 3 es GND
  • PIN 4 es SWDIO
  • PIN 5 es NRST
  • PIN 6 es SWO

Que yo sepa, no debería usar todos estos pines anteriores. Como en, me he conectado

  • PIN 2 a PIN 37 (o PA14) en MCU
  • PIN 3 a GND
  • PIN 4 a PIN 34 (o PA13)
  • PIN 5 a PIN 7 o (RESET) en la MCU de destino.

No estoy seguro si debo conectar el pin SWO ya que está configurado como "reservado" (¿Por qué?). También estoy dando 3.3 V al pin VIN de MCU, lo que significa que no necesito conectar VDD (PIN 1 de stlink).

Consulte esta tabla que tomé de la hoja de datos oficial:

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

Aquí está la configuración general de pinout de la MCU aquí:

ingrese la descripción de la imagen aquí

He probado "casi" todo con osciloscopio y probador y todo parece estar bien. ¿Qué más me estoy perdiendo aquí? ¿Debo hacer algo con los pines BOOT0 o BOOT1?

Respuestas:


11

En primer lugar, tiene razón, si su placa ya tiene una fuente de voltaje de alimentación, no tiene que conectar el pin VDD de ST-Link.

La segunda cosa que le recomendaría es que abra el manual de referencia de la placa STM32F411 Nucleo y mire los esquemas. Especialmente la parte donde el ST-Link está conectado al controlador en la placa.

ingrese la descripción de la imagen aquí

Por ST Microelectronics, SWCLK, SWDIO, NRST y SWO (y GND, por supuesto) están conectados a la MCU de destino. El pin SWO adicional se utiliza con fines de depuración, puede acceder a los datos impresos con la printffunción a través de este pin con la utilidad ST-Link .

Printf via SWO Viewer muestra los datos de printf enviados desde el objetivo a través de SWO.

Por lo tanto, puedo recomendarle que conecte SWO también, puede ser útil más adelante. Conecte su MCU a ST-Link tal como le han conectado la MCU de Nucleo.

En cuanto a las configuraciones de arranque, hay tres opciones seleccionables, la más fácil de mantener con el flash principal y vincular Boot0 a GND, pero no conozco sus requisitos, por lo que depende de usted elegir.

ingrese la descripción de la imagen aquí


3
Si bien puede "salirse con la suya" sin conectar el pin VDD, no debe haber una fuente de alimentación, sino detectar el voltaje de alimentación del objetivo (vea cómo está conectado a una entrada analógica). Una interfaz de depuración más sofisticada podría mantener sus líneas bajas sin eso, y solo elevarlas al nivel de suministro correspondiente, admitiendo múltiples voltajes objetivo. La línea de reinicio normalmente no es necesaria (a diferencia de muchas otras implementaciones de SWD). Es clave para recuperarse de cargas malas y firmwares que deshabilitan los pines SWD, pero también se pueden manipular manualmente.
Chris Stratton

En una placa STM32F1xx, la razón principal para hacer que BOOT0 sea seleccionable externamente sería si desea utilizar el cargador de arranque ROM UART (etc.) de fábrica. En el '103 esto no es compatible con USB como lo hace en muchas de las partes posteriores de ST. Si se desea un cargador de arranque USB en el '103, debe estar en la memoria flash principal, por lo que el pin BOOT0 no es útil para eso.
Chris Stratton

Mi boot0 y boot0 se establecen en cero para asegurarse de que el programa se escriba en la memoria Flash. Aparte de eso, intentaré usar la utilidad st-link en la máquina Windows. Actualmente estoy usando Mac OS, pero no estoy seguro de si mi problema está relacionado con el sistema operativo.
baqx0r

He utilizado un ST-Link del kit de descubrimiento STM32F407 para programar un STM32F303. Simplemente conecté el conector SWD del kit (2-5 pines) a mi placa SWCLK, GND, SWDIO, NRST, SWO (tal como se hace en Discovery y Nucleo) y funcionó con la utilidad ST-Link. El pin boot0 está conectado a GND a través de una resistencia de 10k, según el manual de referencia de hardware STM32F303 .
Bence Kaulics

6

En primer lugar, gracias a todos por su contribución.

Después de dos noches de insomnio y lucha, pude averiguar el problema. El problema estaba en las conexiones de pin en mi placa personalizada: pensé que, en mi MCU, el Pin 9 (VDDA) está en cortocircuito con los PIN 24-36-48 y el Pin 8 (VSSA) con los PIN 23-35-47, Pero no es así.

Necesitaba darle otros 3.3V y GND a VDDA y VSSA y st-link comenzó a funcionar.

Método de solución : utilicé los esquemas de Maple Mini para comprender las conexiones de STM32F103. Resultó que han provocado un cortocircuito en VDDA con VDD1, VDD2 y VDD3, y VSSA con VSS1, VSS2 y VSS3. Creo que debería haber entendido esto por el nombre de VSSA, ya que no es VSS0 o VSS4.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.