Перейти к содержанию

Какую скорость реально даёт W5500?

Обновлено Редакция GAW

W5500 — Ethernet-контроллер со встроенным стеком TCP/IP: со стороны сети он работает на 10 или 100 Мбит/с, а с микроконтроллером обменивается по SPI. Все данные, которые уходят в сеть или приходят из неё, проходят через SPI, поэтому скорость SPI — потолок для всего соединения (подробнее о вариантах Ethernet — в статье «Ethernet для микроконтроллера»).

Потолок по частоте SPI

SPI передаёт один бит за такт, поэтому без пауз (наш расчёт):

vmax=fSCK,8 МГц→8 Мбит/с=1 МБ/сv_\text{max} = f_\text{SCK}, \qquad 8\ \text{МГц} \rightarrow 8\ \text{Мбит/с} = 1\ \text{МБ/с}
Контроллер и частота SPIПотолок SPIEthernet W5500
Arduino Uno, fosc/2 = 8 МГц8 Мбит/с100 Мбит/с
20 МГц20 Мбит/с100 Мбит/с
40 МГц40 Мбит/с100 Мбит/с
33,3 МГц, проверенная частота W550033,3 Мбит/с100 Мбит/с
80 МГц, теоретическая частота W550080 Мбит/с100 Мбит/с

У ATmega328P частота SCK ведущего — не больше fosc/2, то есть 8 МГц при кварце 16 МГц (DS40002061B, табл. 19-5). Формат кадра SPI W5500 — 2 байта адреса, 1 байт управления и данные; временную диаграмму SPI и предельную частоту для своей схемы покажет калькулятор SPI.

Где теряется ещё

Наш вывод: реальная скорость ниже потолка, потому что AVR передаёт SPI побайтно с паузами на обработку каждого байта, программа тратит время на заголовки TCP, проверку состояния сокета и свою логику, а сеть добавляет подтверждения и ожидание. Сколько полезных данных остаётся с учётом служебных битов, считает калькулятор полезной скорости. Если обмен не идёт вовсе, сначала проверьте SPI по ответу «Как проверить, что W5500 отвечает по SPI».

Похожие вопросы

Можно ли разогнать SPI до 80 МГц?

80 МГц WIZnet называет теоретической расчётной частотой, а проверенная со стабильным сигналом — 33,3 МГц: на высокой частоте сигнал искажают перекрёстные помехи и длина линий. Частоту ограничивает и микроконтроллер. Наш вывод: на модуле с проводами начинают с 10–20 МГц и повышают, пока обмен проходит без ошибок.

Почему W5500 быстрее ENC28J60 на той же Arduino?

У ENC28J60 сеть 10 Мбит/с и SPI до 20 МГц, а стек TCP/IP работает в микроконтроллере — ему нужно и время, и память. W5500 обрабатывает TCP сам, и микроконтроллеру остаётся только перекладывать данные по SPI.

Влияет ли размер блока данных на скорость?

Да: каждый кадр SPI W5500 начинается с 3 байт адреса и управления. Наш расчёт: при записи по 1 байту полезная доля — 25 %, при блоке 1460 байт — больше 99,7 %, поэтому данные пишут большими блоками.

Источники

  1. WIZnet. W5500 Datasheet, Version 1.1.0 (2022) — разд. 1: Ethernet 10/100 Мбит/с, SPI до 80 МГц по описанию, 8 сокетов, 32 КБ буферов; разд. 5.5.4, табл. SPI Timing и прим. 5: 80 МГц — теоретическая расчётная частота, на высокой частоте сигнал искажают перекрёстные помехи и длина линий, проверенная со стабильной формой сигнала частота SCLK — 33,3 МГц; разд. 2.2: кадр SPI — фаза адреса 16 бит, фаза управления 8 бит, затем данные произвольной длины (режим VDM)
  2. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P megaAVR Data Sheet (DS40002061B) — разд. 19.5, табл. 19-5: частота SCK ведущего — от fosc/128 до fosc/2 с битом SPI2X; при fosc = 16 МГц наибольшая частота 8 МГц
  3. Microchip. ENC28J60 Stand-Alone Ethernet Controller with SPI Interface (DS39662E, 2006–2012) — для сравнения: Ethernet 10 Мбит/с, SPI до 20 МГц

Нашли ошибку?