본문 바로가기

[ST_MICRO]/STM32G0

STM32G0 SSM - STM32CubeIDE SPI DMA 테스트

 

STM32CubeIDE 를 이용해서 STM32G031의 SPI DMA 테스트를 진행 해 보자.

 

우선 STM32CubeIDE에서 STM32G031용 프로젝트를 생성하고 기본 페리를 설정한다.

SPI 클럭은 최대 32Mhz 까지 가능하다.

 

 

SPI DMA 채널을 추가 

 

 

SPI DMA 인터럽트 추가

 

GPIO 핀 스피드 설정

SPI클럭을 최대 주파수로 사용하기 때문에 GPIO 스피드 설정도 VeryHigh 로 설정해 주어야 한다.

 

 

STM32G031 SPI DMA 처기 테스트 코드

일반 SPI통신과 DMA 통신의 차이를 확인하기 위해 두가지 방식이 가능하도록 코드를 작성 했다.

#define _SPI_DMA_USE		1

#define hSPI				hspi2
#define SPIx_TIMEOUT_MAX    ((uint32_t)0x1000)

void SPI_WriteBuf(unsigned char *pDataBuf, unsigned int Size)
{
#if _SPI_DMA_USE
  HAL_SPI_Transmit_DMA(&hSPI, pDataBuf, Size);
#else
  HAL_SPI_Transmit(&hSPI, pDataBuf, Size, SPIx_TIMEOUT_MAX);
#endif
}

 

 

STM32G0의 일반 SPI 통신 속도는 SPI 데이터 사이 간격이 920ns로 측정된다.

 

 

STM32G031에서  DMA 방식을 이용하여 SPI 통신을 할경우 340ns로 3배 정도 속도가 빨라진 것을 확인 할 수 있다.

반응형