본문 바로가기
Embedded/MCU

S32K144EVB를 이용한 ADC 실습(1)

by kjy1010 2024. 1. 24.

S32K144EVB를 이용하여 ADC 테스트를 하는 실습을 진행해보도록 하겠습니다.

추가로 실습환경 구축단계에서 설치했던 FreeMASTER 를 이용해 모니터링까지 진행하겠습니다.

 

ADC 실습

  • 포텐션 미터로 들어온 0 ~ 5V 전압을 ADC0로 측정한 결과값을 모니터링
  • 포텐션 미터 정보 : ADC0_SE12

1. GPIO 추가

LED OUT : Full-up

- PTD0 : Blue LED

- PTD15 : Red LED

- PTD16 : Green LED

 

2. ADC 포터 추가하기

Potentiometer : ADC0 - PTC14(SE12)

 

3-1. ADC Peripheral 설정

 

3-2. ADC Peripheral 설정 : Default – 12bit ADC, SW trigger

 

3-3-1. ADC Peripheral 설정 : ch12 설정, 나머지 Default

 

3-3-2. ADC Peripheral 설정 : ch12 설정, 나머지 Default

 

4-1. ADC Source 코딩 : ADC 설정

main.c 파일 편집

ADC_DRV_ConfigConverter(INST_ADC_CONFIG_1, &adc_config_1_ConvConfig0) ;

 

4-2. ADC Source 코딩 : 채널 및 SW Trigger 설정

main.c 파일 편집

for (;;)
  {
	/* Insert a small delay to make the blinking visible */
	//delay(720000);

	/* Toggle output value LED0 & LED1 */
	//PINS_DRV_TogglePins(LED_PORT, 1 << LED_BLUE);
	//PINS_DRV_TogglePins(LED_PORT, 1 << LED_BLUE);

	// Configure ADC channel and software trigger a conversion
	ADC_DRV_ConfigChan(INST_ADC_CONFIG_1, 0U, &adc_config_1_ChnConfig0);

	// Wait for the conversion to be done
	ADC_DRV_WaitConvDone(INST_ADC_CONFIG_1);

	// Store the channel result into a local variable
	ADC_DRV_GetChanResult(INST_ADC_CONFIG_1, 0U, &ADC_Raw);

	// Call polling function whenever target board is free to or should process FreeMASTER commands(in polling mode)
    FMSTR_Poll();

  }
}

 

5. Build

 

빌드까지 이상이 없으면 FreeMASTER 사용을 할 수 있도록 하겠습니다.

 

FreeMASTER 추가하기

1-1. FreeMASTER SDK 추가하기

 

1-2. FreeMASTER SDK 추가하기

 

2. mian.c 파일에 ‘freemaster.h’ include 하기

#include "freemaster.h"  // add for FreeMaster

 

3. S32K144 UART 포터 확인하기

 

위의 데이터 시트를 확인하여 포트 확인을 한 결과

  • UART TX : PTC7(LPUART1_TX)
  • UART RX : PTC6(LPUART1_RX)

4. UART 사용을 위한 PIN 설정하기

 

5-1. UART 사용을 위한 Peripheral 설정 : lpuart

 

5-2. UART 사용을 위한 Peripheral 설정 : lpuart

표시한 항목을 참고하여 아래 사항을 수행

  • lpuart1로 변경(Custom name 체크 후 변경)
  • LPUART_1로 변경
  • lpuart1_State로 변경
  • lpuart1_InitConfig0로 변경
  • 나머지는 Default 설정

6. Main.C의 main()함수에 UART 초기화 및 UART Handler 추가

// Initialize UART
LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0);
// add UART Interrupt Handler
INT_SYS_InstallHandler(LPUART1_RxTx_IRQn, FMSTR_Isr, NULL);

 

7. Main.C의 main()함수에 FreeMaster Driver 초기화

// Initialize FreeMaster Driver
FMSTR_Init();

 

8. Main.C의 main()함수에 무한 루프에서 FMSTR_Poll() 실행

  for (;;)
  {
	/* Insert a small delay to make the blinking visible */
	//delay(720000);

	/* Toggle output value LED0 & LED1 */
	//PINS_DRV_TogglePins(LED_PORT, 1 << LED_BLUE);
	//PINS_DRV_TogglePins(LED_PORT, 1 << LED_BLUE);

	// Configure ADC channel and software trigger a conversion
	ADC_DRV_ConfigChan(INST_ADC_CONFIG_1, 0U, &adc_config_1_ChnConfig0);

	// Wait for the conversion to be done
	ADC_DRV_WaitConvDone(INST_ADC_CONFIG_1);

	// Store the channel result into a local variable
	ADC_DRV_GetChanResult(INST_ADC_CONFIG_1, 0U, &ADC_Raw);

	// Call polling function whenever target board is free to or should process FreeMASTER commands(in polling mode)
    FMSTR_Poll();

  }

 

9. Build

빌드하여 이상이 없는지 확인

 

10. 보드에 *.elf 다운로드 완료되면 디버거 종료(Terminate : Ctrl + F2)

 

11. EVB 리셋 버튼 누르고, 프로그램 실행

프로그램이 실행되지 않는 경우, 또는 다름 프로그램이 들어 있는경우, FreeMASTER의 연결이 안됨.

 

'Embedded > MCU' 카테고리의 다른 글

S32K144EVB를 이용한 PWM 실습(1)  (2) 2024.01.24
S32K144EVB를 이용한 ADC 실습(2)  (0) 2024.01.24
S32K144EVB를 이용한 LED 실습  (0) 2024.01.24
S32K144EVB 실습 환경 구축  (0) 2024.01.24
TC275 실습 환경 구축  (0) 2024.01.02