w5100 전송이 끊기는 경우...
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: w5100 전송이 끊기는 경우...
by Edward ·
안녕하세요.
Socekt을 UDP로 사용하고 계시는건가요??
말씀하신 ‘전송도중 패킷을 수신하게 되면 문제가 되는 것인가요??’
위 질문의 답은 상관없다. 입니다…
칩 내부에서 Data를 전송하는 TX memory와 data를 받는 RX memory가 분리되어 있기 때문에
전송도중 패킷을 수신하는건 상관없습니다.
감사합니다.
RE: w5100 전송이 끊기는 경우...
by minsoon ·
감사합니다.
사용하는 함수는 loopback_tcps()를 사용하고 있읍니다.
while(1) {
loopback_tcps(0,PORT_NUM,data_buf,0);
loopback_tcps(1,PORT_NUM,data_buf,0);
loopback_tcps(2,PORT_NUM,data_buf,0);
loopback_tcps(3,PORT_NUM,data_buf,0);
loopback_tcps(4,PORT_NUM,data_buf,0);
loopback_tcps(5,PORT_NUM,data_buf,0);
loopback_tcps(6,PORT_NUM,data_buf,0);
loopback_tcps(7,PORT_NUM,data_buf,0);
그리고…함수내에서는
void loopback_tcps(SOCKET s, uint16 port, uint8* buf, uint16 mode)
{
uint32 len;
switch(getSn_SSR(s)) // check SOCKET status
{ // ------------
case SOCK_ESTABLISHED: // ESTABLISHED?
if(getSn_IR(s) & Sn_IR_CON) // check Sn_IR_CON bit
{
printf2(PORT_DEBUG,“%d : Connect OK\r\n”,s);
setSn_IR(s,Sn_IR_CON); // clear Sn_IR_CON
LcdPrintf2L(4,“S%d Cli.Connected OK.”,s);
}
if((len=getSn_RX_RSR(s)) > 0) // check the size of received data
{
len = recv(s,buf,len); // recv
if(len) {
/// debug socket
//printf2(PORT_DEBUG,“sock/len : [%d]/[%d],”,s,len);
buf[len] = 0;
//printf2(PORT_DEBUG,“data : [%s]\r\n”,buf);
위와 같이 파싱함수와 전송함수 두개를 추가하여 보내고 있읍니다.
클라이언트는 다른분이 PC에서 프로그래밍하고 있는데…
GsSendReq128DataSend() 이 함수가 실행되면 1초간 데이타를 계속 보냅니다.
데이타를 보내던중에 패킷을 클라이언트로부터 수신하게 되면 전송이 홀딩이 됩니다.
PC측에서도 원인을 몰라서 보드쪽을 의심하는데…
W5100은 송수신 무관하다는 것이죠??
전 PC측에서 이더넷측 에서 수신을 안하기에 보내질 못해서 멈추는 것으로 보고 있읍니다.
PC측에서는 버퍼 리드 타임아웃이 걸려 루틴을 빠져나왔다고 하네요…
어떤 문제 일까요? ^^
RE: w5100 전송이 끊기는 경우...
by justinkim ·
안녕하세요
알려주신 정보로만으로는 문제를 파악하기 어렵습니다.
와이어 샤크 같은 패킷 캡쳐 프로그램을 통해 해당 패킷이 나가지않는 것인지 도달하지 못하는 것인지를 캡쳐 해보시기 바랍니다.
감사합니다.