본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)

by 바이너리 임베디드 2021. 11. 29.

현재 인피니언 TC275 Lite Kit 개발 보드를 갖고 MCU의 세계를 살펴보고 있습니다.
저번 편에서는 LED 깜박깜박시키는 프로젝트를 진행해 보았습니다.
아직 못 보신 분들을 위해 링크를 남겨드립니다.

LED Blinking GPIO  제어 1편

LED Blinking GPIO 제어 2편

LED Blinking GPIO 제어 3편

이전 편에서 LED가 이쁘게 깜박깜박하는 예제를 살펴보았습니다.
연결시킨 상태로 이것 저것 하다가 다시 자리에 돌아와 보니 LED가 이쁘게 깜~박~ 깜~박~이 아니라 까간~ 빡~ 까가까가 까간 빡~ 하면서 아주 랜덤 하게 깜박이고 있습니다..!.!.!

그래서 드린 미션은 LED를 1초마다 깜박깜박이게 해보라는 것이었습니다.
그래서 우리에게 필요한 것은 MCU의 클럭을 먼저 이해할 필요가 있습니다.

이번 편에서는 MCU 클럭이 무엇인지와 설정하는 방법을 알아보도록 하겠습니다.



MCU 클럭이란?



병원에서 사람의 심전도를 측정할때나 심장박동을 측정해보신적 있나요?
심장의 펌프질은 사람이 살아있다는 증거입니다.
그리고 일정하게 박동 그래프의 모습을 가지고 있어야 정상이라고 판단합니다.

사람에게는 심장이 있다면 그렇다면 MCU에게는 바로 클럭이있습니다.
MCU를 동작시키기 위해 일정한 모양의 파형 클럭이 있습니다.
이 클럭이 일정하지 않으면 MCU도 오동작이 발생하게 됩니다.

그렇다면 우리는 1초를 만들어 내기 위해서 클럭의 주파수를 알아내면 됩니다.
예를 들어 주파수가 100MHz의 클럭입니다.
주파수의 의미는 1 초당 100,000,000번의 틱을 만들어 낸다는 의미입니다.
주파수의 값을 읽어서 100,000,000번이 되는 시점에 LED를 On하고 다시 100,000,000번이 되는 시점에 Off를 하면 우리는 일정한 시간으로 LED를 제어할수 있게됩니다.

어느정도 LED를 1초마다 깜박이는 방법은 알아낸것 같습니다.
그렇다면 먼저 TC275의 클럭이 어떻게 생겨먹었는지부터 스터디를 해봅시다.


MCU 클럭 TC275의 스타터 키트


스타터 키트의 레퍼런스 매뉴얼은 저번 글에서 다운받을 수 있는 경로를 알려드렸습니다.
아직 스타터 키트의 레퍼런스 매뉴얼이 없으신 분들은 아래 링크를 참고 부탁드립니다.

https://cookbook.tistory.com/22

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

GPIO 제어하는 방법 GPIO 제어하는 방법으로 마지막 편입니다. 인피니언 Aurix TC275 Lite Kit EVB에서 GPIO를 통해 LED를 제어하는 방법을 살펴 보도록 하겠습니다. 미리 앞서 우리는 GPIO 설정을 하기 위해

cookbook.tistory.com




Aurix TC275 Block Diagram of Lite Kit

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)



MCU 클럭에는 내부클럭을 사용하는 방법과 외부 클럭을 사용하는 방법이 있습니다.
TC275 Lite Kit에서 Block Diagram을 살펴보니 External Crystal을 20 MHz짜리 외부 클럭을 쓰고 있군요!
TC275가 갖고 있는 Backup Clock(내부 클럭)을 사용하는 것이 아니라 외부 크리스털을 사용하여 클럭을 세팅하고 있습니다.
아주 중요한 정보를 하나 얻었습니다.
그리고 임베디드 시스템을 만들게 되면 대부분 정확한 클럭을 만들어 내기 위해 대부분 내부 클럭이 아닌 외부 클럭을 사용하여 만들어 진다는 것을 참고 부탁드립니다.


Aurix TC275 Overview of the Board Specification

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)


TC275 Lite Kit 레퍼런스 매뉴얼 Table 1에서 보면 CPU Core Aurix의 Max Frequency가 200 MHz인 것을 또 하나 얻었습니다.  CPU가 최대로 만들수 있는 클럭의 주파수가 200MHz라는 뜻입니다.

Starter Kit 레퍼런스 매뉴얼에서는 두 가지 정보를 얻었습니다.
- Max Freq : 200 MHz
- External Crystal Freq : 20 MHz

그렇다면 TC275는 1초당 최대 200,000,000번 틱을 만들어 사용할수 있다는 것입니다.
1초당 20,000,000번의 틱을 만들어 내는 외부 크리스털을 무언가 조작을 통해 10배에 해당하는 클럭이 만들어져 사용된다는 이야기 입니다.
누가 어떻게 10배로 뻥튀기 해주는 걸까요??
궁금하도다~~



TC275의 레퍼런스 매뉴얼에서 Clock을 파헤쳐 보자.


TC 275의 레퍼런스 매뉴얼이 필요하게죠? 아래는 레퍼런스 매뉴얼을 구할 수 있는 링크입니다.
https://www.infineon.com/dgdl/Infineon-TC27x_D-step-UM-v02_02-EN.pdf?fileId=5546d46269bda8df0169ca09b44623ed


Aurix TC275 Clock Tree

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)


Clock의 전체적인 구조입니다.

- Basic clock generation (Clock Source) :클락 종류를 선택하게 됩니다. 외부 클럭을 사용하게 될지 아니면 내부 클럭을 사용하게 될지를 선택하게 됩니다. 우리는 외부클럭 20 MHz를 사용하는 것을 알게 되었죠?

- Clock speed up-scaling (PLLs) :20 MHz로 들어오는 녀석을 Max Frequency를 200 MHz로 만들어 주기 위해 뻥튀기시켜서 아주 큰 클럭으로 만들어 주는 것이죠. 아하 바로 이녀석이 뻥튀기 해주는 녀석입니다!!

- Clock distribution (CCU): 내부 클럭이나 뻥튀기된 클럭을 받아 내부장치 (Peripheral)에서 사용하기 전에 application에서 원하는 수준 Clock으로 사용하기 위해 좀 더 낮은 클럭으로 미세 조정을 해주는 과정이죠.

- Individual clock configuration (Peripherals): 각각의 페리에서 더욱더 정밀하게 미세 조정을 해주는 과정입니다.


MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)



XTAL1(외부 클럭)에서 20 MHz로 입력이 될 것이고 우리는 Back-up clock(내부클럭)과 XTAL1중 XTAL1을 선택할 것이고, PLL을 통해 20MHz의 클럭을 뻥튀기 시켜 fPLL을 200 MHz로 만들어 줄것입니다. 그리고 각각의 페리에 맞게 적당한 클럭을 사용하도록 낮은 주파수로 분주하여 보내줄 것입니다.


뻥튀기 해주는 PLL

 


Aurix TC275 PLL Block Diagram

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)



TC275의 max freq. 200MHz이므로 그것을 타겟으로 fpll을 만들기 위한 방법입니다.
fosc를 통해 20 MHz가 들어오게 되며 PLL 시스템을 통해 fpll과 fpll2의 값을 만들어 냅니다.
레퍼런스 매뉴얼에 주어진 수식이 있군요.

Aurix TC275 PLL 수식

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)

fPLL = 200 MHz
fPLL = N/(P*K2)*fOSC = 60/(2*3)*20 MHz = 200 MHz
(N = 60, P = 2, K2 = 3, fOSC = 20 MHz)

레퍼런스 매뉴얼에서 대략적으로 Clock 세팅을 어떻게 설정할지 분석해보았습니다.

수식도 나오고 조금은 어려운 내용일수 있으나 내가 원하는 클럭의 주파수를 만들기 위해 N값이나 P값이나 K2의 값을 변경해주면 되는 것을 알고 있으면 됩니다.

PLL 시스템에 대한 더 자세한 정보를 보시려면 위키피디아에서 확인 부탁드립니다.

https://en.wikipedia.org/wiki/Phase-locked_loop

 

Phase-locked loop - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Control system in which an oscillator relies on a filter to calibrate its input Simplest analog phase locked loop A phase-locked loop or phase lock loop (PLL) is a control system that

en.wikipedia.org



더 자세히 알고 싶은 분들은 레퍼런스 매뉴얼을 꼼꼼하게 읽어보길 바랍니다.



TC275의 클럭 셋팅을 iLLD를 통해 쉽게 설정해보자.




클럭 셋팅은 아주 중요한 부분이기에 iLLD에서 셋팅을 도와주고 있습니다.
우리는 그것을 이용해 보도록 하죠.
iLLD에서 아래의 경로를 따라가면 iLLD에서 클럭을 세팅해 주는 부분입니다.
우리는 이 API를 호출해서 Clock을 셋팅해 보는 것으로 하죠.

IfxCpu_CStart0.c 파일 > void _Core0_start(void) > IFXCPU_CSTART_CCU_INIT_HOOK();


MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)



IfxScuCcu_init 함수를 호출하여 IfxScuCcu_defaultClockConfig의 값들로 세팅하여 클럭을 설정해줍니다.

그리고 Ifx_Cfg.h 파일에서 PLL값과 XTAL 값만 설정해주면 최적화된 값으로 clock을 세팅해 줍니다. 너무 편하게 되어 있어서 정말 굿입니다. 그리고 페리에 따라 수정이 필요하면 그때 가서 IfxScuCcu_defaultClockConfig값을 수정해주면 됩니다.

그럼 우리는 외부 크리스탈을 20MHz를 쓰고 max freq를 200MHz로 설정할수 있게 되었습니다.


MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)



기존의 프로젝트에서 Crt0PostInit > bsp_uc_InitClock() 에서 Clock을 설정해 주고 있었기 때문에 주석 처리하고 iLLD에서 IFXCPU_CSTART_CCU_INIT_HOOK()을 호출하였고 그다음 GetClockInfo()를 호출하여 현재 상태의 클럭을 확인해 보았습니다.

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)
MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)

 

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)




이와 같이 클럭을 설정해 보았다.
앞으로 프로젝트를 진행하면서 미세조정이 필요하면 그때 가서 어떻게 했는지 살펴보도록 하겠다.

 

이 컨텐츠가 도움이 되셨다면!!!

ㅇ ㅏ ㄹ ㅐ 를 꼬 오 옥!! 부탁 드립니다. 컨텐츠를 지속하는 큰 힘이 됩니다.

 

 


Mission. LED의 동작을 1초마다 깜박이게 구현해보기! - CCU6모듈로 1ms ISR을 만들어 낼수 있는 방법을 찾아보라!



아직 LED를 깜박이는 것을 구현해 보지는 못했네요.
그러므로 미션은 4와 똑같습니다. 추가적으로 LED를 깜박이기 위한 다테일한 미션을 드리겠습니다.
CCU6이라는 모듈이 있습니다. 이모듈은 ISR을 만들어 낼수 있습니다.
ISR을 1ms 단위로 만들어 내기위한 CCU6 페리페럴 설계를 생각해 보시기 바랍니다.
구현까지는 하지 않아도 됩니다.

그럼 꼭 혼자 힘으로 하시길~!!

모든 질문과 답변은 아래 카페에서 해드립니다.
많이 많이 방문하셔서 실력을 업그레이드 하세요.

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

댓글