W5300 사용중 질문입니다.
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 사용중 질문입니다.
by yenaru ·
아… 레지스터 설정이 잘못되었을 수도 있어…
사용하고자 하는 값을 추가로 드립니다.
Mac Address → 00:08:dc:00:52:b9
G/W IP Addr.-> 121.136.82.129
SubNet Mask → 255.255.255.0
IP Address → 121.136.82.187
이렇게 사용하여 진행하려 했습니다.
감사합니다.
RE: W5300 사용중 질문입니다.
by yenaru ·
Reference 회로도에 보면 외부 Trasformer의 TCT, RCT port에 3.3VA 가 연결되는것 같은데, 이것을 연결 안해서 그런것일까요? 저희가 사용하는 Transformer는 H1102NL 입니다. 이 port의 2번, 7번에 3.3VA를 연결해야 할까요?
참고로 사용하는 databook의 link는 다음과 같습니다.
datasheet.octopart.com/H1102NL-P … 371638.pdf
조언 부탁드립니다.
RE: W5300 사용중 질문입니다.
by hjjeon0608 ·
안녕하세요, yenaru 님
MAGJACK의 경우 reference schematic을 따라 주셔야 정상적인 동작을 보장 드립니다.
질문하신 TCT와 RCT에 전원을 연결해 보시고 테스트 부탁드립니다.
또한 이것 말고도 저희 회로와 다른점이 있으시다면 이 또한 바꿔주시길 바랍니다.
감사합니다.
RE: W5300 사용중 질문입니다.
by yenaru ·
앞선 문제는 해결되었습니다.
3.3V를 연결하지 않아서 발생한 문제네요.
현재 개발용 세트는 TCP 서버로 동작시키고, PC의 테라텀을 TCP 크라이언트로 붙여서 동작 테스트 중에 있습니다.
일단 TX, RX 모두 잘 동작하고 있습니다.
다만 두가지 질문이 추가로 생겼습니다.
일단 저희는 1:1로 붙여서 사용할 계획이라 현재 Socket0만을 사용하려 하고 있고,
Socket buffer를 TX / RX 각 64KB로 할당하고 나머지 socket은 모두 0으로 할당하고 close 상태로 두었습니다.
질문 1. RX Buffer 동작
PC에서 테라텀을 이용하여 300 Byte의 데이터를 송신하였더니, 수신측에서는 100 Byte, 200 Byte 이렇게 나누어서 수신이 됩니다. (데이터는 연결해서 보면 정상입니다.) 이것은 송신측의 문제인가요? 아니면 수신측에서 나누어 받도록 설정하는 것이 있나요?
질문 2. TX Buffer 동작
Send 동작시 64K Byte까지는 모두 정상적으로 동작하는 것 같습니다.
64K를 초과하는 것에 대해 시험중에 이상한 현상이 있습니다.
예를 들어 64K + 24 data를 보내려고 할때,
→ P1_BRDYR(0x64) = 0x80 (Enable / RX / Active Low / Socket0)
→ P1_BDPTH(0x66) = 0x2000
→ 해당 port를 Interrupt에 연결
→ 24Byte Data 저장 (TXFIFOR)
이렇게 정상적으로 동작합니다.
그런데 SendOK 동작후에 TX_FSR을 확인해 보면 “0x18” 이라는 값이 나옵니다.
이값은 10진수로 24에 해당하죠.
이 값이 바뀌질 않습니다. (장시간 대기해도…)
이후에 40Byte의 data를 추가로 보내면 해당 data는 잘 나가는 것 같은데 (FSR을 체크하지 않고 그냥 보냈습니다.)
SendOK 후에도 FSR값은 여전히 0x18로 나옵니다.
이렇게 0x10000 (64KB)를 넘지 않는 data는 계속 보내도 잘 나가는것 같고, 이후에 FSR은 계속 0x18로 남습니다.
그러다가 0x10000을 넘는 data를 보내려 하면, BRDY에 의한 interrupt 가 발생하지 않거나, 발생한 경우에 동작후에는 FSR값이 다른 값으로 변하여 그 상태로 남습니다.
이 FSR이 변경되지 않는 이유는 무엇일까요?
제가 알고 싶은 내용은 Socket buffer보다 큰 data를 보내려 할때 어떻게 처리하면 좋을지에 대한 내용입니다.
위의 사항이 번거로우시면 큰 data를 보낼때의 처리 방법을 알려주시면 감사하겠습니다.
감사합니다.
일단 64K를
RE: W5300 사용중 질문입니다.
by hjjeon0608 ·
안녕하세요.
질문하신 내용에 대해 답변드리도록 하겠습니다.
송신측에서 fragmentation 해서 보내는 겁니다. 송신측 어플리케이션에서 MTU(Maximum Transmission Unit)설정이 200byte로 되어있을 겁니다. 이 부분을 설정해 주시면 됩니다.
socket buffer보다 큰 데이터는 전송할 수 없습니다. 그러므로 필히 펌웨어에서 FSR을 확인한 후에 이보다 작은 크기의 데이터를 전송해 주시길 바랍니다.
감사합니다.
RE: W5300 사용중 질문입니다.
by yenaru ·
1번 답변에 대해서는 이해 되었습니다.
2번 답변에 대해 추가 질문이 있습니다.
소켓 버퍼보다 큰 데이터를 보낼수 없다고 하셨는데…
만일 소켓0의 buffer를 8KB로 잡고, 보낼 데이터가 16KB 일때,
1. buffer에 8KB 저장
2. TX_WSR 설정 (16KB로…)
3. CR에 SEND 명령
4. TX_FSR check하여 FSR이 4KB 이상일때까지 대기
5. buffer에 4KB 추가 저장
6. 4번과 동일하게 대기
7. buffer에 남은 4KB 추가 저장
8. SendOK 수신
이런 식으로 처리할 수 없다는 말씀이신가요?
그리고 추가 질문이 생겼습니다. (처음이다 보니 할수록 질문이 생기네요…)
제가 4개의 socket을 열어 사용하려 하고, TX 데이터가 양이 많아서 아래와 같이 설정하려 합니다.
TX SK0 Buffer : 24
TX SK1 Buffer : 24
TX SK2 Buffer : 24
TX SK3 Buffer : 24
TX SK4 Buffer : 0
TX SK5 Buffer : 0
TX SK6 Buffer : 0
TX SK7 Buffer : 0
RX SK0 Buffer : 8
RX SK1 Buffer : 8
RX SK2 Buffer : 8
RX SK3 Buffer : 8
RX SK4 Buffer : 0
RX SK5 Buffer : 0
RX SK6 Buffer : 0
RX SK7 Buffer : 0
MTYPE : 0x0FFF
이렇게 설정하면 되는 것인가요?
마지막으로 TX 진행시, FIFO Write, WSR 설정, Send 명령 설정후
SendOK를 받았는데, FSR을 읽어보니 남은 FIFO양이 초기 상태와 다른 경우가 있습니다.
이런 case는 어떻게 발생하고, 이때는 어떻게 FSR을 clear 해야 하나요?
감사합니다.
RE: W5300 사용중 질문입니다.
by hjjeon0608 ·
안녕하세요.
2번과 관련된 추가 질문에 대한 답을 해드리도록 하겠습니다.
데이터시트에도 명시되어 있듯이 Sn_TX_WRSR은 TMSRn에 의해 설정된 메모리 크기보다 크게 설정할 수 없습니다.
버퍼설정은 맞게 하셨습니다. 8의 배수로 설정하는 것과 총 합이 128K를 넘지 않도록 하는 것만 유의 하시면 됩니다.
SENDOK 인터럽트는 칩 내부에서 SEND 명령어를 올바르게 인식하였다는 의미 입니다. 즉 SEND를 완료하였다는 의미가 아닙니다.
예를 들어 설명 드리면, 2개의 패킷을 보낸다고 가정해보면,
이런 과정을 거치게 됩니다. TCP에서는 ACK를 정상적으로 받지 못할 경우 재전송을 해야 하기 때문에 패킷을 버퍼에 저장시켜놓기 때문에 FSR이 SEND명령을 내렸다고 해서 증가하지는 않습니다.
감사합니다.
RE: W5300 사용중 질문입니다.
by yenaru ·
감사합니다.