1. 들어가면서
8Bit MCU와는 다르게, 32Bit MCU는 GUI로 Pheripheral을 설정하고 자동으로 소스코드를 생성해주는 것이 대세가 되었다고 생각합니다.
아마도 이런 개발 환경을 적극적으로 지원한게 ST Micro였다고 생각하며.. 그래서인지 인터넷에서 CUBEMX를 활용하는 많은 레퍼렌스가 제공되고 있습니다.
NXP 또한 ProcessorExpert라는 기능을 제공하고 있지만 레퍼런스가 마땅히 없어 공유 차원으로 시리즈 형태의 포스팅을 작성하고자 합니다.
타겟보드는 - S32K146EVB 입니다.
개발환경 구성
-
개발환경(S32 Design Studio for ARM)은 아래 링크에서 다운로드 및 설치를 하면 NXP에서 제공하는 개발 환경 설정이 가능합니다.
Project 만들기
-
아래 그림과 같은 버튼을 클릭합니다.
-
맞는 MCU를 선택하고, Next를 클릭합니다. (저의 경우에 S32K146을 선택)
-
다양한 선택이 가능한데, SDKs만 설정을 합니다. SDKs의 좌측의 ...을 눌러 S32K146_SDK를 설정하고 Finish를 누릅니다.
-
아래와 같은 화면이 되면 프로젝트 생성이 완료되었습니다.
ProcessorExpert 설정
-
EVB에는 3색 LED가 장착되어 있습니다.
-
화살표 가르키는 파일을 클릭하면, IO와 Pheripheral을 설정할 수 있는 ProcessorExpert 화면이 뜹니다.
-
Component Inspector의 pin_mux 탭에서 아래와 같이 설정합니다.
-
해당 파일을 저장하고, PE 파일을 우클릭하여, Generate Expert Source Code Gnerator를 클릭합니다.
Source code 작성
ST Cubemx는 기본적으로 main 문에서 Pheripheral 설정 함수 생성이 되지만, Processor Expert는 사용자가 직접 지정을 해야합니다.
-
MCU 활용의 첫 단계인 CLOCK 초기화를 합니다.
아래 그림에서, 커서가 가르키고 있는 API를 Drag & Drop으로 원하는 위치에 올립니다.
-
아래와 같이 API를 작성합니다.
CLOCK_DRV_Init(&clockMan1_InitConfig0);
※ S32K를 설치하면, 간단한 예제들이 제공됩니다. 이상하게도 예제에서는 해당 API를 활용하지 않은 예제를 제공하며, Processor Expert에서 제공하는 API 목록에 없어, 검색을 하게 되었습니다.
-
GPIO 초기화를 합니다.
아래 그림에서, 커서가 가르키고 있는 API를 Drag & Drop으로 원하는 위치에 올립니다.
-
아까와는 다르게, Arument를 자동으로 생성해줍니다.
-
IO를 컨트롤 합니다.
아래 그림에서, 커서가 가르키고 있는 API를 Drag & Drop으로 원하는 위치에 올립니다.
함수의 주석을 확인해보면, GPIO Base Pointer(PTA, PTB ..)와 Pin 번호와 High/Low 설정 값을 넣으라고 되어있습니다.
Blue LED를 켜기 위해 아래와 같이 작성하였습니다.
while(1)
{
PINS_DRV_WritePin(PTD, 0, 1);
}
Build & Download
-
Ctrl+b를 누르면, Build가 수행됩니다. 이후 아래 사진처럼 벌레 모양을 클릭해 보드에 다운로드 합니다.
동작
2. 나갑니다.
GPIO만 다루는 편을 작성하다보니, 미비한 부분이 많습니다. 특히 Pin Package 부분도 맞지 않고 Clock 설정도 보지 않았기 때문에 다른 포스팅을 통해 좀 더 자세히 알아보겠습니다.
'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 |
03. S32K146 - Clock 설정 (2) | 2020.09.08 |
02. S32K146 - Pin package 설정 (1) | 2020.08.30 |