본문 바로가기
Embedded/MCU

S32K144EVB를 이용한 SPI 실습(1)

by kjy1010 2024. 1. 24.

S32K144EVB를 이용하여 SPI 테스트를 하고, FreeMASTER로 모니터링하는 실습을 진행해보도록 하겠습니다.

우선 NXP에서 사용하는 SPI의 종류에 대해 설명드리겠습니다.

 

FlexIO SPI

  • FlexIO (Flexible I/O): FlexIO는 다목적 입출력 프레임워크로서, 소프트웨어로 프로그램 가능한 퍼포먼스 및 플렉시블한 입출력 기능을 제공합니다.
  • FlexIO SPI: FlexIO SPI는 FlexIO를 사용하여 SPI를 구현한 것입니다. 이는 특히 리소스가 제한된 시스템에서 소프트웨어로 SPI를 구현하고자 할 때 유용합니다. 마이크로컨트롤러의 FlexIO 모듈을 활용하여 다양한 입출력 기능을 구현할 수 있으며, SPI 통신이 가능한 장치와 통합하여 사용할 수 있습니다.

LPSPI (Low Power Serial Peripheral Interface)

  • LPSPI (Low Power SPI): LPSPI는 저전력 환경에서 동작하는 SPI 통신 프로토콜을 제공합니다. 이는 전력 소모를 최소화하면서도 효율적인 데이터 전송을 가능하게 하는 것이 특징입니다.
  • LPSPI의 주요 특징
    - 저전력 운영: 저전력 모드에서 동작하여 배터리로 구동되는 장치 및 전력 소비에 민감한 응용프로그램에 적합합니다.
    - 다양한 설정: 클럭 속도 및 데이터 전송 포맷과 같은 다양한 설정을 지원하여 다양한 장치와의 통신에 유연하게 대응할 수 있습니다.
    - DMA (Direct Memory Access) 지원: 데이터 전송을 위한 DMA를 지원하여 프로세서의 부담을 줄여 더 효율적인 데이터 전송이 가능합니다.
    - 다중 마스터 및 슬레이브 모드: 여러 개의 SPI 장치를 동시에 다룰 수 있도록 다중 마스터 및 슬레이브 모드를 지원합니다.

실습은 LPSPI를 사용해서 진행하겠습니다.

 

SPI 실습 구성도

 

 

위 그림과 같이 마스터와 슬레이브 LPSPI 인터페이스를 활용하여 ADC 데이터를 주고받고, 마스터는 받은 데이터를 활용하여 FlexTimer PWM을 제어하는 시스템을 구현하는 실습을 진행하겠습니다.

 

S32K144EVB를 이용한 SPI 실습

1-1. LPSPI0 포터 설정

위 표를 참조하여 포터 설정을 진행하도록 하겠습니다.

 

1-2. LPSPI0 설정 : CS

 

1-3. LPSPI0 설정 : SCK

 

1-4. LPSPI0 설정 : SIN

 

1-5. LPSPI0 설정 : SOUT

 

1-6. LPSPI0 설정 결과

위와 같은 과정을 통해 설정을 마쳤다면, LPSPI0 즉 Master의 설정이 완료되었습니다.

 

2-1. LPSPI1 포터 설정

위 사진을 참조하여 포터 설정을 진행하도록 하겠습니다.

 

2-2. LPSPI1 설정 : CS

 

2-3. LPSPI1 설정 : SCK

 

2-4. LPSPI1 설정 : SIN

 

2-5. LPSPI1 설정 : SOUT

 

2-6. LPSPI1 설정 결과

위와 같은 과정을 통해 설정을 마쳤다면, LPSPI1 즉 Slave의 설정이 완료되었습니다.

 

3-1. SPI Peripherals 설정 : LPSPI 1 추가

 

3-2. SPI Peripherals 설정 : LPSPI0 Master 설정

 

3-3. SPI Peripherals 설정 : LPSPI0 Slave 설정

 

3-4. SPI Peripherals 설정 : LPSPI2 추가

 

3-5. SPI Peripherals 설정 : LPSPI1 Master 설정

 

3-6. SPI Peripherals 설정 : LPSPI1 Slave 설정

 

4. Update Code하여 생성된 코드 확인

 

5. Build 하여 에러가 없는것을 확입합니다.

 

이제 SPI 실습을 위한 Setting이 마무리 되었습니다.

다음 포스팅에 이어서 실습 진행하겠습니다.

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

S32K144EVB를 이용한 SPI 실습(2)  (0) 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