Какую скорость реально даёт W5500?
Обновлено Редакция GAW
W5500 — Ethernet-контроллер со встроенным стеком TCP/IP: со стороны сети он работает на 10 или 100 Мбит/с, а с микроконтроллером обменивается по SPI. Все данные, которые уходят в сеть или приходят из неё, проходят через SPI, поэтому скорость SPI — потолок для всего соединения (подробнее о вариантах Ethernet — в статье «Ethernet для микроконтроллера»).
Потолок по частоте SPI
SPI передаёт один бит за такт, поэтому без пауз (наш расчёт):
| Контроллер и частота SPI | Потолок SPI | Ethernet W5500 |
|---|---|---|
| Arduino Uno, fosc/2 = 8 МГц | 8 Мбит/с | 100 Мбит/с |
| 20 МГц | 20 Мбит/с | 100 Мбит/с |
| 40 МГц | 40 Мбит/с | 100 Мбит/с |
| 33,3 МГц, проверенная частота W5500 | 33,3 Мбит/с | 100 Мбит/с |
| 80 МГц, теоретическая частота W5500 | 80 Мбит/с | 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 %, поэтому данные пишут большими блоками.
Источники
- 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)
- 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 МГц
- Microchip. ENC28J60 Stand-Alone Ethernet Controller with SPI Interface (DS39662E, 2006–2012) — для сравнения: Ethernet 10 Мбит/с, SPI до 20 МГц
Нашли ошибку?
Смотрите также
- W5500Ethernet по SPI с аппаратным TCP/IP: выводы, PMODE, обвязка, ток
- Полезная скорость интерфейсовБиты на байт, кадры в секунду и доля данных для UART, SPI, I²C, CAN, Modbus и USB
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- Кадр SPIДиаграмма режимов 0–3, время передачи, предельная частота
- Как проверить, что W5500 отвечает по SPI?Прочитать VERSIONR (0x0039): ответ 0x04, затем бит LNK в PHYCFGR