---
title: "w6100 udp 전송 속도 문의"
url: "https://maker.wiznet.io/forum/16073"
markdown_url: "https://maker.wiznet.io/forum/16073/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "geumock"
created: "2026-05-06T15:29:45+09:00"
last_activity: "2026-05-07T10:16:38+09:00"
language: "ko"
tags: ["Sensors"]
views: 6
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# w6100 udp 전송 속도 문의

## Question

Asked by geumock on 2026-05-06 in Ethernet Chips.

W6100을 이용하여 UDP 전송 코드 작성중입니다.

sendto() 을 이용하여 udp 전송시 약 16byte 의 페이로드 전송에 약 1.2ms 의 함수 실행 시간이 필요합니다.

저희 시스템의 udp 전송 주기 목표는 1ms (1Khz)입니다.

sendto() 사용시 함수 실행 시간을 줄일수 있는 방법에 대해 문의드립니다.

현재 사용 MCU는 STM32F103T8 시리즈, spi 전송 클락은 18MBit/s 입니다.

spi 는 dma 을 사용하고 있읍니다.

연락처 geumock앳지메일닷컴 입니다.

## Replies

### Reply 1 by Grace_Koo, 2026-05-07

안녕하세요.

현재 sendto 함수는 UDP 데이터를 TX buffer에 쓰고 바로 return하는 구조가 아니라, Sn_CR_SEND 명령 후 Sn_IR_SENDOK가 발생할 때까지 대기하는 blocking 구조입니다.

따라서 측정하신 약 1.2ms는 16byte payload를 SPI로 쓰는 시간만이 아니라 아래 시간이 모두 포함된 값입니다.

- 목적지 IP/Port register 설정 시간

- TX free size 확인을 위한 Sn_TX_FSR polling

- TX buffer write 시간

- Sn_CR_SEND command 처리 대기

- Sn_IR_SENDOK 발생 대기

- 첫 전송 또는 목적지 변경 시 ARP 처리 시간

1kHz 주기 전송이 목표라면 아래 방향을 시도해보시면 좋을 것 같습니다.

1. 목적지 IP/Port가 고정이면 setSn_DIPR(), setSn_DPORTR()를 매번 수행하지 않고 초기 1회 설정하도록 변경

2. socket도 매번 open/close 하지 않고 초기 open 후 유지

3. 실시간 루프 진입 전에 1회 dummy send 또는 ARP 처리를 수행하여 첫 전송 ARP 지연 제거

4. 가능하면 Sn_MR2[DHAM]과 Sn_DHAR를 사용해 목적지 MAC을 직접 설정하여 ARP 과정을 생략

5. sendto()를 blocking 방식으로 쓰지 말고, SEND 명령 후 즉시 return하고 SENDOK/TIMEOUT은 interrupt 또는 다음 주기에서 확인하는 non-blocking 구조로 변경

현재 코드 그대로는 sendto() 함수 시간이 W6100 내부 처리와 네트워크 상태에 영향을 받기 때문에 1ms 이하로 항상 고정하기는 어려울 수 있습니다.
1kHz 주기를 맞추려면 sendto()를 전송 완료까지 기다리는 함수로 쓰기보다는, “TX buffer write + SEND command”까지만 수행하고 완료 확인은 따로 분리하는 방식이 더 적합해보입니다.

---

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