[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를 이용하여 테스트한 결과와 비교하면 차이가 많이 발생한다.
반응형