HSI y MSI - Aplicaciones de dos RC OSC internos en microcontrolador

En un microcontrolador ST que estoy usando, hay dos OSC que se pueden enrutar exactamente al mismo hardware y me pregunto cuándo usaría cada uno.ingrese la descripción de la imagen aquí

Enlace a la documentación de la pieza STM32L496ZG

Extracto de la hoja de datos sobre los dos OSC -

-Oscilador RC interno de alta velocidad de 16 MHz (HSI16), ajustable por software, que puede suministrar un PLL

– Oscilador RC interno multivelocidad
(MSI), recortable por software, capaz de generar 12 frecuencias desde 100 kHz hasta 48 MHz. Cuando una fuente de reloj de 32,768 kHz está disponible en el sistema (LSE), el hardware puede recortar automáticamente la frecuencia MSI para alcanzar una precisión superior al ±0,25 %. En este modo, el MSI puede alimentar el dispositivo USB, ahorrando la necesidad de un cristal de alta velocidad (HSE) externo. El MSI puede proporcionar un PLL.

La nota de aplicación ST AN4555 explica

reloj HSI16

La señal de reloj HSI16 se genera a partir de un oscilador RC interno de 16 MHz. El oscilador HSI16 RC tiene la ventaja de proporcionar una fuente de reloj a bajo costo (sin componentes externos). También tiene un tiempo de inicio más rápido que el oscilador de cristal HSE; sin embargo, incluso con la calibración, la frecuencia es menos precisa que un oscilador de cristal externo o un resonador cerámico. La señal HSI16 también se puede utilizar como fuente de respaldo (reloj auxiliar) si falla el oscilador de cristal HSE. Consulte la sección del manual de referencia: Sistema de seguridad del reloj (CSS).

3.3 Reloj MSI
La señal del reloj MSI se genera a partir de un oscilador RC interno. Su rango de frecuencia se puede ajustar mediante software utilizando los bits MSIRANGE[3:0] en el registro de control de reloj (RCC_CR). Hay doce rangos de frecuencia disponibles: 100 kHz, 200 kHz, 400 kHz, 800 kHz, 1 MHz, 2 MHz, 4 MHz (valor predeterminado), 8 MHz, 16 MHz, 24 MHz, 32 MHz y 48 MHz. El oscilador MSI RC tiene la ventaja de proporcionar una fuente de reloj de baja potencia y bajo costo (sin componentes externos). Además, cuando se ajusta con el oscilador externo (LSE) de 32,768 kHz, el MSI puede proporcionar al dispositivo USB un reloj muy preciso que elimina la necesidad de un cristal de alta velocidad (HSE) externo.

Mi problema

Me he estado tirando de los pelos mientras STLINK LPUART agregaba un cero adicional en medio de cada byte que enviaba a la PC desde el microcontrolador. Lo atribuí al tiempo y me di cuenta de que había asignado HSI como el reloj LPUART. Cuando asigné MSI, el error desapareció. Supongo que tendré que recortar el HSI ya que debe necesitar calibración.

Pero esto me hizo preguntarme, ya que puedo usar el MSI para casi cualquier cosa, ¿por qué incluyen ambos relojes en un solo chip?

Probablemente en los detalles de la letra pequeña. A menudo, uno de ellos no se puede usar en todos los modos Vcore. O para alimentar un PLL. O se puede utilizar como alternativa cuando falla el reloj externo. Incluso si tiene un µC donde puede hacer todo esto, podría ser conveniente para aquellos que se actualizan desde µC más pequeños/antiguos donde existían estas restricciones.
Incluya el número de pieza real de STM32. Todos los STM32 no son iguales y el número de pieza al menos permitiría a las personas consultar la hoja de datos y el manual de referencia correctos. Proporcionar un enlace a esos también sería útil.
Gracias, he incluido el número de pieza en la publicación original anterior. Es el STM32L496ZG. La página 38 tiene el árbol del reloj. Para mí, parece bastante flexible solo con el MSI, así que sí, debe estar en la letra pequeña. Solo espero evitar ese "momento ahhh" dentro de 3 meses.

Respuestas (1)

HSI es mucho más preciso, aunque menos flexible.

Mirando los valores resaltados en la hoja de datos, la frecuencia de MSI se vuelve extremadamente poco confiable en los extremos inferiores de la temperatura y el rango de voltaje de suministro, mientras que HSI apenas notaría que V DD cae de 3.6V a 1.8V.

Por lo tanto, es bastante sorprendente que tuviera problemas con HSI como fuente de reloj. Agregar un poco en el medio significaría aproximadamente un 20% de desviación del reloj. Esa es una magnitud peor que la precisión teórica del HSI en el peor de los casos. Debe haber algún otro problema aún al acecho.

También vale la pena señalar que HSI16 puede ejecutarse en los modos STOP, pero MSI no.

HSI16 MSI-1 MSI-2

Gracias por la explicación clara. Volver a la mesa de dibujo para mí.
Y gracias de nuevo Ahora resolví mi otro problema que estaba relacionado con el valor de recorte de calibración HSI. El software cubeMx que estaba usando para configurar mi proyecto estaba emitiendo un valor predeterminado incorrecto, lo que provocaba que el tiempo se agotara. Fue este problema aquí. community.st.com/thread/41287-stm32l452ceu6-hsi-problema