본문 바로가기

[ST_MICRO]/STM32H7

STM32H7 SPI - W5500 TCP/IP 전송속도 테스트 에러 문제 해결

STM32F7 evm 보드에서 테스트 했던 W5500 소스코드를 이용하여 STM32H7 보드에서 테스트 중인데 컴파일 에러가 발생한다.

 

STM32F7 에서 W5500제어 테스트 에서  사용 했던 코드와 동일한데 왜 에러가 발생할까?

 

 

 

#문제발생

 

에러코드

설명 자원 경로 위치 유형

expected identifier or '(' before numeric constant w5500.h /ex24_spi_w5500/Src 행 70 C/C++ Problem

 

 

 

F7 코드에서는 문제가 없었는데... 에러를 찾아 가 보니 헤더파일의 선언 순서가 문제가 된다.

같은 컴파일러 인데 왜 문지가 되지?

 

 

#문제해결

w5500.c

#include "w5500.h"

#include "config.h"

 

 

#include "config.h"

#include "w5500

 

 

수정해서 컴파일 정상적으로 되었고 STM32H7에서 W5500으로 TCP/IP 전송 속도 테스트 결과 4.4Mbps 정도 출력이 된다.

 

 

 

그런데... 이상하다. 

STM32F7 보다 STM32H7이 속도가 더 빠른데 왜 TCP전송 속도가 느린 것일까?

아무래도 SPI클럭 설정이 STM32F7과 달라서 그런것 같은데... 클럭을 올리면 W5500이 초기화가 되지 않는 현상이 있다.

 

W5500의 경우 SPI클럭 속도가 80Mhz까지 통신 가능하다고 하는데... 우선 48Mhz로 설정하고 ICache, DCache를 모두 적용해서 테스트 해 보자.

int main(void)
{
  SCB_EnableICache();
  SCB_EnableDCache();

 

이렇게 했을때 20Mbps 정도 측정이 된다.

 

W5500의 버퍼 메모리를 최대로 키우고 테스트 하면 좀더 속도가 올라간다.

STM32H7에서 W5500 TCP Throughput 측정 결과는 21Mbps 정도로 측정이 된다.

 

반응형