Intentando flash STM32f030f4 (ARM, Cortex M0): ¿cuál es el cableado adecuado?

3

Obtuve los chips STM32F030F4 de la tienda, hice un pequeño adaptador de placa de prueba para este y traté de conectarme a su cargador de arranque integrado a través de USART1.

He fallado y estoy algo desconcertado por el cableado. Mi esquema actual es el siguiente:

  • pin 16 (VDD) a +3.3
  • pin 15 (GND) a GND
  • pin 1 (BOOT0) a +3.3
  • pin 4 (RESET) a GND, temporalmente
  • pin 8 (USART1_TX) al RX del cable FTDI
  • pin 9 (USART1_RX) a TX del cable FTDI

El cable que utilizo constantemente con chips NXP, así que creo que lo está usando. También proporciona +3.3 voltios y tiene LEDS para indicar la actividad de TX / RX.

He probado esta herramienta enlace después de enchufar el cable y aplicar temporalmente RESET a GND.

Mágicamente, no se pudo conectar, aunque veo parpadear el LED de actividad de TX ...

He vuelto a comprobar la hoja de datos y estoy algo desconcertado. También hay pines 17 y 18 para USART1 TX y RX. Los he probado también, pero en vano.

Otra preocupación es que creo que este chip no tiene el pin BOOT1 (muchos manuales escriben sobre conducirlo bajo). ¿Entonces supongo que no es necesario?

También pensé que puedo probar con el multímetro, ya que uno de los pines está en un estado ALTO fuerte, que debería ser TX, pero ninguno lo está. Aunque, probablemente, ¿TX se convierte en salida solo después de que se complete la detección automática de velocidad de transmisión?

¿Qué más puede estar mal? Creo que no necesito cuarzo para el esquema más simple, ¿sí? Gracias de antemano por tus sugerencias!

UPD ¡Resuelto! Parece que VDDA también debería estar conectado, de lo contrario el chip se encuentra en estado de restablecimiento. Por favor, vea mi propia respuesta a continuación para obtener más detalles.

    
pregunta Alumashka

3 respuestas

6

Por fin he encontrado lo que faltaba.

¡VDDA debe estar conectado! por ejemplo. a VDD. Creo que si el dispositivo también tiene VSSA, también debería estar conectado.

De lo contrario, el chip está en modo de restablecimiento "gracias" a la funcionalidad que controla tanto el VDD como el VDDA y simplemente no permite que el chip se inicie.

La conexión mínima es así:

  • 3.3 voltios a VDD, VDDA, BOOT0
  • GND a VSS (y VSSA si está presente)

(en este punto, puede comprobar que PA9 produce un nivel alto fuerte; parece que de inmediato se convierte en salida de TX)

  • PA9 (TX) al RX del cable (en mi caso no es necesario ningún pull-up ya que es una salida totalmente funcional)
  • PA10 (RX) al TX del cable.

Por cierto, uso el cable con niveles de 5V y está bien ya que los pines son tolerantes a 5v.

    
respondido por el Alumashka
2

No sé acerca de la serie stm32f0, pero stm32f1 tiene BOOT0 configurado a 3.3V, BOOT1 ni siquiera sabe cuál es su propósito, por lo que siempre está en la misma posición. BOOT0 tiene que ser alto cuando enciende el dispositivo, luego pasa al modo de cargador de arranque, no necesita reiniciar nuevamente, al menos asegúrese de que cuando reinicie tenga BOOT0 alto, de lo contrario comenzará con el programa. Cuando está en el modo de cargador de arranque, el XTAL no tiene importancia, tal vez usa el LSI interno.
La pregunta es: ¿por qué no utiliza la GUI oficial del gestor de arranque ST para la transferencia? ¿No crees que un gestor de arranque hecho a medida desde sourceforge no es 100% correcto?

    
respondido por el Marko Buršič
2

Comenzando desde el manual de referencia del STM32F030x4 , página 45, sección Embedded Boot Loader:

  

El gestor de arranque incorporado está ubicado en la memoria del sistema, programado   por ST durante la producción. Se utiliza para reprogramar la memoria flash.   utilizando una de las siguientes interfaces seriales:
• USART en los pines   PA14 / PA15 o PA9 / PA10
• I2C en los pines PB6 / PB7 (STM32F070xx y   Solo dispositivos STM32F030xC)
• Interfaz DFU USB (dispositivos STM32F070xx   solo)
Para obtener más información, consulte AN2606 .

Si sigue leyendo el otro documento recomendado ( AN2606 ) descubrirá que debe utilizar PA9 / PA10 porque el cargador de arranque está configurado en esos pines. (O PA14 / PA15 pero su chip debería ser un paquete TSSOP20 de 20 pines si Boot0 es pin1, por lo que no hay ningún PA15). Además, tiene razón, no se necesita un cristal externo, la MCU está sincronizada desde HSI.

Paralosrequisitosdeconexióndehardware,senecesitanresistenciasdepull-upenlaslíneasTXyRXsinoseagreganenelladodelhost.

TambiénencontraráinformaciónsobreelpinBoot0yelbitnBoot1(enesteMCUBoot1noesunpinsinounbitenelbytedeopcióndelusuario).

  

ElgestordearranqueSTM32F03xx4/6seactivaaplicandopattern2

ypattern2es:

  

Pattern2Boot0(pin)=1ynBoot1(bit)=1

LomejorseríasipudieracomprobarlaslíneasUARTconunosciloscopiooanalizadorlógico,soloparaasegurarse.Ytambiénreviseeste software y lea todos los documentos relacionados de ST.

    
respondido por el Bence Kaulics

Lea otras preguntas en las etiquetas