MCU는 CPU나 GPU와 다르게 낯설지만, 가장 많이 사용되는 반도체 중 하나다. ST 시스템 솔루션 랩의 유지 카와노 매니저에게 MCU의 활용성과 가능성이 얼마나 큰지 들어보자.
타이머, ‘클럭’ 계산 통한 ‘펄스’ 제어
획득·비교 블록 입·출력 펄스 제어, 클럭 계산 직접적 연관 없어
일정 주기 펄스출력 반복, 사용자 High·Low 펄스 폭 자유 변경
[편집자주]일반적으로 반도체라 하면 컴퓨터의 CPU와 메모리처럼 일반인에게 익숙한 반도체를 떠올리기 마련이다. 반면에 전자제품 구동을 위해서 핵심 반도체로 쓰이는 MCU(Micro Controller Unit)의 경우 일반적으로 우리가 쉽게 접하는 모든 전자제품에서 사용되고 있으면서도 일반인에게는 아직 낯선 반도체다. 이런 MCU가 최근 반도체 부족 사태로 인해 언론에 오르내리며, 일반인들에게 주목받기 시작했다. 이에 본지는 MCU 반도체 전문기업인 ST마이크로일렉트로닉스의 유지 카와노 매니저의 연재기고를 통해 MCU에 대해 전문적으로 알아보는 자리를 마련했다.
■ 다양한 형태의 MCU가 특수한 타이머 기능을 사용
주방용 타이머처럼 전자 회로의 타이머도 경과된 시간의 양을 표시한다. 다만 시간 주기만을 측정하지는 않는다. 현재 가장 일반적으로 사용되는 타이머의 기능은 사전 결정된 사이클 내에서 펄스를 출력하고 입력 펄스 주파수를 측정하는 것이다. 현재 다양한 형태의 MCU가 특수한 타이머 기능을 사용하고 있으며, 결과적으로 다양한 형태의 MCU가 다양한 목적으로 사용되고 있다. 본고에서는 ST마이크로일렉트로닉스(이하 ST)에서 생산하고 있는 범용 MCU인 STM32F 시리즈 MCU를 예로 들어 기본적인 타이머 기능을 설명한다.
■ 펄스, 타이머 수행 기능 따라 입력 또는 출력 단자로서 동작하는 외부 CH1 단자 통과하는 입력 또는 출력
그림 1은 16 비트 타이머의 블록 다이어그램이다. 16 비트 카운터는 클럭 펄스를 계산한다(최대 65,536회까지). 트리거/클럭 컨트롤러를 사용하여 외부 또는 내부 클럭을 선택할 수 있다. 주파수 분배기(frequency divider)라고도 하는 프리스케일러(prescaler)가 클럭 주파수를 분할하여 계산 주기를 제어한다.
이 16 비트 프리스케일러는 주파수를 최대 65,536번 분할할 수 있다. ARR(auto-reload register)는 사용자가 선택한 계산 값을 가지고 있다. 획득/비교(capture/compare) 블록은 입력 및 출력 펄스를 제어하지만, 클럭 계산 기능과 직접적으로 관련되어 있지는 않다. 이 예제에서 타이머는 입력 및 출력 펄스를 제어하는 내부 CCR(capture/compare register)을 사용하고 있다. 펄스는 타이머가 수행하는 기능에 따라서 입력 또는 출력 단자로서 동작하는 외부 CH1 단자를 통과하는 입력 또는 출력이다.
▲그림1 : 블럭도와 카운트 기능
■ 인터럽트 신호 CPU 전송 타이밍 ARR 값 의해 결정
이것은 다양한 타이머 기능 중에서 가장 기본적인 것이다. 클럭 펄스가 입력인 경우, 카운터는 1개를 더하거나 빼서 카운트-업하거나 카운트-다운한다. 그런 다음 타이머가 카운터 출력 수를 이미 알고 있는 클럭 펄스 주기에 곱해서 시간 주기를 계산한다.
업 카운터(up counter)는 카운트-업 모드라고 하는 기능을 가지고 있으며, 카운터 값이 0에서 시작하여 값이 ARR 값에 도달할 때까지 1개씩 순차적으로 증가한다. ARR 값에 도달했을 때 카운터가 정지하여 CPU에게 지정된 시간이 경과했음을 알려주는 인터럽트 신호를 전송한다.
반대로 다운 카운터(down counter)는 카운트-다운 모드 기능을 가지고 있으며, 카운터 값이 ARR 값에서 시작하여 값이 0에 도달할 때까지 1개씩 순차적으로 감소한다. 0에 도달했을 때, 카운터가 정지하여 CPU에 인터럽트 신호를 전송한다.
2가지 모드 모두, 인터럽트 신호를 CPU에 전송하는 타이밍은 ARR 값에 의해 결정된다.
■ 타이머 외부 입력 신소 상승· 하강 에지 감지시 카운터 값 CCR에 전송
타이머는 외부 입력 신호에서 상승 또는 하강 에지(또는 둘 다)를 감지했을 때, 카운터 값을 CCR에 전송한다. '입력 획득'이라고 하는 이 기능의 예를 그림 2에 나타냈다. 특히 이 경우는 타이머가 외부 CH1 단자를 통해 입력 신호의 상승 에지(즉, Low에서 High로 이행)를 감지한 것이다. 첫 번째 상승 에지에서 카운터 값은 4이기 때문에 CCR은 4의 값을 얻고(획득), CPU는 이것을 메모리(즉, RAM)에 저장한다. 다음 상승 에지의 카운터 값은 11이다. CCR은 또한 이 값을 얻고, CPU가 다시 이것을 메모리에 저장한다. 다음으로 CPU가 첫 번째 획득 값 (4)를 두 번째 획득 값 (11)에서 빼고, 이로부터 입력 신호 주기가 7 클럭 사이클과 일치하도록 결정한다. 클럭 펄스 주기를 알고 있기 때문에 CPU는 곱셈을 수행하여 실제 입력 신호 주기를 얻는다.
▲그림2 : 입력 캡쳐 기능
하강 에지(즉, High에서 Low로 이행)를 감지한 경우에도 타이머는 유사한 방식으로 입력 신호 주기를 획득한다. 타이머는 또한 상승 및 하강 에지 모두에서 카운터 값을 획득하여 각 High 레벨과 Low 레벨의 길이를 획득할 수 있다.
■ 출력 비교 카운터 값 CCR 값 도달시 이벤트 신호 출력
출력 비교 기능은 카운터 값이 사용자-설정 CCR 값에 도달하면 이벤트 신호를 출력한다. 반면, PWM(pulse width modulation) 기능은 High 출력 펄스 폭과 Low 출력 펄스 폭 사이의 비율을 변경한다. 이들 기능은 동일한 동작 원리를 사용하기 때문에 이 절에서는 그림 3을 사용하여 2가지 모두를 설명한다.
▲그림3 : 출력 비교 및 PWM 기능
출력 비교 기능은 카운터 값이 CCR 값과 동일한 경우에 이벤트 신호를 외부 CH1 단자를 통해 출력한다. 이벤트는 신호의 변화를 나타낸다. 예를 들어, 신호가 토글링(toggling)되거나 Low에서 High 또는 High에서 Low로 변경한다. 그림 3의 경우, 사례 (1)은 토클링되는 신호를 나타낸 것이다. 선행 신호가 Low 레벨이었다면, 이것은 High 레벨로 변화하고, High 레벨이었다면, Low 레벨로 변화한다. 사례 (2)는 High 레벨로 변화하고 있는 신호를 나타낸 것이며, 사례 (3)은 Low 레벨로 변화하는 신호를 나타낸 것이다. 사례 (2)와 (3)의 경우, 신호가 이전 신호 레벨에 상관없이 변화한다. 출력 비교 기능은 ARR 값을 사용하여 카운터 리셋 주기를 결정하기 때문에 이벤트 발생 빈도에 영향을 미친다.
사례 (4)는 PWM 기능을 나타낸 것으로 토클링 이벤트만을 포함하고 있다. CCR 값이 카운터 값과 동일해지면, 출력 신호가 토글링된다. 카운터 값이 ARR 값에 도달하면, 카운터와 출력 신호가 동시에 리셋된다. 사례 (4)의 경우, 출력 신호가 Low 레벨로 다시 복귀한다.
여기서 CCR 값은 4로 설정되는 데, 그 때에 신호를 토클링하기 위해서다. 반면, 값이 2로 설정되면 신호가 보다 빨리 토클링되는 데, High 출력 펄스 폭과 Low 출력 펄스 폭 사이의 비율을 조정할 수 있다. 하지만, ARR 값이 일정하면 출력 펄스 주기는 변화하지 않는다. 타이머는 일정한 주기로 펄스를 출력하기 위해서 이 절차를 반복하며, 사용자는 High 출력 펄스 폭과 Low 출력 펄스 폭 사이의 비율을 자유롭게 변경할 수 있다. 뿐만 아니라, 펄스에 대한 시작 값을 High 또는 Low로 선택할 수 있다.
PWM 기능은 모터 속도 제어(펄스 주기 또는 High 폭과 Low 폭의 비율 이용), LED 램프 강도 조정(High 레벨이 램프를 켜고, 반면 Low 레벨이 고주파수 조건에서 램프를 끈다) 등과 같은 애플리케이션에 사용된다.
그림 3에서 업 카운터 동작 방법을 설명하였지만, 다운 카운터도 유사한 방법으로 동작한다. 타이머는 ARR 값에서 시작하여 카운터 값이 이벤트 신호가 생성되는 CCR 값에 도달할 때까지 카운트 다운한다.
■ 인코더 기능뿐만 아니라, 단일 펄스 출력 등 다른 기능들도 제공
STM32F 시리즈 타이머는 지정된 신호에 따라서 카운트-다운 또는 카운트-업 모드로 전환되는 인코더 기능(encoder function)뿐만 아니라, (일련의 펄스를 생성하는 대신) 단일 펄스를 출력하기 위한 기능 등을 포함한 다른 기능들도 제공한다.