w5500 이더넷 통신 관련하여 질문 드립니다.

안녕하세요.

nucleo f411re 보드에 w5500 이더넷 쉴드를 장착하여 pc와 통신을 할려고 합니다.
그리고 현재 위즈넷에서 제공하는 loopback 예제를 실행하는데 성공하였습니다.

그런데 loopback 예제는 받은 데이터를 그대로 보내는 방식입니다.
만약 w5500의 데이터를 pc로 보내는 것과 pc에서 보낸 데이터를 받는 것을 따로 분리하여 사용하고 싶으면 어떤 라이브러리의 함수를 사용해야 할까요?

Sn_SR의 값이 SOCK_ESTABLISHED인 경우에 데이터 통신(수신/발신)을 하게 됩니다.

아래의 함수중
recv함수는 PC로 부터 받은 데이터를 처리하고,
send함수는 W5500이 PC로 데이터를 처리하는 함수입니다.

답변 감사합니다.
그러면 저 send 함수와 recv함수만 main으로 가져와 루프에서 사용하면 되는 것인가요?
아니면 추가적인 코딩이 더 필요한가요?
그리고 제가 사용하고 있는 루프백 함수와 조금 상이한 부분이 있는데, 어떤 버전을 사용하고 계신가요?
전 현재 버전 1.0.2를 사용하고 있습니다.

ioLibrary 최신버전을 캡처해드린거니 최신버전을 사용하시길 권장드립니다.
또한, Send/recv는 데이터 송수신을 위한 함수이므로 loopback 코드안에 있는 모든 함수들을 다 사용하셔야합니다.
첨부드린 링크는 W5100S의 데이터 시트이지만, TCP/UDP등의 통신 방식과 사용예는 동일하니 참고하시길바랍니다.데이터 시트에서 4 Functional Description 을 참고하세요

감사합니다. 알려주신 자료를 참고하여 데이터를 주고 받는데 성공했습니다.
그런데, 속도를 개선할 수 있는 방법이 있을까요? 현재 HAL 라이브러리 환경에서 최신ioLibrary를 적용하여, 16bit의 데이터를 pc와 주고 받고 있으며, 통신 속도가 300ms 밖에 나오지 않습니다…

  1. Socket별로 기본설정되어있는 Tx/Rx의 값(2K)를 하나의 소켓에 몰아주고 사용

  2. TCP의 경우 socket option 에 No delay ack로 세팅
    https://blog.naver.com/roruca/221437985606

  3. SPI DMA를 사용
    [Chip]SPI DMA기능을 쓰려면 어떻게 해야할까요?

해당 링크를 참고하시면 될것 같습니다.