Tengo chips STM32F030F4 de la tienda, hice un pequeño adaptador de placa de prueba para él e intenté conectarme a su cargador de arranque incorporado a través de USART1.
He fallado y estoy un poco desconcertado con el cableado. Mi esquema actual es el siguiente:
El cable lo uso 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.
Probé esta herramienta http://sourceforge.net/projects/bootstm32/ después de conectar el cable y aplicar temporalmente RESET a GND.
Mágicamente, no se pudo conectar, aunque veo parpadear el LED de actividad 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. Yo también los he probado pero sin éxito.
Otra preocupación es que creo que este chip no tiene el pin BOOT1 (muchos manuales escriben sobre cómo reducirlo). ¿Entonces supongo que no es necesario?
También pensé que podía probar con un multímetro si uno de los pines está en un estado ALTO fuerte, que debería ser TX, pero ninguno lo está. ¿Aunque probablemente TX se convierta en salida solo después de que se complete la detección automática de velocidad en baudios?
¿Qué más puede estar mal? Creo que no necesito cuarzo para el esquema más simple, ¿sí? ¡Gracias de antemano por tus consejos!
UPD Resuelto! Parecía que VDDA también debería estar conectado; de lo contrario, el chip está en estado de reinicio. Consulte mi propia respuesta a continuación para obtener más detalles.
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 reinicio "gracias" a la funcionalidad que monitorea tanto VDD como VDDA y simplemente no permite que el chip se inicie.
Así que la conexión mínima es así:
(En este punto, puede verificar que PA9 produce un alto nivel fuerte; parece que se convierte de inmediato en salida TX)
Por cierto, uso el cable con niveles de 5V y está bien ya que los pines son tolerantes a 5V.
A partir del manual de referencia del STM32F030x4 , página 45, sección Embedded Boot Loader:
El cargador de arranque incorporado se encuentra 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 (solo dispositivos STM32F070xx y STM32F030xC)
• Interfaz USB DFU (solo dispositivos STM32F070xx)
Para obtener más detalles, consulte AN2606 .
Si sigue leyendo el otro documento recomendado ( AN2606 ), descubrirá que debe optar por PA9/PA10 porque el gestor de arranque está configurado en esos pines. (O PA14/PA15, pero su chip debe 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.
Para los requisitos de conexión de hardware, se necesitan resistencias pull-up en las líneas TX y RX si no se agregan en el lado del host.
También encontrará información sobre el pin Boot0 y el bit nBoot1 (en este MCU, Boot1 no es un pin sino un bit en el byte de opción de usuario).
El gestor de arranque STM32F03xx4/6 se activa aplicando el patrón 2
y patrón2 es:
Patrón2 Boot0 (pin) = 1 y nBoot1 (bit) = 1
Lo mejor sería si pudiera verificar las líneas UART con un osciloscopio o un analizador lógico, solo para asegurarse. Y verifique este software también y lea todos los documentos relacionados de ST.
No sé acerca de la serie stm32f0, pero stm32f1 tiene BOOT0 configurado en 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 estar 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 modo cargador de arranque, el XTAL no tiene importancia, quizás use el LSI interno.
La pregunta es: ¿por qué no utiliza la GUI oficial del cargador de arranque ST para la transferencia? ¿No crees que algún cargador de arranque personalizado de sourceforge no está 100% bien?
JiriB
Kei