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.
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?
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.
PlasmaHH
Gesto de desaprobación
Hayden James Dekker