---
title: "W5100 전송 속도 및 설정 관련"
url: "https://maker.wiznet.io/forum/10246"
markdown_url: "https://maker.wiznet.io/forum/10246/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "lsh112140"
created: "2014-05-19T23:31:50+09:00"
last_activity: "2017-05-04T08:33:00+09:00"
language: "en"
views: 957
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5100 전송 속도 및 설정 관련

## Question

Asked by lsh112140 on 2014-05-19 in Ethernet Chips.

안녕하세요
W5100 에 관해 질문드립니다

1. FSR (Tx Free Size Register) 와 SEND_OK의 완료 시점 차이는 무엇인가요??

while ( (getISR(s) & Sn_IR_SEND_OK) != Sn_IR_SEND_OK ); // 180us 지연

//======================================================================= // 200us 지연
do
{
freesize = getSn_TX_FSR(s);
status = IINCHIP_READ(Sn_SR(s));
if ((status != SOCK_ESTABLISHED) && (status != SOCK_CLOSE_WAIT))
{
ret = 0;
break;
}
}while(freesize &lt; ret);
//=======================================================================

이렇게 SEND OK 이후에도 FSR 레지스터에 지연이 생기네요 지연을 없애는 방법이 있나요? // No delayed ACK Register Enalbe 설정 상태임

1. Socket0 Memory Size를 8k로 쓰려고 하는데 write_data 함수에서 TX_BUF에 값이 제데로 안들어가네요( 5000Byte Size Data) 코드 첨부합니다

void write_data(SOCKET s, vuint8 * src, vuint8 * dst, uint16 len)
{
uint16 size;
uint16 dst_mask;
uint8 * dst_ptr;

```
dst_mask = (uint16)dst & getIINCHIP_TxMASK(s);
dst_ptr = (uint8 *)(getIINCHIP_TxBASE(s) + dst_mask);

if (dst_mask + len > getIINCHIP_TxMAX(s)) 
{
	size = getIINCHIP_TxMAX(s) - dst_mask;		// 변수 값 , Register는  정상 	
	wiz_write_buf((uint16)dst_ptr, (uint8*)src, size);	// 정상적으로 Buffer copy가 될 때도 있고 	엉뚱한 곳의 번지로 copy 되기도 함
	src += size;                                                                 
	size = len - size;
	dst_ptr = (uint8 *)(getIINCHIP_TxBASE(s));
	wiz_write_buf((uint16)dst_ptr, (uint8*)src, size);		// Tx_BASE의 번지로 Buffer가 copy 되지 않고 엉뚱한 곳의 번지로 copy됨
}
```

}

// ==============================================
// 설정 부분입니다
// ==============================================
void sysinit(uint8 tx_size, uint8 rx_size) // tx_size , rx_size = 0x03 Socket0 8kbyte 설정
{ // tx_size , rx_size = 0x55 Socket0 2Kbyte 설정시 정상 동작함
int16 i; // Socket은 0번만 사용
int16 ssum,rsum;

```
ssum = 0;
rsum = 0;

IINCHIP_WRITE(TMSR,tx_size);	// Set Tx memory size for each channel
IINCHIP_WRITE(RMSR,rx_size);	// Set Rx memory size for each channel

SBUFBASEADDRESS[0] = (uint16)(__DEF_IINCHIP_MAP_TXBUF__);		// Set base address of Tx memory for channel #0 
RBUFBASEADDRESS[0] = (uint16)(__DEF_IINCHIP_MAP_RXBUF__);		// Set base address of Rx memory for channel #0 

for (i = 0 ; i < MAX_SOCK_NUM; i++)       // Set the size, masking and base address of Tx & Rx memory by each channel
{
	SSIZE[i] = (int16)(0);
	RSIZE[i] = (int16)(0);
	if (ssum < 8192)
	{
		switch((tx_size >> i*2) & 0x03)  // Set Tx memory size
		{
			case 0:
				SSIZE[i] = (int16)(1024);
				SMASK[i] = (uint16)(0x03FF);
			break;
			case 1:
				SSIZE[i] = (int16)(2048);
				SMASK[i] = (uint16)(0x07FF);
			break;
			case 2:
				SSIZE[i] = (int16)(4096);
				SMASK[i] = (uint16)(0x0FFF);
			break;
			case 3:
				SSIZE[i] = (int16)(8192);
				SMASK[i] = (uint16)(0x1FFF);
			break;
		}
	}
	if (rsum < 8192)
	{
		switch((rx_size >> i*2) & 0x03)     // Set Rx memory size
		{
			case 0:
				RSIZE[i] = (int16)(1024);
				RMASK[i] = (uint16)(0x03FF);
			break;
			case 1:
				RSIZE[i] = (int16)(2048);
				RMASK[i] = (uint16)(0x07FF);
			break;
			case 2:
				RSIZE[i] = (int16)(4096);
				RMASK[i] = (uint16)(0x0FFF);
			break;
			case 3:
				RSIZE[i] = (int16)(8192);
				RMASK[i] = (uint16)(0x1FFF);
			break;
		}
	}
	ssum += SSIZE[i];
	rsum += RSIZE[i];

	if (i != 0)             // Sets base address of Tx and Rx memory for channel #1,#2,#3
	{
		SBUFBASEADDRESS[i] = SBUFBASEADDRESS[i-1] + SSIZE[i-1];
		RBUFBASEADDRESS[i] = RBUFBASEADDRESS[i-1] + RSIZE[i-1];
	}
}
```

}

1. TCP 통신의 경우 W5100 전송송도 Spec이 어떻게 되나요 ?? // 원하는 Spec : 21Mbps (3.2Mbps 까지 전송속도 확인)
   다른 제품들의 전송 속도도 알고 싶습니다

## Replies

### Reply 1 by lsh112140, 2014-05-20

빠른 답변 감사합니다.
3번에 대해서만 다시 질문합니다

Wiznet 사이트 Product 메뉴에 각 제품 별 Network Perpomance 에서
W5100은 25Mbps , W5300은 80Mbps로 돼있는데
단순히 8bit bus , 16bit bus로 인한 속도 차이 인가요?(Chip 내부 RX,TX Buffer에 copy하는 속도 차이?)
아니면 Network 전송속도도 차이가 있나요?

W5100에서는 chip 내부 TX Buffer에 copy 하는 지연시간을 제외하면
전송속도(SEND_OK + FSR )는 40Mbps가 나옵니다

W5300으로 하면 달라지는 점이 있을까요??

### Reply 2 by lsh112140, 2014-05-21

부품 선정 중이라 빠른 답변 주시면 감사하겠습니다

---

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