STM32F732 Arduino SPI 속도 테스트에서 설정한 최대 SPI 클럭값으로 W5500의 네트웍 전송율을 테스트 해 보자.
[STM32-64 Ardu] 보드에서 W5500 EVM 모듈을 연결 할 수 있는 SSM 커넥터의 CS 핀는 PB0에 할당되어 있다.
우선 W5500 Arduino 라이브러리 파일에서 클럭 속도를 최대치로 설정 한다.
\Arduino\libraries\Ethernet2\src\utility\w5500.cpp
//SPISettings wiznet_SPI_settings(8000000, MSBFIRST, SPI_MODE0);
SPISettings wiznet_SPI_settings(54000000, MSBFIRST, SPI_MODE0);
소스코드는 [STM32-64 Ardu] STM32F405 W5500 iperf 네트웍 전송율 테스트 에서 사용한 코드를 이용한다.
STM32F7 에서 Arduino코드로 W5500의 TCP 전송 속도는 6.7Mbps 정도로 측정된다.
iperf -c 192.168.1.48 -w 300k -t 100 -i 10
STM32F767 W5500 TCP/IP 전송 속도 테스트에서 전송율 13Mbps 과 비교하면 많이 차이가 발생한다.
특히 그때는 송수신 테스트 였는데 수신만하는 iperf 테스트 결과가 너무 안좋은것 같다.
STM32F405 W5500 iperf 네트웍 전송율 테스트와 같이 STM32F7용 SPI 라이브러리도 수정해 보자
STM32F7 의 Aruino에서 W5500 iperf 테스트 결과 9Mbps로 측정이 된다.
STM32F7 Arduino에서는 DMA 지원도 어렵고 캐시도 지원이 되지 않는것 같다.
void setup() {
SCB_EnableICache();
SCB_EnableDCache();
Serial.begin(115200);
Ethernet.w5500_cspin = USE_THIS_SS_PIN;
Ethernet.begin(mac, ip, dns_server, gateway, subnet);
//Ethernet.begin(mac);
Serial.println("...");
server.begin();
Serial.print("Iperf server address : ");
}
STM32 F4 W5500 iperf 전송율 테스트 속도 보다 더 느린것은 좀 문제가 있는것 같다. 좀더 분석이 필요하다.
반응형