본문 바로가기
Embedded/MCU

S32K144EVB를 이용한 SPI 실습(2)

by kjy1010 2024. 1. 24.

저번 포스팅에서 5항목의 절차를 걸쳐 SPI 실습을 위한 Setting이 마무리 되었습니다.

이제 main.c 파일을 수정하여 S32K144EVB를 이용한 SPI 실습을 진행하도록 하겠습니다.

 

S32K144EVB를 이용한 SPI 실습

 

6. LPSPI0 Master 초기화

// Initialize LPSPI0 (Send)
LPSPI_DRV_MasterInit(INST_LPSPI_1, &lpspi_1State, &lpspi_0_MasterConfig0);

 

7. LPSPI1 Slave 초기화

// Initialize LPSPI1 (Receive)
LPSPI_DRV_SlaveInit(INST_LPSPI_2, &lpspi_2State, &lpspi_1_SlaveConfig0);

 

8. # define 선언 : 버퍼 사이즈, 타임아웃

// SPI
#define BUFFER_SIZE 1U     // Byte Count
#define TIMEOUT 	10U

 

9. 변수 선언 : 보내고, 받을 데이터 선언 – 8 bit

// SPI tx/rx data variable
unsigned char masterDataSend = 0;
unsigned char masterDataReceive = 0;
unsigned char slaveDataSend = 0;
unsigned char slaveDataReceive = 0;

 

10. ADC_Raw(16bit) 값을 slaveDataSend(8bit)에 넣기

// SPI Test ------------------------------------------------------------------------------------
slaveDataSend = (unsigned char)(ADC_Raw * 0.0625);  //  0 ~ 4095 ==> 0 ~ 256 , gain = 256/4096

 

11. Slave SPI 에서 slaveDataSend(8bit) 보내기

// slave transfer
LPSPI_DRV_SlaveTransfer(INST_LPSPI_2, &slaveDataSend, &slaveDataReceive, BUFFER_SIZE);

 

12. Master SPI 에서 RX하여, masterDataReceive에 넣기

// master transfer blocking
LPSPI_DRV_MasterTransferBlocking(INST_LPSPI_1, &masterDataSend, &masterDataReceive, BUFFER_SIZE, TIMEOUT);

 

13. masterDataReceive값을 FAN PWM Duty에 넣기

#if 0
    	// Convert PWM Duty from ADC, 0(0%) ==> 4096(100% = 2^15 = 32768)
    	FAN_Raw = ADC_Raw * PWM_GAIN;
#endif

 

14. 최종 빌드

 

15. S32K144 EVM SPI 연결하기

아래의 그림 대로 PIN을 매치 시켜 주어야 합니다.

 

PIN맵을 확인하고 연결시켜주겠습니다.

아래 사진에서 왼쪽 부분이 master 오른쪽이 Slave에 해당합니다.

 

점퍼선을 연결하면 아래 그림과 같이 구성할 수 있습니다.

 

16-1. 프로그램 다운로드 및 디버깅 : Break Point 삽입

아래 표시된 줄에 Break Point 삽입하여 실습 결과를 확인해보도록 하겠습니다.

 

16-2. 프로그램 다운로드 및 디버깅

디버깅 결과 입니다. slaveDataSend값이 55일때,  masterDataReceive값이 55인 결과를 확인 할 수 있습니다.

 

이로서 S32K144EVB를 이용한 SPI 실습을 성공적으로 수행 할 수 있었습니다.

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

S32K144EVB를 이용한 SPI 실습(1)  (2) 2024.01.24
S32K144EVB를 이용한 PWM 실습(1)  (2) 2024.01.24
S32K144EVB를 이용한 ADC 실습(2)  (0) 2024.01.24
S32K144EVB를 이용한 ADC 실습(1)  (0) 2024.01.24
S32K144EVB를 이용한 LED 실습  (0) 2024.01.24