w5500 에서 클라이언트로 접속시 불안정
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
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: w5500 에서 클라이언트로 접속시 불안정
by Edward ·
안녕하세요.
말씀하신 코드 부분의 설명을 간단히 드리자면,
setSn_DIPR(sn,addr); // Set the destination IP address. @ref Sn_DIPR
setSn_DPORT(sn,port); // Set the destination Port number. @ref Sn_DPORT
setSn_CR(sn,Sn_CR_CONNECT); // command register
while(getSn_CR(sn));
위 DIPR과 DPORT는 단순 접속할 대상의 IP와 PORT를 설정하는 부분입니다.
그리고 중요한 것은 setSn_CR부분인데요.
데이터시트를 보시면 아시겠지만 W5500칩은 마지막에 Command Register를 사용해서 Transition을 하게 됩니다.
이 말이 무슨말이냐면, Connect함수에서 실제 Server와 연결이 되려면 이 command register가 정상적으로 동작되야 연결이 이루어집니다.
말씀하신 “데이터 시트에 따르면 getSn_CR(sn) 은 w5500 이 컴맨드를 정상으로 accept 했을때 자동으로 0으로 되어 위 while 문을 빠져 나오는
것으로 설명되어 있습니다.”
위 말은 Command register로 명령하여 connect를 시도하고 연결이 될 때까지 while문으로 계속 확인하고 있는 겁니다.
처음 socket을 생성하고 listen상태로 돌입하는 것 모두 소켓 코드를 보시면 아시겠지만, 전부 마지막엔 setSn_CR을 이용하여 Transition을 합니다.
그렇다면, 생각해봐야 할 점은, 왜 연결이 잘 되지 않느냐인데, 혹시 w5500을 서버와 클라이언트를 병행하면서 구동하시는건가요??
병행하면서 구동하신다면 서버를 사용하고 disconnect를 시도한 뒤 다시 클라이언트로 사용하는 절차가 필요합니다.
그리고 만약 connect를 시도하였는데 연결이 잘 되지 않는 다는 것은 연결하려는 서버쪽이 listen상태로 정상적으로 돌입하였는지도 확인이 필요합니다.
만약 서버쪽에서도 정상적으로 listen상태로 돌입하였는데도 불구하고 connect가 되지않는다면, 코드상에 문제가 있을수도 있으며,
어쩌면, 하드웨어적인 문제가 있을 수도 있습니다.
W5500 칩을 사용하여 따로 모듈을 제작하여 사용하신건가요??
아니면 저희 모듈을 구매해서 사용하시는건가요??
확인부탁드리겠습니다.
감사합니다.
RE: w5500 에서 클라이언트로 접속시 불안정
by wizkil ·
신속한 응답 감사합니다.
조언 주신대로 몇가지 유형에 대해 살펴 보겠습니다.
그리고 우리는 w5500 췹을 사용해서 on board 화 하여 사용중에 있습니다.
또한 참조 코드는 서버쪽은 귀사의 예제코드인 loopback 코드를 참조로 하였고
클라이언트쪽은 귀사의 엔지니어가 블로깅하여 설명한 코드를 참조하였습니다.
아마도 8051쪽 포팅부분에서 나온 것으로 기억합니다.
조언주신 사항 시험후 필요시 다시 문의 드리겠습니다.
감사합니다.
RE: w5500 에서 클라이언트로 접속시 불안정
by Edward ·
안녕하세요.
우선 모든 이더넷 통신의 기반은 loopback 코드입니다.
따라서 loopback 코드를 사용해서 구동하시면 큰 문제는 없을 것으로 보입니다.
그리고 회로는 저희 wiki site에 reference schematic이 있으니 참고해주세요.
감사합니다.
RE: w5500 에서 클라이언트로 접속시 불안정
by wizkil ·
안녕하세요
조언해주신 케이스를 기반으로 시험 결과 문제 해결을 하였습니다.
우리는 w7100a 예제 코드중에 ARP 기능을 이용하여 목적지 MAC 을 얻는 과정후에 클라이언트와 서버를 순차적으로 오픈하여 사용하는
어프리케이션을 구현중이었는데 ARP 동작후에 클라이언트 접속시 connect 가 불안정하게 됬다 안됬다 하는 문제가 발생한 것 이었습니다.
답변주신 내용중에 아래와 같은 것이 있었고 이에 힌트를 얻어 의심되는 부분을 시험 결과 문제 해결에 이르렀습니다.
" 혹시 w5500을 서버와 클라이언트를 병행하면서 구동하시는건가요??
병행하면서 구동하신다면 서버를 사용하고 disconnect를 시도한 뒤 다시 클라이언트로 사용하는 절차가 필요합니다."
우리는 위 조언을 기반으로 우리의 문제 해결을 위해 ARP 에서 SUCCESS 후에 해당 소켓클리어를 하여 위 문제를 해결하였습니다.
신속한 응답과 예상되는 문제점을 나열하여 힌트를 얻을 수 있도록 조언 주심에 대해 깊은 감사 드립니다.
새해 복 많이 받으세요
RE: w5500 에서 클라이언트로 접속시 불안정
by Edward ·
안녕하세요.
문제가 해결되셨다니 다행입니다.
새해 복 많이 받으세요.
감사합니다.