WIZ550io 문의 드립니다
General
No replies yet. Be the first to reply.
Join the discussion.
General
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: WIZ550io 문의 드립니다
by Kei ·
안녕하세요.
WIZ550io의 경우는 기본 라이브러리만 제공이되고 있습니다.
따라서 질문하신 2번 3번에 대해서는 직접 구현을 하셔야하며, MCU에 종속적이기때문에 동일한 보드와 소스가 있지 않다면 디버깅이 불가합니다.
각 질문 항목에 대하여 최대한 답변을 드려보겠습니다.
recvsize = getSn_RxMAX(sn); 에서 getSn_RxMAX는 Sn_RXBUF_SIZE 레지스터 값을 가져와 해당 소켓에 할당된 RX버퍼 사이즈를 확인합니다.
[url]http://wizwiki.net/wiki/lib/exe/fetch.php?media=products:w5500:w5500_ds_v107e_160224.pdf[/url]
자세한 내용은 위 링크의 데이터시트에서 Sn_RXBUF_SIZE 레지스터를 찾아보시면 됩니다.
예를 들어 1번 소켓에 2kb를 할당한 상태라면 레지스터값은 0x02로 설정이 되어 있습니다.
하지만 이 상태로는 실제 2kb를 표현할 수 없으므로 getSn_RxMAX 매크로로 쉬프트 연산하여 실제 사이즈인 2048이라는 값이 저장되게 됩니다.
즉, 질문자님처럼 0으로 읽히는 경우에는 해당 소켓의 RX버퍼 사이즈가 할당이 되어 있지 않았기 때문입니다.
따라서, 할당을 해주셔야합니다.
처음에만 쓰레기값이 들어온다면, 초기화 과정에서 TX/RX버퍼를 다 flush하고 진행해 보시면 되겠습니다.
실제 소스가 어떤식으로 구성되어 있는지 알 수 없는 상황에서는 이정도의 초기화 가이드만 드릴 수 있겠습니다.
소켓의 폴링이라는게 0~3번의 소켓이 있다면 일반 polling방식처럼 순차적으로 각각 사용하길 원하시는건가요?
만약 맞다면, 이부분은 socket 하나에 대한 function을 구현했던 방식처럼 S/W로 추가 구현을 해주셔야 합니다. H/W에서는 지원하지 않습니다.
원하시는대로 각 socket에 대한 function을 나열하시면 되겠습니다.
답변이 되셨길 바랍니다.
감사합니다.