MCU error extraño

0

Estoy usando un chip STM32F4 para construir un producto de dispositivo de control.

Recibimos un informe de nuestro cliente de que nuestro dispositivo no funciona correctamente después de haber estado trabajando media hora. Incluso restablecer no ayuda.

Luego llevamos el controlador a nuestro laboratorio. Intentamos reiniciar el dispositivo. No funcionó. Luego pensamos que la MCU podría destruirse e intentamos volver a grabar el programa en ella.

El dispositivo funciona correctamente.

¿Cuáles podrían ser las razones de ese fenómeno? ¿Podría ser causado por la EDS o algo así?

    
pregunta richieqianle

3 respuestas

5

Parece que estás experimentando corrupción de flash. Eso puede ocurrir con los micros que son capaces de escribir su propia memoria de programa, y esa memoria no está protegida adecuadamente.

La causa próxima podría ser ESD o EMI o un mal restablecimiento / apagado de encendido que ocasiona que el procesador funcione mal, pero el problema puede ser que su chip no está configurado para proteger su memoria.

En general, hay un rango de voltaje de la fuente de alimentación por debajo del cual no se garantiza que el chip funcione correctamente, pero no puede garantizar que no pueda escribir su propia memoria (EEPROM o flash). El chip debe ser forzado a reiniciarse en ese rango, si es necesario por un circuito externo si el BOR interno no está a la altura de la tarea.

Por lo general, al usar todas las características de hardware que proporciona el fabricante del microcontrolador (bloqueo y BOR en particular), agregar circuitos externos si es necesario y usar un micro que se haya reiniciado en una dirección no válida y mediante un diseño robusto de EMI / ESD (planos de tierra adecuados y Manteniendo el ruido en primer lugar) estos problemas pueden minimizarse. Es posible que aún consigas algunas si tienes un millón de unidades en el campo.

    
respondido por el Spehro Pefhany
4

Solíamos tener problemas de este tipo con otros microcontroladores. El problema fue rastreado hasta una programación inadecuada de los dispositivos.

Dependiendo del tipo de memoria utilizada en el microcontrolador, es posible programar parcialmente el chip y hacer que funcione normalmente durante un período de tiempo. Pero algunos cargos se filtran en algunas de las celdas porque no se siguió el procedimiento de programación adecuado.

Nuevamente, dependiendo de la memoria flash utilizada en el dispositivo, algunos dispositivos usan un programa y luego verifican el proceso donde las celdas se escriben de manera incremental. Después de que la celda verifica, se realiza un número específico de ciclos de programación para "sobreprogramar" la celda.

Este proceso se repite hasta que todas las celdas están programadas.

El problema que teníamos entonces era un algoritmo de programación inadecuado.

    
respondido por el Dwayne Reid
2

Dos causas son posibles:

  1. Brownout : la mayoría de los µC modernos tienen detección de brownout, pero es posible que no estén habilitados de forma predeterminada porque consumen algo de energía. Un apagón es un Condición donde los rieles de voltaje van abajo a los límites de operación segura. Los efectos serían aleatorios, es posible que se dañe la memoria flash.

  2. El cliente conectó un depurador al µC y cometió un error al intentar leer el programa de la memoria flash. Algunas configuraciones de depuración borran el flash como primer paso.

La ESD no es una causa probable, debería haber algún otro daño en el chip. Un análisis adicional requeriría una lectura del contenido original (no funciona) de la memoria flash.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas