9 votos

MSP430 de comunicación serial fallando en clima frío

Tengo un producto que utiliza el microprocesador MSP430, que ha sido la venta de un par de años ya. Uno de los MSP430 de puestos de trabajo es comunicar a través de async número de serie en un radio de baja potencia.

Con la aparición de este invierno, no ha sido un fracaso inaceptable tasa (varias por ciento) en la temperatura fría. La investigación ha encontrado que la comunicación serial con la radio está fallando. El generador de velocidad en baudios para el puerto serie es alimentado por SMCLK, que está dividido desde el MSP430 digitalmente-oscilador controlado (DCO).

¿Por qué es la comunicación serial en su defecto a las bajas temperaturas?

(Nota: ya he solucionado el problema y será la publicación de la respuesta pronto. Sugerencia: fue un error de software.)

9voto

AnonJr Puntos 111

Así que aquí está la respuesta:

El producto tiene un 32 kHz de cristal, y yo había codificado una rutina para ajustar el DCO frecuencia. El ajuste de frecuencia utilizado dos temporizadores, uno de ACA y uno de los 32 khz ACLK. Fue impulsado por una interrupción de captura/comparación de sistema, por lo que se podría calibrar periódicamente durante la operación.

Por desgracia, he insertado la calibración inicial en la parte equivocada de mi código de inicio, donde las interrupciones fueron desactivados. Por lo tanto, la calibración no sucedía antes de la primera utilización del puerto serie, y la inicialización se cuelgan a la espera de una respuesta en el puerto serie.

El DCO frecuencia se inicia en el calibrado de fábrica valor, que es la razón por la que estaba trabajando a temperatura ambiente.

Estas parcelas contar la historia:

En primer lugar, el DCO-curva de temperatura: alt text

Ahora la curva después de la calibración es en realidad el trabajo de: alt text

9voto

sq1020 Puntos 143

Que MSP430 estás usando? Las distintas familias han reloj diferentes estructuras y capacidades.

El DCO va a cambiar la frecuencia con la temperatura causando la USART velocidad en baudios a la deriva fuera de la especificación. El MSP tiene un sensor de temperatura (no muy precisa). Puede cambiar los valores en el DCO los registros de control para llevar el DCO de la frecuencia en el rango pero esto requeriría calibrado tablas de búsqueda que abarca el rango de temperaturas que se espera ver. Algunos de los MSP dispositivos tienen ACA tablas de calibración programado en uno de los sectores de la memoria flash en la fabricación, pero estos sólo son útiles si ellos cubren la frecuencia que desea utilizar, y no creo que ellos tienen de la temperatura de compensación de valores.

¿Usted tiene un de referencia de oscilador de cristal que se puede utilizar como una fuente de calibración? Yo siempre le diseño de un cristal de 32 khz y usar esto en el ACLK. Para velocidades de baudios de hasta 9600 esto puede ser utilizado directamente. Para mayores tasas de baudios tendrá que calibrar el DCO en contra de la ACLK de la señal. Las nuevas piezas de hardware FLL que va a hacer esto de forma automática.

5voto

BWW Puntos 302

Las bajas temperaturas causaron el DCO frecuencia para aumentar lo suficiente como para causar la UART de la velocidad en baudios a subir demasiado alto? Se midió la temperatura y, a continuación, compensado el oscilador en el software?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X