study를 위해 stm32wb55rgv board를 사용하며, 이 MCU의 clock source에 대해 알아본다.

1. Clock sources

  1. HSI (High-Speed Internal):
    • 내부 고속 클럭 (16MHz 고정).
    • 정확도가 낮지만 별도의 외부 크리스탈 없이도 동작 가능.
    • 주로 초기 부팅 또는 간단한 동작을 위해 사용.
  2. HSE (High-Speed External):
    • 외부 고속 클럭 (4~48MHz 크리스탈 또는 외부 오실레이터 사용).
    • 외부 크리스탈을 이용하기 때문에 안정성이 크리스탈 사양에 따라가며, 보통은 안정성이 좋다.
    • BLE 및 RF 통신과 같은 정밀도가 중요한 작업에서 사용.
    • SYSCLK으로 가장 많이 쓰는 클럭.!!
  3. MSI (Multi-Speed Internal):
    • 내부 멀티 스피드 클럭 (100kHz ~ 48MHz까지 12단계 선택 가능).
    • 내부 클럭이라 WAKE-UP 속도가 매우 빠르다.
    • 저전력 모드와 BLE 동기화를 위해 주로 사용.
  4. LSI (Low-Speed Internal):
    • 내부 저속 클럭 (32kHz 고정).
    • 저전력 모드에서 간단한 타이머 또는 RTC에 사용.
  5. LSE (Low-Speed External):
    • 외부 저속 클럭 (32.768kHz 크리스탈).
    • RTC 및 BLE 동기화에 주로 사용.

2. PLL (Phase-Locked Loop)

고속분주를 위한 장치. PLL은 여러 입력 소스(HSI, HSE, MSI)를 기반으로 주 클럭을 생성하여 코어, 주변장치, 무선 통신 등에 필요한 고속 클럭을 제공한다. 하나의 클럭소스를 입력받은 후, 곱셈/분주를 통해 고속 주파수를 출력한다.

  • 최대 코어 클럭(Cortex-M4): 64MHz
  • BLE/802.15.4 전용 무선 클럭: 32MHz

3. 저전력 모드 클럭

저전력 모드에서 클럭은 최소화되며, RTC와 같은 핵심 기능만 LSI 또는 LSE로 유지된다.

4. 클럭 트리 (Clock Tree)

 

STM32WB55RGV의 클럭 트리는 주요 코어, 주변장치, 통신 모듈 등에 필요한 클럭을 분배한다.

  • SYSCLK(System clock): 코어와 메인 시스템 클럭 (최대 64MHz)
  • 클럭 트리에서 가운데 있는 MUX를 보면, SYSCLK는 PLLRCLK, HSI16, HSEPRE/1,2 , MSI 네 개 중 하나를 SYSCLK로 선택할 수 있다. 보통은 정밀한 HSE를 많이 쓴다.
  • HCLK(High speed clock):
  • AHB(Advanced high-performance bus) 버스 및 메모리 인터페이스 클럭. 고속 클럭이 필요한 장치들이 사용한다. HCLK는 4개로 나뉘어 있으며, 1,2,4는 SYSCLK가 클럭소스이고, 5는 HSI16 or HSE/2 결국 16Mhz가 된다. HCLK3은 없다… 아무튼 많은 장치들에게 클럭소스로 입력되고, 필요에 따라 분주해서 사용할 수 있도록 설계되어 있다.
  • PCLK(Peripheral clock)1
  • APB(Advanced peripheral bus)1 버스 클럭. 고속이 필요하지 않은 장치들(I2C, UART, LPTIM, …)에 클럭을 공급한다.
  • PCLK2
  • APB2 버스 클럭. PCLK1과 같은 역할.

+ Recent posts