El reinicio de software / hardware de MCU a veces hace que la conversión de ADC externo de 24 bits salga mal en la serie Tiva C

Tengo un problema extraño y no pude encontrar una solución durante 1-2 meses.

En mi sistema tengo un MCU Tiva TM4C123GH6PM y un ADC externo de 24 bits (MCP3919). Mi pin PWM genera un reloj de 8MHz para el reloj principal ADC. La conversión ADC comienza automáticamente con este reloj.

Mi problema es que con el reinicio de software/hardware de MCU, mis lecturas de ADC a veces salen mal. Es como si el "valor de basura fijo" viniera de un ADC externo con comunicación SPI.

¡Solo apagar/encender el dispositivo resuelve el problema!

Como resultado, hay un problema que ocurre con el reinicio de software/hardware de MCU en tiempo de ejecución y el problema se resuelve con solo apagar/encender el dispositivo.

No sé si está relacionado con problemas de ciclo de energía. así o no.

Realmente necesito sus experiencias con este tema.

Saludos

¿Ha intentado monitorear el bus SPI con un analizador lógico para ver qué sucede cuando obtiene valores incorrectos?
¿Está utilizando el periférico PWM para generar un reloj? Ese es tu problema. Alcance esa señal en el reinicio.
Hola. Mi ganancia es 1. Solo estoy sobremuestreando. Sí, analicé el bus SPI y vi que el patrón es fijo. Como dije, restablecer MCU crea este problema. Pero es extraño que el problema no ocurra mientras se apaga/enciende el dispositivo. Es lo mismo con restablecer MCU ..
Observé el reloj PWM pero todo se ve como se esperaba.
¿Está seguro? La salida PWM flotará brevemente durante el reinicio, lo que es muy probable que altere la entrada del reloj del ADC e incluso active el bloqueo. Observe la señal del reloj durante la fase de reinicio y publique una imagen. Pruébelo con un búfer (preferiblemente disparador scmitt) entre PWM y la entrada del reloj.
¿En qué tienes configurado AMCLK?

Respuestas (2)

El hecho de que un POR lo arregle a veces me indica que algo no se está inicializando correctamente.

Sugeriría controlar la entrada /RESET del ADC con el Tiva y darle mucho tiempo antes de liberarlo de los reinicios, decenas o cientos de ms.

Hola. Creo que expliqué mal mi problema. El problema no ocurre después de reiniciar ADC. El problema está relacionado con el reinicio posterior de MCU. Hay un gran momento entre ADC Reset y MCLK
Por cierto, estoy controlando el restablecimiento de ADC con uno de los pines GPIO en MCU
Estoy de acuerdo con Spehro: específicamente, es posible que una comunicación estuviera en curso en el reinicio de MCU y terminó incorrectamente, dejando algunos valores (desconocidos) en los registros. La única forma de salir de eso es afirmar el pin de restablecimiento de ADC durante el tiempo requerido, suponiendo que no esté utilizando la interfaz de 2 cables porque un restablecimiento completo solo puede ocurrir para un POR interno o un restablecimiento completo externo (pero ese pin solo tiene esa funcionalidad en modo SPI).
Además, debe mantener el ADC en reinicio hasta que la señal del reloj esté funcionando.

Hoja de datos para ADC:

Todos los sesgos analógicos se habilitan durante un reinicio, de modo que la pieza esté completamente operativa justo después de un flanco ascendente de REINICIO, si se aplica MCLK cuando REINICIO es lógico bajo. Si no se aplica MCLK, hay un tiempo después de un restablecimiento completo en el que la conversión puede no corresponder con precisión al inicio de la estructura de entrada.

Probablemente, algo de retraso entre la aplicación de MCLK y RESET le ayudaría.

Hola. Hay un gran retraso de tiempo entre MCLK y el reinicio. Leí esta parte, pero como dije, el problema no ocurre al apagar/encender el dispositivo. Solo ocurre cuando reinicio mi MCU en tiempo de ejecución