La placa STM32F407VG no arranca

-1

Tengo un STM32F407VG en mi tablero. Soy capaz de llevarlo al modo dfu. Entonces puedo flashearlo usando DfuSe, que también reconoce correctamente el dispositivo dfu ( enlace ) o usando el dfu-util para Linux. Ambos informes han completado con éxito la descarga.

Todo mi comando es:

dfu-util -d 0x0483:0xdf11 -c 1 -i 0 -a0 -s 0x08000000 -D my.bin

con esos:

-d --device vendor:product  Specify Vendor/Product ID of DFU device

-p --path bus-port. ... .port   Specify path to DFU device

-c --cfg config_nr      Specify the Configuration of DFU device

-i --intf intf_nr       Specify the DFU Interface number

-a --alt alt            Specify the Altsetting of the DFU Interface

-s --dfuse-address address  ST DfuSe mode, specify target address for raw
                            file download or upload. Not applicable for
                            DfuSe file (.dfu) downloads

Ahora cuando enciendo mi STM32, no parece arrancar en absoluto. El oscilador RTC no se ejecuta, los LED que deberían parpadear instantáneamente no parpadean. Y lo más importante (ya que todos esos podrían fallar debido a un mal software): DfuSe no reconoce el STM32 en el modo de aplicación. ¿Alguien tiene una idea de lo que podría estar mal y no permite que el STM32 arranque normalmente?

Gracias y saludos, Noah

    
pregunta Yatekii

2 respuestas

0

Lo que me solucionó esto fue compilar la fuente de la MCU correcta. De alguna manera logré probar y flashear un binario compilado para la MCU incorrecta. Lo siento por eso.

    
respondido por el Yatekii
1

Suponiendo que estás en el punto donde:

  • está utilizando una imagen de firmware precompilada que ha funcionado para otros con este diseño de PCB exacto y el número de pieza de MCU exacto en el pasado, por lo que se descartan todos los problemas de la cadena de herramientas / enlazador / etc
  • el cargador de arranque USB se enumera en su máquina host (computadora de desarrollo)
  • ha confirmado la suma de comprobación de su imagen de firmware contra una buena copia conocida
  • se rellena todo el PCB (alias, todas las partes están soldadas)
  • el circuito básico de energía está funcionando hasta cierto punto (también conocido como, todos los rieles de voltaje y reguladores están dentro de los rangos aceptables)
  • La MCU se enciende, el regulador de voltaje lógico interno se está ejecutando
  • todos los interruptores, botones, mandos, fusibles, enchufes, enchufes, bandejas, etc. están en posición vertical y vertical para el despegue
  • ha inspeccionado visualmente todas las soldaduras de sus manos con un microscopio para detectar cortocircuitos y juntas malas

... entonces, los problemas comunes que surgen con los STM32 en esta etapa podrían ser:

Los pines de reinicio y arranque (BOOT0 / BOOT1) no se están jalando correctamente en el momento adecuado. Intente sondear estas líneas para asegurarse de que estén configuradas correctamente, y no simplemente flotando. Tenga en cuenta que el reinicio debe tirarse hacia abajo con un drenaje abierto, no empujar y jalar algunos (¿todos?) Chips STM32F4 (este es un punto de diseño de hardware). Si existe algún tipo de lógica que maneje estos pines, capture una traza del osciloscopio y verifique con la hoja de datos para asegurarse de que estén en los niveles correctos en los momentos correctos.

assert() failure muy temprano en el código de inicio . Por ejemplo, durante el reloj y las rutinas de inicialización de NVIC o la configuración del tiempo de ejecución, se evita que main() sea invocado. Intente una configuración más sencilla, por ejemplo, utilizando los relojes internos de baja velocidad.

Fuente de alimentación defectuosa , por ejemplo, un apagón cuando algún chip externo está habilitado. Alcance los rieles de alimentación eléctrica con un osciloscopio correctamente conectado a tierra durante los primeros dos docenas de microsegundos para asegurarse de que todos los voltajes sean razonablemente estables cuando el chip está tratando de encenderse. Si se trata de un dispositivo alimentado por USB, intente utilizar una fuente de alimentación de banco o batería.

Configuración de NVIC (interrupción) o RCC (reloj) defectuosa o fuera de especificación en el firmware. Verifique todas las letras pequeñas en la hoja de datos sobre los límites de frecuencia PLL intermedios y otros. La configuración fuera de especificación puede funcionar con algunos chips del mismo modelo pero no con otros debido a las tolerancias de fabricación.

El LED de montaje en superficie parpadeante se rellena hacia atrás. También ocurre a veces con osciladores. En este caso particular, parece que tienes otros signos de falla, pero intenta alternar tantos GPIO como sea posible en tu código y prueba para verificar.

Los bits de flash internos de "configuración de usuario" de alguna manera se han configurado incorrectamente , revise la nota de aplicación especial sobre esto.

De alguna manera, ha llenado el microcontrolador equivocado, verifique las marcas del paquete en caso de que haya algún problema en la cadena logística en alguna parte.

Hay erratas para este silicio o lote, consultar el sitio web de ST.

Habiendo dicho todo esto, si está haciendo una presentación de placa en hardware soldado a mano sin un depurador, básicamente apuñala en la oscuridad con una linterna de un bit en una biblioteca infinita con miles de bytes de configuración Registros y cientos de páginas de documentación de referencia. Espero que te estés divirtiendo!

    
respondido por el bnewbold

Lea otras preguntas en las etiquetas