Programando un nuevo chip STM32

Soy nuevo en STM32 y recientemente intenté hacer una placa personalizada con STM32F103RB. Pero estoy un poco confundido por los métodos disponibles para programar el chip. Digamos que uso ST-Link a través de SWD, ¿significa que no necesito grabar el gestor de arranque en el chip por mi cuenta? Es decir, ¿significa que puedo programar el flamante chip directamente con ST-Link sin ningún otro procedimiento adicional?

En caso afirmativo, ¿significa que no necesito usar los pines BOOT0 y BOOT1?

¿Qué pasa con el uso de USB a través de pines USBDP y USBDM en STM32?

¡Muchas gracias a todos!

Respuestas (1)

El gestor de arranque está en ROM, no es modificable por el usuario (es decir, no puede "grabar" un nuevo gestor de arranque). Esta nota describe las características del cargador de arranque para diferentes partes de STM32.

En todas las partes de STM32 que he usado, tira de BOOT0 a tierra para omitir el gestor de arranque y arrancar desde flash (dirección 0x0800000 en la mayoría de STM32). Con BOOT0 bajado, el estado del pin de BOOT1 no importa. Normalmente bajo BOOT0 con una resistencia de 100 kOhm en las placas que diseño en el trabajo. No lo deje flotando, no se baja internamente, por lo que sucederán cosas divertidas si no lo baja.

Puede usar ST-Link SWD para actualizar su firmware al chip y depurar el código en ejecución. Cualquier IDE que admita STM32 debería saber cómo hacer esto de manera inmediata, yo personalmente uso Ac6 porque es gratis. Como mínimo, debe conectar las líneas SWDIO, SWCLK y GND al programador, pero también debe activar NRST siempre que sea posible porque la depuración sin una línea de reinicio de hardware puede ser una verdadera molestia.

En cuanto a su última pregunta, el gestor de arranque de la serie F103 no es compatible con USB, aunque algunas otras partes (como la serie F105) sí lo son. No recomendaría la programación a través de USB a menos que tenga una razón específica para hacerlo: SWD le permitirá programar y depurar, y es mucho más fácil de hacer funcionar.

¡Muchas gracias! Tengo la impresión de que necesito quemar el cargador de arranque porque Atmega lo requiere. Entonces, solo una breve pregunta de seguimiento: si no realizo el NRST, ¿qué sucedería o cuál es el riesgo potencial?
Todavía funcionará, pero al actualizar el chip, el ST-Link no podrá forzar un reinicio al mostrar la línea NRST, por lo que se ve obligado a recurrir a un reinicio de software. Esto funciona, y he hecho tableros de esta manera cuando estaba realmente atado a los conductores, pero la depuración es mucho más confiable cuando se reinicia el hardware.
Vcc también debe estar conectado, de lo contrario, ST-Link se negaría a acceder al controlador
@berendi: preferentemente, sí, pero he falsificado un ST-Link antes conectando otro suministro de 3.3V al pin VCC. He hecho algunos tableros realmente limitados en el espacio :).
Gracias a ambos :) Una última cosa, dado que BOOT1 no importa, ¿puedo dejarlo flotando? Estoy tratando de ahorrar cada bit de espacio ya que también estoy haciendo un tablero con espacio limitado.
Sí, BOOT1 está bien para flotar.
¿Es correcto que puedo crear y depurar mi código con cualquiera de ST discovery y luego usar este código directamente para la placa personalizada?