Estoy empezando a aprender el Cortex M y vengo de un entorno de 8 bits.
Tengo mi placa de demostración, parpadeando un LED y obteniendo un proyecto de trabajo de STM32Cube.
Estoy trabajando en los registros del sistema, pero estoy un poco bloqueado sobre qué pensar sobre las velocidades de reloj para los periféricos. Esto no es realmente una consideración para ningún firmware de 8 bits que haya escrito.
Para la arquitectura ARM Cortex M0, ¿cuáles son las principales consideraciones al establecer velocidades de reloj para periféricos APB1?
Digamos que ralentizo demasiado el reloj de mi periférico, ¿qué sucede?
¿Cómo podría calcular qué velocidad quiero para los periféricos?
¿Las velocidades de los relojes periféricos representan gran parte del consumo total de energía del sistema?
Digamos que ralentizo demasiado el reloj de mi periférico, ¿qué sucede?
Habrá retraso en el acceso a los registros de esos periféricos ya que hay que esperar el bus (AHB).
¿Cómo podría calcular qué velocidad quiero para los periféricos?
La mayoría de las veces solo corren a toda velocidad. A menos que el presupuesto energético requiera lo contrario.
¿Las velocidades de los relojes periféricos representan gran parte del consumo total de energía del sistema?
Eso depende de los periféricos que haya habilitado. Algunos periféricos tienen hambre, otros no. Esto depende de su complejidad.
La hoja de datos tendrá una tabla con la clasificación uA/MHz de los periféricos .
Por ejemplo en el STM32F072:
Al observar estos números, es posible que decida que, cuando solo usa un temporizador para generar PWM de 100 Hz, poner ese bus a 1 MHz en lugar de 48 MHz que van al núcleo mismo. Y tal vez no use TIM1 o TIM2.
Sin embargo, esto afecta a todos los periféricos de ese bus. Incluyendo CAN o UART, y dependiendo de la complejidad del chip las memorias.
No hay mucho que calcular. Tendrás sysclk desde el PLL, y de ahí en adelante solo hay divisores. Encuentre el árbol de relojes en el manual de referencia y juegue con la página de relojes en STMCubeMX.
GPIO->IDR
, por ejemplo, que no se almacenan explícitamente en ningún lugar. El árbol de reloj completo es complicado, pero la mayoría de los periféricos comparten un reloj con su bus de periféricos.
lagoweb
leroy105
Eugenio Sh.
leroy105
Eugenio Sh.