1. 들어가면서
모든 MCU가 그렇듯 Clock 설정은 다른 어떤 Pheripheral 설정보다 우선되어야 합니다.
대표적으로 Clock 설정으로 영향 받는 것들은 비동기 통신의 Baudrate나 동기 통신의 Clock 속도 또는 주기적 처리를 위한 Timer가 있습니다.
개인적인 취향으로는 ST Cube 방식이 눈에도 잘 들어오고, 특정 Pheripheral이 실제 어떤 클럭에 영향을 받는지 이해가 빠르게 된다고 생각합니다. 아쉽게도 NXP의 Processor Expert는 이에 비해 불편하지만 나름의 직관성은 있다고 생각합니다.
2. 시작합니다.
S32K Reference Manual을 보면 개략적인 Clock 구조는 다음과 같습니다.
만약, S32K의 상세한 Clock 구성을 확인하고 싶거나, Register를 직접 제어 하는 방식으로 Clock을 설정하고자 한다면 아래 문서와 엑셀파일을 참조하면 됩니다.
Figure 27-1. Clocking diagram을 기준으로
Clock Input 단이 4개가 존재합니다.
1. FIRC
2. SIRC
3. SOSC (XTAL, EXTAL)
4. LPO
Clock Ouput 단에는 4개 정도의 카테고리로 구분할 수 있습니다.
1. Core Clock
2. Bus Clock
3. FLASH Clock
4. RTC
이제부터는 Processor Expert와 Reference Manual을 참조하여 각 Clock에 대해 이야기해보겠습니다.
Input Clock 분석
1. FIRC / SIRC
FIRC는 48MHz, SIRC는 8MHZ로 고정되어 있는 Internal Clock 입니다.
2. SOSC (XTAL, EXTAL)
외부에서 크리스탈로 생성하여 공급하거나 Resonator 같은 것을 활용하여 직접 공급하는 방식입니다.
Diagram에서 확인할 수 있는 내용은 SOSC를 사용하는 경우는 XTAL을 사용하는 경우이고 Resonator를 사용하는 경우에는 생성된 클럭이 사용되도록 되어 있습니다.
(SOSC는 발진회로와 관련이 있는게 아닌가 추측해봅니다.)
3. System PLL
위에서는 언급하지 않았지만, 또 다른 Input 단이라고 볼 수 있는 System PLL이 있습니다.
Diagram을 보면, System PLL 쪽으로 SOSC의 Clock 또는 Fast IRC Clock이 입력될 수 있는 것으로 표현되어 있는데 아래 주석으로 달린 것처럼 노란색은 S32K14xW만 지원합니다.
즉, 저희가 현재 사용하는 S32K146에는 System PLL쪽으로는 SOSC Clock만 들어갈 수 있습니다.
S32K의 경우 최대 동작 클럭이 112MHz이므로, SOSC를 통해 공급 가능한 클럭이 50Mhz이기 때문에 해당 클럭 이상을 사용하기 위해서는 반드시 PLL을 사용해야 합니다.
4. LPO
Internal Clock으로 128KHz를 생성합니다. Low Power Modes에서 주요 Clock으로 사용되며 Diagram 상에서 보면 RTC쪽에도 클럭 공급이 가능합니다.
Output Clock 분석
1. Core Clock / Sys Clock
Core Clk은 ARM Core에 공급되는 클럭이며, Sys Clock은 Crossbar, NVIC, Flash Controller, FTM, PDB 등에 공급되는 클럭입니다.
개인적으로 흥미로운 부분은, S32K는 3가지의 모드(RUN, VLPR, HSRUN)간 전환을 통해 상황에 맞게 클럭을 조절한다는 특징을 가지고 있습니다.
2. Bus Clock
Sys Clock을 공급 받지 않는 Pheripherals에 공급되는 Clock이며, 아래 사진과 같이 Interface Clock에서 종류 중 하나입니다.
3. FLASH Clock
Flash 모듈을 위한 Clock
이후 자세한 Clock 설정 및 Clock의 직접적으로 영향을 받는 Timer 설정을 통해 Clock 설정과 Timer 활용 방안에 대해 다뤄보겠습니다.
'NXP' 카테고리의 다른 글
06. S32K146 - Hello World + Clocks (3/3) with LPIT (작성중) (1) | 2021.01.01 |
---|---|
05. S32K146 - Hello World + Clocks (2/3) with LPIT (3) | 2020.12.20 |
04. S32K146 - Hello World + Clocks (1/3) (1) | 2020.12.20 |
02. S32K146 - Pin package 설정 (1) | 2020.08.30 |
01. S32K146 - 개발환경 구성 및 GPIO 활용 (0) | 2020.08.30 |