Understanding Microcontroller Clocks
The Ultimate Guide for Embedded Developers
>ÂÔ
Follow Mayuresh Inamdar on LinkedIn for Embedded Systems
related content
MCU Clock Configuration Guide 1
Contents
1 Introduction to MCU Clock Systems ò 2
2 Clock System Fundamentals  2
3 Clock Sources & Their Characteristics = 3
4 Power Management Strategies D 4
5 Clock Timing Calculations y 5
6 Troubleshooting Clock Issues q 6
7 Clock Configuration Best Practices ¥ 6
8 Configuration Cheat Sheet for Embedded Developers O 7
9 Final Thoughts 7
10 Resources [ 8
MCU Clock Configuration Guide 2
1 Introduction to MCU Clock Systems ò
What are MCU Clock Systems?
Clock systems are the fundamental timing mechanisms in microcontrollers that:
• Synchronise all digital operations
• Define processing speed and overall performance
• Control power consumption
• Enable precise timing for peripheral interfaces
Why Understanding Clock Configuration Matters:
• Optimises system performance
• Maximises power efficiency
• Ensures reliable operation
• Facilitates advanced functionality
2 Clock System Fundamentals Â
Basic Clock Concepts
1. Clock Frequency:
• Measured in Hz (cycles per second)
• Sets the processing speed
• Influences power consumption
• Typical ranges: 1 MHz to 200+ MHz
2. Clock Stability:
• Expressed in parts per million (ppm)
• Temperature-sensitive and critical for communication
• Directly impacts system reliability
3. Clock Distribution:
• Involves system clocks, peripheral clocks, and bus clocks (e.g., AHB, APB)
• Includes dedicated real-time clock (RTC) circuits
MCU Clock Configuration Guide 3
3 Clock Sources & Their Characteristics =
Primary Clock Sources
1. High-Speed External (HSE):
• Crystal oscillator or resonator
• Frequencies typically 4–25 MHz
• Excellent stability (±20ppm)
• Preferred for precise timing and high-speed communications
2. High-Speed Internal (HSI):
• RC oscillator circuit
• Commonly available at 8 or 16 MHz
• Moderate accuracy (±1%)
• Eliminates external component requirements
3. Low-Speed External (LSE):
• Typically a 32.768 kHz crystal
• Low power consumption and high accuracy
• Ideal for RTC and watchdog applications
4. Low-Speed Internal (LSI):
• RC oscillator in the 32–40 kHz range
• Suited for backup timing and watchdog functions
• Offers lower precision compared to external sources
5. Phase-Locked Loop (PLL):
• Frequency multiplier circuit
• Generates higher frequencies from a given source
• Provides configurable outputs at the cost of increased power consumption
Note: Other microcontrollers might use alternative names, but the underlying principles
remain similar.
MCU Clock Configuration Guide 4
4 Power Management Strategies D
Clock-Based Power Optimisation
1. Dynamic Clock Scaling:
• Adjust clock frequency based on workload demands
• Incorporate sleep modes to conserve power
• Utilise peripheral clock gating to disable unused circuits
• Configure appropriate wake-up sources
2. Sleep Mode Configurations:
• Sleep: CPU clock halted while peripherals may run
• Stop: Nearly all clocks disabled except critical ones (e.g., LSI/LSE)
• Standby: Minimal clock operation to maintain essential functions
• Consider the trade-off between wake-up time and power saving
3. Peripheral Clock Management:
• Enable clocks only when peripherals are actively used
• Optimise prescaler settings to balance speed with energy consumption
• Monitor system power consumption continuously
MCU Clock Configuration Guide 5
5 Clock Timing Calculations y
Important Timing Calculations (Generic for All Microcontrollers)
1. PLL Output Frequency:
FIN × N
FP LL =
M ×P
where:
• FIN : Input frequency from the primary source (e.g., HSE/HSI)
• N : PLL multiplication factor
• M : PLL input divider
• P : PLL output divider
2. UART Baud Rate:
FCLK
BRR =
16 × BaudRate
where:
• FCLK : Clock frequency supplied to the UART peripheral
• BaudRate: Desired communication speed
3. Timer Period:
FCLK
P eriod =
(P rescaler + 1)(P eriod + 1)
where:
• FCLK : Timer clock frequency
• Prescaler: Timer prescaler value
• Period: Auto-reload register value
MCU Clock Configuration Guide 6
6 Troubleshooting Clock Issues q
Common Clock Problems and Solutions
1. System Fails to Start:
• Symptoms: No code execution, debugger connection failure, erratic behaviour.
• Common Causes: Incorrect oscillator configuration, crystal startup failure, im-
proper PLL settings.
• Solutions: Verify hardware connections, check startup timeouts, recalculate and
validate PLL parameters.
2. Communication Issues:
• Symptoms: UART/SPI/USB errors and data corruption.
• Diagnostics: Measure actual clock frequencies, verify peripheral clock enables,
and review prescaler/divider settings.
7 Clock Configuration Best Practices ¥
Design Guidelines
1. Initialization Sequence:
• Set appropriate flash wait states
• Enable necessary power interfaces and voltage regulators
• Start oscillators with proper timeouts
• Configure PLL settings before switching to high-speed modes
• Transition between clock sources in a controlled manner
2. Error Handling:
• Implement timeout mechanisms during clock switching
• Monitor clock stability continuously
• Prepare fallback configurations for failures
• Log errors robustly for easier debugging
3. Implementation Note:
Consult your microcontroller’s reference manual for specific register settings and feature
availability.
MCU Clock Configuration Guide 7
8 Configuration Cheat Sheet for Embedded Developers
O
Microcontroller Clock Sources Frequency Range Common Peripherals
STM32 (ARM Cortex-M) HSI, HSE, LSE, PLL HSI: 16 MHz, HSE: 25 UART, SPI, I2C, ADC,
MHz, LSE: 32.768 kHz, DAC, USB, CAN, Timers
PLL: Variable
AVR (ATmega, ATtiny) Internal RC, External Internal: 1–8 MHz, USART, TWI, SPI, ADC,
Crystal External: 1–20 MHz Timer/Counter, PWM
ESP32 XTAL, PLL, APB CLK, XTAL: 40 MHz, PLL: 240 Wi-Fi, BLE, UART, SPI,
REF TICK MHz, APB CLK: 80 MHz I2C, ADC, DAC, Touch
Atmel (SAM Series) Internal RC, External Internal: 4–8 MHz, UART, TWI, SPI, ADC,
Crystal, PLL External: 32 kHz–20 MHz, USB, CAN, Ethernet
PLL: 120 MHz
TI (MSP430, Tiva C) DCO, XTAL, VLO, PLL DCO: 1–16 MHz, XTAL: UART, I2C, SPI, ADC,
25 MHz, VLO: 12 kHz, Timer, Comparator
PLL: 80 MHz
NXP (LPC, Kinetis) IRC, FRO, PLL, External IRC: 12 MHz, FRO: 48 UART, I2C, SPI, ADC,
Crystal MHz, PLL: 180 MHz USB, Ethernet, CAN
PIC (Microchip PIC32) Internal Oscillator, Internal: 4–8 MHz, UART, I2C, SPI, ADC,
External Crystal, PLL External: 4–20 MHz, PLL: Timer, DMA, USB
80 MHz
RISC-V (GD32VF103, Internal RC, External Internal: 8–16 MHz, UART, I2C, SPI, ADC,
SiFive) Crystal, PLL External: 8–25 MHz, PLL: Timer, PWM, DMA
Variable
Renesas (RX, RL78, RZ) Internal Oscillator, Main Internal: 4 MHz, Crystal: UART, I2C, SPI, ADC,
Crystal, PLL 10–20 MHz, PLL: 240 MHz Timer, RTC, DMA
9 Final Thoughts
Clock configuration is a fundamental aspect of microcontroller programming that directly
impacts system performance, power consumption, and reliability. Understanding and
properly implementing clock settings is crucial for developing robust embedded systems.
Key takeaways:
• Always consider the application requirements
• Plan for power optimisation from the start
• Implement proper error handling
• Test thoroughly under various conditions
• Document your clock configuration choices
MCU Clock Configuration Guide 8
10 Resources [
Official Documentation & References:
• STM32F1 Reference Manual - Clock Configuration Guide
• ATmega328P Complete Datasheet with Clock System Details
• MSP430x2xx Family User’s Guide - Clock System
• ESP32 Technical Reference Manual
• Renesas RX Family Clock Generation Application Note
Development Tools:
• STM32CubeMX - Clock Configuration Tool
• MPLAB Code Configurator
• ModusToolbox™ Software
Note: These resources include direct links to official documentation, datasheets, and tools
that provide detailed technical specifications and implementation guidelines. All links were
verified as of 2024.