본문 바로가기

RaspberryPi/RP2040

RP2040 SSM EVM - SPI 테스트 (최대 SPI클럭 테스트)

RP2040 SSM EVM 보드의 SPI는 GP16 ~ GP19 에 연결되어 있다. Raspberry Pi-Pico 의 SPI 핀맵과 동일하게 제작 했다.

데이터시트를 보면 RP2040의 최대 SPI 클럭 속도는 62.5Mhz 까지 가능 하다고 한다. 

the maximum SSPCLK (clk_peri) frequency on RP2040 of 133 MHz, the maximum peak bit rate in [controller] mode is 62.5 Mbps

 

RP2040 최대 SPI 클럭 테스트 
void setup() {
  pinMode(15, OUTPUT);
  digitalWrite(15, 1);
  
  Serial.begin(115200);

  SPI.begin();
  SPI.setFrequency(40000000);
}
 

 

ESP32의 SPI 속도 테스트 코드를 이용해서 테스트 하려고 했는데 에러가 발생한다.

 

spi_test1:10:7: error: 'class SPIClassRP2040' has no member named 'setFrequency'
   10 |   SPI.setFrequency(40000000);
 
 
beginTransaction() 함수를 이용하니 문제없이 컴파일 된다.
 
#define LED_PIN1      17

void setup() {
  pinMode(LED_PIN1, OUTPUT);
  
  Serial.begin(115200);
  SPI.begin();
  
  //SPI.setClockDivider(SPI_CLOCK_DIV2);

  //SPI.beginTransaction(SPISettings(32000000, MSBFIRST, SPI_MODE0)); 
  SPI.beginTransaction(SPISettings(62500000, MSBFIRST, SPI_MODE0));
}


unsigned char buf[2] = {1,2,};
void loop() 
{
  SPI.transfer(buf, sizeof(buf));
  SPI.transfer(buf, sizeof(buf));

  delay(10);
}
 

RP2040 에서 62.5Mhz로 SPI클럭이 정상적으로 출력 되는것을 확인 할 수 있다.

 

다만 SPI 출력 지연 시간이 1.2us 정도 되는것 같다. 

 

블록단위의 전송도 느리지만 함수간 전송 지연도 1.7us 이상으로 느리다.

고속이 필요 하다면 한번에 여러 데이터를 전송 할수 있도록 주의를가 필요 할것 같다. 

특히 W5500과 같은 SPI 네트웍모듈의 TCP 전송율 테스트 결과를 보면 확실히 확인 할 수 있다.

참고 : RP2040 SPI DMA 전송 테스트

반응형