---
title: "W5300 Client TCP"
url: "https://maker.wiznet.io/forum/11314"
markdown_url: "https://maker.wiznet.io/forum/11314/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "toy16ce"
created: "2015-09-18T12:46:09+09:00"
last_activity: "2017-05-04T08:36:58+09:00"
language: "ko"
views: 1070
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5300 Client TCP

## Question

Asked by toy16ce on 2015-09-18 in Ethernet Chips.

안녕하세요. w5300과 DSP28335를 가지고 TCP 통신 중에 문제되는 사항이 있어 글을 올립니다.

개발환경
DSP 28335, CCS V6, w5300 16bit Data Length, Base Address : 0x4000

현상

- w5300을 Server로 놓고 PC를 Client로 접속하였시 정상동작

- w5300을 Client로 놓고 PC를 Server로 했을 경우 접속불가

소스코드

- 소스코드는 귀사의 홈페이지에서 받은 자료를 사용했으며, w5300_Drv_V1.2.5 를 참고하였습니다.
  [![](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/88536ba783f3d73d076143a2579c3f823884a21a.png) 798×764 39.6 KB](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/88536ba783f3d73d076143a2579c3f823884a21a.png)

디버깅

- DIPR 16Bit 레지스터에 입력한 값의 상위 8Bit만 입력됨.
  S0_PORTR의 경우 아래와 같이 정상적으로 Data가 써집니다. (w5300 Port NO : 0x1234)
  ![](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/1eacd7b566fbb3ffe3650e55458176d11e2eca60.png)

  S0_DIPR의 경우 아래와 같이 상위 8bit만 반복적으로 써집니다. (Target Port NO : 0x1234 → 0x1212) : 비교를 위해 포트번호를 같게 놓았고 실제는 다르게 설정하였습니다.
  ![](https://maker.wiznet.io/forum_uploads/wiznet/original/1X/97b3f8764b2547c0b9d7a358f530c6e75cf64712.png)

  IP는 캡쳐되 것과 같이 정상적으로 입력되었고 Port 번호만 비정상적으로 Write 됩니다. (DIPR : 192.6.95.2 → 0xC0 0x06 0x5F 0x02)

- 테스트 해보니 PORTR 레지스터의 경우 (*((uint16*)Baseadd + 0x20A)) = value; 와 같이 Data를 쓰면 메모리에 바로 입력되는 것을 확인하였습니다.
  DORTR의 경우에는 Data를 써도 바로 메모리에 Update 되지 않고 Sn_CR = 0x04; 로 입력해야만 Update가 되더군요.

- PORTR과 같이 하드코딩 했을때 바로 입력되면 원인파악이 쉬울텐데 DORTR의 경우 유저가 쓴 데이터를 Sn_CR 상태에 따라 내부적으로 처리하는듯 합니다.

- 귀사의 Errata에 작성된 DPORTR 문제와 비슷하긴 하나 해당 문서에는 w5300 메모리에는 정상적인 값이 들어간다고 나와 있으므로 현상은 틀린것으로 보여집니다.

- 게시판을 보니 저와 비슷한 문제(w5300 Client)로 작성된 글은 보이나 명확한 원인 규명이나 솔루션이 제공되지 않은 상태로 보여집니다.
  Wire Shark등의 툴을 사용하여 보았으나 아예 접속이 이루어 지지 않는 것으로 확인 되었습니다.

- DPORTR 문제인지 확신할 순 없으나 정상동작 되는 TCP Server 모드와 비교 분석해 봤을때 w5300에서 DPORTR을 업데이트 하는 과정에서 생기는 문제로 예상되어 집니다.

추신 :
혹시 다음버전 API 자료 업데이트시 recv 함수의 Packet size 판단하는 부분을 아래와 같이 수정해 주셨으면 합니다.
if(getSn_RX_RSR(s))
{
pack_size=IINCHIP_READ(Sn_RX_FIFOR(s));
}
기존소스는 getSn_RX_RSR(s)없이 진행되어 이전 데이터가 FIFOR에 남아 있다면 메모리에 엄청난 양의 쓰레기 값이 들어가는 현상이 확인 되었습니다.

환절기 감기조심하시고 바쁘시겠지만 위 문제에 대한 명확한 답변 부탁드립니다. (개발기간이 지연되고 있습니다…)

## Replies

### Reply 1 by toy16ce, 2015-09-30

Port 문제가 아니라 방화벽 문제였네요.
작성된 글중에 방화벽 관련 내용이 있어 한번 시도해보니 잘되네요 ㅠ ㅠ
그럼 수고하세요.~

### Reply 2 by justinkim, 2015-09-30

해결되어서 다행입니다 ^^

---

Source: https://maker.wiznet.io/forum/11314
