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 |