본문 바로가기

[ST_MICRO]/STM32F4

[STM32-64 Ardu] STM32F405 Arduino SPI 속도 테스트

[STM32-64 Ardu] 보드에서 STM32F405의 SPI 클럭 속도를 측정해 보자.

Arduino 호환 핀맵의 SPI핀은 SPI1에 할당되어 있다.

STM32F7의 클럭최대 속도는 168Mhz이고 SPI로 입력되는 APB2클럭은 84Mhz 이다. SPI 최대 클럭는 APB/2 이므로 42Mhz가 최대 설정값이 된다.

#define PIN_OUT     PB2

#include <SPI.h>

void setup()
{
  Serial.begin(115200);
  Serial.println("SPI spee test..");
  
  pinMode(PIN_OUT, OUTPUT);
  digitalWrite(PIN_OUT, HIGH);

  SPI.begin();
  //SPI.beginTransaction(SPISettings(42000000, MSBFIRST, SPI_MODE0)); // speed was 42Mhz
  
  SPI.setClockDivider(SPI_CLOCK_DIV2);  //42Mhz
  //SPI.setClockDivider(SPI_CLOCK_DIV4);  //21Mhz
  //SPI.setClockDivider(SPI_CLOCK_DIV8);  //10.5Mhz
}

unsigned char buf[2] = {1,2};

void loop() {
  SPI.transfer(buf, sizeof(buf));
  SPI.transfer(buf, sizeof(buf));

  delay(10);
}

 

 

SPI초기화 하고 클럭 설정을 하면 42Mhz가 출력 되는 것을 확인 할 수 있다.

 

다만 SPI출력 간격이 350ns 이상으로 느리다.

[STM32-64 Ardu] STM32F405 SPI DMA 속도 테스트 에서 STM32CubeIDE를 이용하여 테스트한 결과와 비교하면 차이가 많이 발생한다.

반응형