본문 바로가기
전자공학

57. 크리스탈

by tblog-world-info 2025. 3. 6.

MCU에서 오실레이터와 크리스탈을 사용하는 이유 및 내부 주파수 구조의 동작 원리

57. 크리스탈

1. MCU에서 오실레이터와 크리스탈이 필요한 이유

 

마이크로컨트롤러(MCU)는 정밀한 시간 관리를 위해 클럭 신호가 필요합니다. 이 클럭 신호는 MCU 내부의 명령어 실행, 타이머, PWM, ADC 변환 속도 등을 결정하는 핵심 요소입니다.

하지만 MCU 자체는 자연적으로 클럭 신호를 생성할 수 없기 때문에 외부에서 주파수를 제공해야 합니다.

이를 위해 오실레이터(Oscillator)나 크리스탈(Crystal)를 사용하여 MCU가 안정적인 클럭을 얻도록 합니다.

 

MCU의 클럭 신호가 중요한 이유

연산 속도 결정: CPU의 동작 속도는 클럭 속도에 의해 결정됩니다.

타이머 및 인터럽트 동작: 주파수가 일정해야 정확한 타이밍이 보장됩니다.

통신 인터페이스 유지: UART, SPI, I2C 등에서 일정한 속도를 유지해야 합니다.

ADC 변환 안정성: ADC 변환 주파수가 일정하지 않으면 측정값이 정확하지 않을 수 있습니다.

 

 

2. 오실레이터(Oscillator)와 크리스탈(Crystal)의 차이점

오실레이터와 크리스탈은 MCU에 클럭 신호를 제공하지만, 방식이 다릅니다.

구분 오실레이터(Oscillator) 크리스탈(Crystal)
구성 요소 발진회로(내장) + 수정 진동자 단순 수정 진동자
출력 신호 정확한 사각파 신호 제공 단순한 주파수 진동 제공
MCU 연결 방식 직접 클럭 입력 핀에 연결 MCU 내부 발진 회로와 연결하여 사용
정확도 매우 정밀, 안정적 크리스탈보다 정확도가 낮을 수 있음
가격 상대적으로 고가 저렴
사용 예시 고속 MCU, 정밀한 타이밍이 필요한 시스템 일반적인 MCU, 저전력 장치

 

 

3. MCU의 내부 클럭 동작 원리

MCU 내부에서 클럭이 생성되는 과정은 다음과 같습니다.

  - 외부 클럭 신호 입력 (크리스탈 또는 오실레이터)

   크리스탈을 연결하면 MCU 내부의 발진 회로에서 주파수를 증폭 및 변형하여 사용합니다.

   오실레이터는 자체 발진 회로가 있어 MCU가 바로 사용할 수 있는 클럭 신호를 제공합니다.

 

  - 주파수 체배 (PLL - Phase Locked Loop)

    MCU는 단순히 입력된 클럭을 그대로 사용하지 않고PLL(위상고정루프, Phase-Locked Loop)를 이용하여

   주파수를 높입니다.

    예를 들어 16MHz 크리스탈을 연결하면 내부적으로 64MHz, 96MHz, 120MHz 등으로 증폭하여 사용할 수 있습니다.

 

  - 주파수 분주 (Prescaler)

   일부 시스템에서는 높은 클럭을 필요하지 않기 때문에 원하는 속도로 클럭을 분주하여 사용할 수 있습니다.

   예를 들어 120MHz 클럭을 60MHz, 30MHz, 15MHz로 나누어 사용 가능합니다.

 - 내부 클럭 소스 선택 (FLL 또는 RC 오실레이터)

   일부 MCU는 외부 크리스탈 없이도 내부 RC 오실레이터를 사용하여 클럭을 생성할 수 있습니다.

   하지만 정확도가 떨어지므로 정밀한 작업이 필요한 경우 외부 크리스탈을 연결하는 것이 일반적입니다.

 

 

4. PLL(위상고정루프, Phase Locked Loop) - 주파수 체배 원리

- PLL이란?

MCU의 내부 클럭을 빠르게 만들기 위해 PLL(Phase Locked Loop)을 사용합니다.

예를 들어 16MHz 크리스탈을 연결하면 PLL 8배 증폭하여 128MHz의 시스템 클럭으로 사용할 수 있습니다.

 - PLL의 주요 역할

  낮은 주파수를 높은 주파수로 증폭

  발진기의 주파수를 자동으로 보정

  통신 속도 및 연산 성능 최적화

 

 

5. MCU의 내부 클럭 구조

MCU 내부에는 여러 개의 클럭 소스가 존재하며, 특정 작업에 맞는 클럭을 선택하여 사용합니다.

-  MCU의 주요 클럭 소스

 

HSE(High-Speed External) - 고속 외부 클럭

   예) 8MHz, 16MHz 크리스탈 사용

   정확한 주파수가 필요한 경우 사용

 

LSE(Low-Speed External) - 저속 외부 클럭

  예) 32.768kHz 크리스탈 (RTC 타이머용)

  배터리 백업 기능이 있는 시스템에서 사용

 

HSI(High-Speed Internal) - 고속 내부 RC 오실레이터

  외부 크리스탈 없이 MCU가 자체적으로 클럭 생성

  정확도가 낮아 고속 통신에는 부적

 

 

LSI(Low-Speed Internal) - 저속 내부 RC 오실레이터

  전력 소모가 적지만 정확도가 낮음

  Watchdog Timer(WDT) 등에 사용

 

 

 

 

6. MCU에서 클럭을 선택하는 방법

대부분의 MCU는 클럭 선택 레지스터(Clock Control Register)를 설정하여 원하는 클럭을 선택할 수 있습니다.

-  클럭 설정 코드 예제 (STM32 HAL)

 

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

// 외부 크리스탈 (HSE) 활성화
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;  // 8MHz x 336 / 8 = 168MHz
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
HAL_RCC_OscConfig(&RCC_OscInitStruct);

 

 

위 설정에서는 8MHz 크리스탈을 168MHz로 증폭하여 MCU가 동작하도록 설정하였습니다.

 

 

7. MCU 내부 클럭을 최적화하는 방법

MCU에서 클럭을 사용할 때 고려해야 할 사항은 다음과 같습니다.

 

 -   주파수 선택 시 고려 사항

    낮은 전력 소모: 저전력 MCU는 낮은 클럭을 선택하여 배터리 수명을 연장
    정확한 타이밍 유지: UART, SPI 등 통신 속도를 맞추기 위해 정확한 주파수 사용
    발열 관리: 높은 클럭을 사용할 경우 발열 증가

 

- 시스템 안정성을 높이는 방법

   적절한 크리스탈과 커패시터 값 선택

   PLL 설정값을 조정하여 클럭 품질 최적화

   전원 및 그라운드 노이즈 최소화

 

 

8. 결론

MCU에서 오실레이터와 크리스탈은 안정적인 클럭을 제공하는 중요한 요소입니다.
오실레이터는 별도의 발진 회로를 내장하고 있으며, 크리스탈은 정밀한 주파수를 유지하도록 돕습니다.

MCU 내부에서는 PLL을 사용하여 주파수를 증폭하며, 필요에 따라 저속/고속 클럭을 분배하여 최적의 성능을 유지합니다.

-      핵심 정리

      ㄴ MCU외부 크리스탈(HSE, LSE) 또는 내부 클럭(HSI, LSI)을 사용하여 동작

      ㄴ PLL을 활용해 주파수를 증폭하여 최적화된 성능 제공

      ㄴ 저전력 또는 정밀한 타이밍이 필요한 경우 적절한 클럭을 선택하여 사용

            올바른 클럭 선택과 설정을 통해 임베디드 시스템을 보다 안정적이고 효율적으로 운영할 수 있습니다.

 

 

'전자공학' 카테고리의 다른 글

59.LED2  (0) 2025.03.08
58. 전력  (0) 2025.03.07
56.고전력 출력  (0) 2025.03.04
55. ADC, DAC  (0) 2025.03.03
54. 스위치2  (0) 2025.03.02
53. 스위치1  (0) 2025.03.01
52. 온도 측정  (0) 2025.02.28
51. 모터와 예제  (0) 2025.02.27