Módulo de reloj en MSP430 (Unified Clock System)

LaunchPad MSP430

El módulo de reloj del MSP430 (o como lo llama TI, Unified Clock System) es muy versátil, y es el responsable de la gran capacidad de este microcontrolador para ser uno de los mejores en lo que a bajo consumo se refiere. Vamos a hacer un repaso general de este módulo centrándonos en las partes más relevantes ya que, por sí sólo, este módulo daría para escribir un libro en exclusiva.

A vista de pájaro, tal y como observamos en el esquema anterior, podemos distinguir las siguientes señales:

  • Dos entradas (XIN y XT2IN) y dos salidas (XOUT y XT2OUT) que permiten conectar dos osciladores externos. Podríamos conectar tanto un cristal de cuarzo (con sus correspondientes condensadores) o una fuente de reloj externa.
  • Una señal de reloj llamada MCLK, que es la señal de reloj que utiliza  la CPU.
  • Otras dos señales de reloj ACLK y SMCLK, que utilizan los periféricos y la memoria flash.

En el siguiente esquema vemos el esquemático del módulo de reloj en más detalle.

Esquema reloj MSP430 (Unified Clock System)

Hay tres bloques principales, Por un lado, dentro del rectángulo verde tenemos las fuentes de reloj. Son las fuentes desde las que pueden alimentarse los tres relojes que ya hemos nombrado (MCLK, ACLK y SMCLK).

En el rectángulo amarillo está la lógica de selección (en realidad, parte de los multiplexores del rectángulo azul también pertenecen a esta sección), que permite conectar las fuentes de reloj a los tres relojes del sistema.

Por último, dentro del rectángulo azul están los relojes propiamente dichos. Además de los tres que ya hemos nombrado hay otro (MODCLK) que se utiliza en el conversor analógico-digital y que no vamos a tratar en este artículo.

Fuentes de reloj

Empezamos por las fuentes de reloj, que como vemos, está dividida en tres bloques.

  • El bloque OSC, que es donde se conecta la fuente de reloj externa XT1, que puede ser de alta frecuencia y de baja frecuencia (en el MSP430F5529 sólo puede ser de baja frecuencia).
  • El bloque FLL, que provee una fuente de reloj interna que puede estabilizarse usando una señal de reloj de referencia.
  • El bloque XT2 que permite obtener una fuente de reloj externa de alta frecuencia (no todos los modelos la tienen).

Como ya se ha dicho, es posible seleccionar qué fuente de reloj se conecta a las señales de reloj del sistema (recuadro azul). De esta forma, se puede ajustar de forma independiente qué frecuencia de reloj usará la CPU y los periféricos. Incluso podremos desconectar la CPU, los periféricos o ambos. Como veremos en un próximo artículo esta es la base de las configuraciones de bajo consumo.

Bloque OSC

Esta fuente de reloj está alimentada por un cristal o por una fuente de reloj externa conectada a los puertos XIN y OUT. Este bloque permite generar tres fuentes de reloj.

  • XT1CLK: Se pueden usar osciladores, cristales, o fuentes de reloj de baja frecuencia a 32768Hz o de alta frecuencia (entre 4Mhz y 32Mhz). En la placa que estamos usando para los ejemplos no se soporta el uso de señales de alta frecuencia (sólo de baja frecuencia).
  • VLOCLK: Oscilador interno de baja frecuencia (10Khz) y bajo consumo.
  • REFOCLK: Oscilador interno de baja frecuencia (32768Hz) que puede ser usado como referencia en el bloque FLL.

Podemos configurar esta fuente de reloj con los bits XT1BYPASS, XTS, XCAP y XT1DRIVE de los registros UCSCTL6 y UCSCTL7 (ver guía de usuario del MSP430 para más detalles).

Bloque XT2

Esta fuente de reloj también utiliza un cristal, un oscilador o una fuente de reloj externa. En este caso, sólo permite fuentes de alta frecuencia (4Mhz a 32Mhz). Genera una fuente de reloj llamada XT2CLK. La configuración de este bloque se lleva a cabo mediante los bits XT2BYPASS, XT2OFF y XT2DRIVE de los registros UCSCTL6 y UCSCTL7. Esta fuente de reloj se puede usar como referencia en el bloque FLL.

La descripción de los campos del registro UCSCTL6 es la siguiente.

Registro UCSCTL6_1

Registro UCSCTL6_2

Registro UCSCTL6_3

En cuanto al registro UCSCTL7, disponemos de los siguientes campos para controlar los bloques OSC y XT2.

Registro UCSCTL7_1

Registro UCSCTL7_2

 

Bloque FLL

Este bloque genera dos fuentes de reloj: DCOCLK y DCOCLKDIV. Se diferencian en que la segunda puede ser escalada mediante un divisor de frecuencia en el que se puede dividir la frecuencia entre 1, 2, 4, 8, 16 ó 32. Se trata de un oscilador interno controlado digitalmente. Esto quiere decir que puede ser estabilizado por el bloque FLL usando una señal de reloj externa que sea estable. La fuente DCOCLK puede ser configurada mediante los registros UCSCTL0 y UCSCTL1. El bloque FLL se puede configurar mediante los registros UCSCTL2 y UCSCTL3.

La descripción de los campos de los registros UCSCTL0 y UCSCTL1 que permiten configurar la fuente DCOCLK es la siguiente.

Registro UCSCTL0

Registro UCSCTL1

Mediante los registros UCSCTL2 y UCSCTL3 configuramos el bloque FLL.

Registro UCSCTL2

 

Registro UCSCTL3

Para establecer la frecuencia a la que funciona el oscilador DCO podemos modificar los valores de los bits DCORSELx, DCOx y MODx basandonos en la siguiente tabla

Frecuencias DCO

 

Señales de reloj

A partir de las fuentes de reloj que acabamos de ver, se generan las señales de reloj que gobiernan el microcontrolador.

ACLK (Auxiliary clock)

Esta señal es utilizada por los periféricos internos del microcontrolador, como los buses serie (I2C, SPI o UART), los timers, etc. Las fuentes de reloj que puede utilizar son XT1CLK, VLOCLK, REFOCLK, DCOCLK, DCOCLKDIV y XT2CLK. Mediante los bits SELA del registro UCSCTL4 podemos seleccionar la fuente y con los bits DIVPA y DIVA de UCSCTL5 podemos dividir la frecuencia del reloj entre 2, 4, 8, 16 y 32. (ver descripción de los registros UCSCTL4 y UCSCTL5 más abajo). Este reloj puede desactivarse activando el bit OSCOFF .

Al iniciar el microcontrolador (hablamos del MSP430F5529), la fuente de reloj de ACLK es XT1, a una frecuencia de 32768Hz.

MCLK (Master clock)

Es el reloj utilizado por la CPU. Mediante los bits SELM del registro UCSCTL4 podemos seleccionar la fuente y con los bits DIVM de UCSCTL5 podemos dividir la frecuencia del reloj entre 2, 4, 8, 16 y 32. Este reloj puede desactivarse activando el bit CPUOFF del registro de estado.

Al iniciar el microcontrolador, la fuente de reloj de MCLK es DCOCLKDIV, a una frecuencia de 1048576Hz.

SMCLK (Submain clock)

Es usado por la memoria flash. Las fuentes de reloj que puede utilizar son XT1CLK, VLOCLK, REFOCLK, DCOCLK, DCOCLKDIV y XT2CLK. Mediante los bits SELS del registro UCSCTL4 podemos seleccionar la fuente y con los bits DIVS de UCSCTL5 podemos dividir la frecuencia del reloj entre 2, 4, 8, 16 y 32. Este reloj puede desactivarse activando el bit SMCLKOFF del registro UCSCTL6.

Al iniciar el microcontrolador, la fuente de reloj de SMCLK es DCOCLKDIV, a una frecuencia de 1048576Hz.

 

Registro UCSCTL4_1

Registro UCSCTL4_2

 

Registro UCSCTL5_1

Registro UCSCTL5_2

Registro UCSCTL5_3

En el próximo artículo utilizaremos este módulo de reloj junto a los timers para generar eventos basados en tiempo y analizaremos un ejemplo de uso.

CompartirShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Sé el primero en comentar en "Módulo de reloj en MSP430 (Unified Clock System)"

Deja un comentario.

Tu dirección de correo no será publicada.


*