W5300 loopback 관련해서 문의드립니다
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: W5300 loopback 관련해서 문의드립니다
by justinkim ·
125와 126의 의미를 모르겠습니다…
W5300 모드가 8bit인지 16bit인지도 알려주세요
그리고 데이터 loss가 났을때 read 포인터와 write 포인터가 같은지 확인 부탁드립니다.
또 제공되는 Loopback 예제로 포팅하여 테스트 부탁드립니다.
감사합니다.
RE: W5300 loopback 관련해서 문의드립니다
by crushoverridester ·
답변감사드립니다.
127과 128인데 잘못 적었네요… 정정합니다.
8bit의 절반치값 127 이하는 갯수가 맞게 전송되는데 이상되는 값은 갯수가 맞게 전송되지 않고 있습니다.
W5300 모드는 16bit 이고 다이렉트 모드입니다.
데이터 loss는 아닌것 같습니다. Sn_TX_FIFOR 메모리를 확인해보면 PC에서 받은 데이터 16개는 저장되어있습니다. PC의 데이터는
맞게 저장되어있는데, 단순히 피드백하는 갯수가 다릅니다., 추가 내용 덧붙입니다… TX_FIFOR 레지스터에 PC에서 전송된 데이터의 내용이 쉬프트가 되어집니다.
예) PC에서 전송하는 데이터 : 0x1122, 0x3344, 0x5566, 0x7788, 0x99aa
TX_FIFOR 레지스터 : 0x1122, 0x3344, 0x5566, 0x7788, 0x99aa ----------- 입니다만
다시 PC에서 전송을 하게되면
TX_FIFOR 레지스터 : 0x1122, 0x3344, 0x5566, 0x7788, 0x99aa, 0x1122, 0x3344, 0x5566, 0x7788, 0x99aa, -------------- 입니다.
전송하기 위해 w5300에 데이터를 저장할때, 주소번지는 항상 처음 위치일것인데, 이처럼 누적되어 흘러갑니다.
따라서 10바이트 데이터를 수신후 피드백 전송을 하게되면 가끔 9바이트가 뜰때, 나머지 한바이트 + 다음 9바이트를 포함해서 10바이트를
전송하기도 하고 나머지 한바이트 + 다음 8바이트로 9바이트를 전송하기도 합니다.
RE: W5300 loopback 관련해서 문의드립니다
by justinkim ·
TCP 전송시 재전송할 때를 대비하여 TX의 RD/WR 포인터값을 Sequence number와 같이 맞춰서 사용합니다.
따라서 TX FIFO에는 순서대로 데이터가 누적되는것 처럼 보이는게 맞습니다.
하지만 그 다음 말씀하신 9바이트가 뜰때 1바이트와 다음9바이트 또는 1바이트와 다음8바이트를 전송한다는 말이 이해가 되지않습니다…
다시 설명 부탁 드립니다…
감사합니다.
RE: W5300 loopback 관련해서 문의드립니다
by crushoverridester ·
빠른 답변 감사드립니다.
28335에서 w5300을 사용하는데, 데이터는 16비트, 다이렉트 모드입니다.
그리고 UDP통신중입니다.
실험은 다음처럼 하고있습니다.
PC에서 데이터 16바이트를 전송합니다.
DSP에는 Loopback 함수를 사용하고있기때문에 PC에서 받은 데이터 16바이트를 전송합니다.
여기서 문제점이, PC에서 전송하는 데이터의 크기를 0xff의 절반인 0x7f이하로 설정하여 전송하면 데이터 16개는 모두 수신해서 재전송되어집니다.
하지만, 0x80이상으로 설정하여 전송하면 데이터의 길이가 15개로 해서 재전송됩니다.
이를 분석하기 위해서 PC에서 받은 데이터를 DSP에서 확인하였고 이를 다시 재전송하는 함수 sendto에서 TX_FIFOR레지스터에
저장된 데이터를 WRITE 한후, 데이터를 읽어 보니 PC에서 받은 데이터가 다 들어있었습니다. 그리고 길이 또한 16개로 레지스터에
저장되어있었습니다. 하지만 PC에 수신되는 데이터는 길이가 15개이고 마지막 데이터가 없었습니다.
이상황에서 PC로 부터 전송명령을 한번더 보내면, TX_FIFOR에 누적된 내용 다음 부터(15개를 보낸 마지막 바이트) 다음의 데이터가 전송되어집니다.
예) 0x1122, 0x3344, 0x5566, 0x7788 로 8바이트를 전송한다면은 앞의 7바이트 0x1122, 0x3344, 0x5566, 0x77 까지 전송이되어지고 다음번 다시
PC에서 같은 데이터를 전송하면 0x8811, 0x2233, 0x4455, 0x6677 이렇게 수신됩니다.
하지만, 이상황에서 TX_FIFOR에 저장된 데이터를 읽어보지 않으면 0x8811, 0x2233, 0x4455, 0x6677게 전송되지는 않습니다. 그냥 0x1122, 0x3344, 0x5566, 0x77이 전송됩니다.
답변 기다리고 있겠습니다.
RE: W5300 loopback 관련해서 문의드립니다
by justinkim ·
SEND 완료 후 TX FIFO의 RD 포인터와 WR 포인터의 값이 같은지 확인부탁드립니다.
감사합니다.
RE: W5300 loopback 관련해서 문의드립니다
by crushoverridester ·
제가 이해한 것이 맞는지 모르겠습니다만,
데이터 전송전 TX FIFO에 저장되는 주소값과 CR에 0x0020을 줬을때의 TX FIFO 주소는 동일합니다.
그리고 TX WRSR에 저장된 데이터 길이도 수신된 데이터의 길이와 동일합니다.
TX_FIFOR 레지스터는 아래의 코드 처럼 같은 주소에 데이터를 WRITE만 해주어도 자동 증감되는건가요?
아래의 코드처럼 data_add_FIFO를 확인 해보았지만 역시나 고정된 TX_FIFOR 주소값만 나옵니다.
for(i=0;i<len;i+=2){
IINCHIP_WRITE(Sn_TX_FIFOR(s),temp_buf[i]);
data_add_FIFO = Sn_TX_FIFOR(s);
}
위의 코드에서 len 변수에는 PC에서 수신된 데이터 길이가 저장되어 있습니다.
답변 감사합니다.
RE: W5300 loopback 관련해서 문의드립니다
by crushoverridester ·
레지스터값은 맞게 들어가있고 데이터 시트를 봐도 오류를 못찾아서 한참을 고민하다가
PC에서 데이터를 받는 프로그램이 오류가 있을지도 모른다는 생각에 Wireshark를 설치하여 패킷을 확인하였습니다.
그랬더니, DSP에서 보낸 데이터의 길이가 딱딱 맞았고 데이터 또한 유효하였습니다. 하지만 전송된 데이터 뒤에
0x00, 0x00 두바이트가 붙어있었습니다. 이건 UDP 프로토콜 상에 존재하는 잔류 데이터 인가요?
그림 첨부하였습니다. 해당 부분을 노란색으로 표시하였습니다.
RE: W5300 loopback 관련해서 문의드립니다
by justinkim ·
안녕하세요 ?
UDP에서 Ethernet frame 60byte 이하에서는 padding이 붙습니다.
죄송하지만 질문으로는 문제가 도저히 추측되지 않습니다…
테스트한 코드를 알려주시면 검토해보겠습니다.
포럼에 올리기 불편하시면 justinkim@wiznet.co.kr로 보내주시기 바랍니다.
감사합니다.