1 분 소요

개념정리


SPI *Serial Peripheral Interface 직렬 주변기기 인터페이스 버스

주로 연산 능력이 없는 장치와 통신할떄 사용

동기식 직렬통신에 가장 기본적인 형태

SPI 통신은 기본 4개의 선을 통신

통신속도가 더빠르고 규격이 간단하다

SPI

4개의 선

  1. SCLK - 클럭 전송라인
  2. MOSI - master out slave in (슬레이브 경우 = SDI, DI)
  3. MOSO - master in slave out (슬레이브 경우 = SDO, DO)
  4. CS - Chip Select (Active Low)

데이터 시트를 보면 SPI 대신 시리얼 인터페이스 또는 데이터 인터페이스 라고 표현하기도함

I2C와 비교

I2C는 장치의 주소를 먼저 보내고 응답을 받는 방식 SPI 는 해당 절차없이 CS 핀만 Low 떨어뜨린다

전이중 통신이 가능하다 => 송수신이 동시에 할 수 있다.

클럭의 극성

IDLE 상태 통신을 안하고 있는 상태

클럭의 위성 . 클럭의 데이터 읽을떄 어느시점에서 읽을지

CPOL = IDLE 상태 Clock Polarity 클럭 극성 CPHA- 몇번쨰 엣지에서 읽을지 선택 Clock Phase 클럭 위상

클럭의 극성


개발 환경 세팅

개발 환경 설정

Mode - 통신 방식 Hardware NSS Signal - ChipSelect 방식 설정 Data size - 전송 방식 First Bit - 높은비트 먼저 보냈지 늦은 비트 보낼지 선택 Prscalrer - 보내는 속도

CPOL - SPI 슬레이브 설정 참고해서 설정 CPOA - SPI 슬레이브 설정 참고해서 설정

Hardware NSS 신호는 STM32에서 SPI 통신 시 ‘Slave Select(SS)’ 핀을 하드웨어적으로 제어하는 기능으로, 마스터가 자동으로 슬레이브 선택 신호(NSS)를 관리해주는 방식입니다. 즉, 소프트웨어로 GPIO를 직접 제어하지 않고 SPI 주변장치가 NSS 핀을 알아서 Low/High로 바꿔줍니다

세부설정

-> 강의 소스 코드 절대적으로 필요 해당 강의에서는 함수 추가해서 사용한다. 통신 제어도 사용한다

HAL_SPI_TransmitReceive(&hspi2,(uint8_t)&TxData,RxData,1,10); 이런식으로 사용

소스코드 (예시)

int i =0;
while(1)
{
  if(MP3_DREQ ==1)
  {
    if(sizeof(MP3_DATA >i))
    {
      VS1003_WriteData(&MP3_DATA[i]);
      i + = 32;
    }
    else
    {

    }
  }
}

출처

  1. 참고 영상강의 자료 https://www.youtube.com/watch?v=_7Ll95FITn4&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=4&ab_channel=ChrisWonyeobPark

태그:

카테고리:

업데이트:

댓글남기기