ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • STM32 Clock
    STM32 2026. 4. 12. 01:33

    이번 글에서는 STM32에서 clock이 뭔지, 어떤 설정을 해야 올바른지에 대해 설명하려 한다.

     

    먼저 Clock은 뭘까?

    컴퓨터나 MCU에서 Clock은 1초에 일정하게 반복되는 전기적 신호이다. Clock은 Hz를 단위로 사용하는데, 주파수 역시 1초에 몇 번의 파동을 일으키는가를 나타낸다.

    예를 들어서 특정 CPU가 Clock 속도가 40Hz 가진다고 할 때, CPU는 이 박자에 맞춰 명령을 처리한다.

    1초는 40 Clock으로 이 40번의 박자에 맞춰 명령어들은 처리된다.

     

    CLock은 값이 클수록 연산 속도가 빨라 더 많은 작업을 처리할 수 있는 장점이 있지만, 값이 높아짐에 따라 CPU가 처리하는 작업량이 많아지기에 전기 소모량이 높아진다는 단점이 있다.

     

     

    여기서 한 가지 의문점이 든다. CPU의 주파수(Frequency)라고 표현하기도 하는데 Hz와 Clock을 같은 개념으로 볼 수 있을까?

    Clock의 속도를 나타내는 단위로 주파수인 Hz를 사용한다. 즉, 40Hz의 주파수라는 것은 1초에 40번의 클럭 신호가 발생한다는 것이다.


    이제부터 본격적으로 STM32cubeMX에서 clock관련 설정을 해보겠다. 

    MX에서 특정 보드나 MCU를 선택하고 Clock Configuration에 들어가면 볼 수 있는 화면이다.

     

    이 화면을 처음 볼 때 굉장히 어려워 보이는 설정 방법에 당황할 수 있지만 하나씩 알아보면 굉장히 쉬운 것들이다.

     

    먼저 다음 부분부터 보겠다.

    첫 박스에서 HSI와 HSE를 선택할 수 있는데 둘은 무슨 차이점을 가질까?

     

    HSI(High Speed Internal)

    이는 내부 고속 클럭으로, MCU에 기본으로 내장되어 기본적으로 사용할 수 있다. 또한 HSE보다 Start Up time이 빠르지만, HSE에 비해 정확하지 않다는 단점이 있다.

     

    HSE를 사용하다가 문제가 생겼을 때 HSI를 사용할 수 있다.

    온도/전압에 의해 클럭 계산에 오차가 생길 수 있다.

     

    HSE(High Speed External)

    이는 외 고속 클럭으로, "크리스털"이라는 하드웨어 부품이 필요하다.

    HSI보다 정교함을 보여주는 고속 클럭이지만, HSI와 달리 부팅 시간이 길다는 단점이 있다.

     

    오른쪽에 튀어나온 은색 부품이 크리스털이다.

     

    다음은 PLL과 PLLMul에 대해 알아보겠다. 

     

    PLL은 Phase-Locked Loop의 약자로, 간 하게 주파수를 관리해 주는 회로라고 생각할 수 있다.

    PLL회로는 기존의 clock 신호를 Mul의 수만큼 곱해서 출력해 주는 회로로, PLLMul의 값을 사용자가 원하는 만큼의 값으로 수정하여 clock신호를 얼마나 곱해서 사용할지 결정할 수 있다.

     

    왜 우리는 PLL회로를 사용하여 clock을 곱절로 사용해야 할까?

    답은 간단하다. "우리는 빠른 연산을 하는 MCU"를 좋아하기 때문이다.

     

    HSE는 4 MHz ~ 25 MHz의 주파수를 가지며 이는 STM32나 다른 MCU에서 사용하는 주파수보다 비교적 낮다

    너무 높은 주파수의 크리스털은 만들기 어렵고 비싸며, 전파 간섭을 일으키기 때문에 PLL회로를 사용하여 우리가 원하는 CPU 속도를 만들어 주는 것이다.

     

     

    좋다. 이제 SYSCLK ( = system clock)을 설정하는 방법에 대해서는 알았다. 

    하지만 우리는 각각의 부품들이 다른 clock에서 동작하기를 원한다. 왜 그럴까?

     

    정말 간단하게 우리가 사용하지 않는 부품에 계속해서 72 MHz의 신호를 준다면, MCU는 쓸모없는 곳에서 계속 전력을 소모하게 되는 것이다. 

    또한 장치마다 정해진 최대 clock이 있기 때문에 우리는 이를 지켜 clock 설정을 해주어야 한다.

    이렇게 특정 부분에서 clock을 나누어 설정할 수 있는 방법이 있는데 이를 prescaler라고 한다.

     

     

     

    해당 사진에서 APB1 Prescaler라는 박스가 보인다. 

    APB버스의 클럭을 얼마나 정할 것이냐는 의미이다.

    아까 전 보았던 Mul은 기존 clock을 곱해주는 용도였고, Prescaler는 단순하게 나눠주는 의미이다

     

    기존 clock을 9라고 할 때

    - Mul : 4

    - Prescaler : 2

    이라면, SYSCLK는 36이지만 APB의 clock은 18일 것이다.

    'STM32' 카테고리의 다른 글

    STM32 Bus Map  (0) 2026.04.12
Designed by Tistory.