Что лучше для Arduino: W5500 или ENC28J60?
Обновлено Редакция GAW
Обе микросхемы подключаются к Arduino по SPI, но делят работу по-разному. W5500 — сетевой контроллер со стеком TCP/IP в «железе»: TCP, UDP, ICMP, ARP и IPv4 обрабатывает он сам, держит восемь сокетов и буфер 32 Кбайт (WIZnet, гл. 1). Программа только открывает сокет и пишет или читает данные. ENC28J60 — MAC и физический уровень 10BASE-T с буфером 8 Кбайт: он отправляет и принимает кадры Ethernet, а TCP, ARP и DHCP должен выполнять микроконтроллер (Microchip, разд. 1).
| W5500 | ENC28J60 | |
|---|---|---|
| Скорость | 10 и 100 Мбит/с | 10 Мбит/с |
| Стек TCP/IP | в микросхеме, 8 сокетов | в микроконтроллере |
| Буфер | 32 Кбайт | 8 Кбайт |
| Библиотека Arduino | штатная Ethernet | сторонние UIPEthernet, EthernetENC |
| Ток при передаче | 132 мА (тип.) | 160 мА (тип.), до 180 мА |
| Ошибки кристалла | — | у ревизии B7 — 16 с программными обходами |
Почему для UNO и Nano W5500
У ATmega328P всего 2 Кбайт ОЗУ (DS40002061B). С W5500 буферы пакетов и состояние соединений хранятся в самой микросхеме, и памяти на плате почти не тратится. С ENC28J60 программный стек uIP со своими буферами размещается в тех же 2 Кбайт, и на код приложения остаётся меньше. Библиотека Ethernet из комплекта Arduino при запуске ищет только микросхемы WIZnet — W5100, W5200 и W5500 (функция init в w5100.cpp), так что примеры из IDE с ENC28J60 не заработают без сторонней библиотеки. Авторы UIPEthernet для новых проектов с ENC28J60 рекомендуют EthernetENC.
ENC28J60 оправдан, когда микроконтроллер мощный и уже несёт свой стек — например, lwIP — или когда важна цена, а 10 Мбит/с хватает.
Питание
Оба модуля питаются от 3,3 В и при передаче потребляют больше 100 мА. Входы обеих микросхем выдерживают 5 В, но выходы — нет: у W5500 по даташиту WIZnet гарантированный уровень единицы на выходе — от 2,4 В, ниже порога 3,0 В у ATmega328P при 5 В, так что и с ним проверьте, есть ли преобразователь уровня на модуле или шилде. Проверьте, что стабилизатор 3,3 В, от которого вы их питаете, рассчитан на такой ток, — подробнее в ответе «Можно ли подключить ENC28J60 к Arduino на 5 В?».
Устройство обоих контроллеров, разводка трансформатора и разъёма RJ-45 — в статье «Ethernet для микроконтроллера», память и выводы ATmega328P — на странице ATmega328P. Как убедиться, что W5500 отвечает, рассказано в ответе «Как проверить, что W5500 отвечает по SPI?».
Похожие вопросы
Поддерживает ли штатная библиотека Ethernet модуль ENC28J60?
Нет. Библиотека Ethernet 2.0.2 при запуске определяет только микросхемы WIZnet W5100, W5200 и W5500. Для ENC28J60 используют сторонние библиотеки с тем же интерфейсом — UIPEthernet или рекомендованную её авторами EthernetENC.
Сколько соединений держит W5500?
Восемь сокетов одновременно, каждый в режиме TCP или UDP; сокет 0 умеет ещё и MACRAW — приём и передачу целых кадров Ethernet. Буфер 32 Кбайт делится между ними, по умолчанию по 2 Кбайт на приём и передачу каждого сокета.
Почему ENC28J60 дешевле, если W5500 удобнее?
Он проще: в нём только MAC, PHY и буфер, а протоколы TCP/IP выполняет микроконтроллер. На мощных микроконтроллерах с большим ОЗУ это не проблема, а на ATmega328P стек занимает заметную часть памяти и времени процессора.
Источники
- WIZnet. W5500 Datasheet v1.1.0 (17 Dec 2022) — гл. 1 — аппаратные протоколы TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE, 8 сокетов, буфер 32 Кбайт, 10/100 Мбит/с, SPI режимы 0 и 3; разд. 5.3 — VOH выходов не меньше 2,4 В, входы выдерживают 5 В; разд. 5.4 — ток 128 мА при связи 100 Мбит/с, 132 мА при передаче
- Microchip. ENC28J60 Stand-Alone Ethernet Controller with SPI Interface, DS39662E — с. 1 и разд. 1 — MAC и PHY 10BASE-T, буфер 8 Кбайт, SPI до 20 МГц; табл. 16-1 — ток 160 мА типично и 180 мА наибольший при передаче
- Microchip. ENC28J60 Silicon Errata and Data Sheet Clarification, DS80349C — ревизия B7 — 16 из 19 ошибок кристалла с программными обходами
- Arduino. Ethernet library 2.0.2 (arduino-libraries/Ethernet), src/utility/w5100.cpp — функция W5100Class::init — определение микросхемы W5200, W5500 (VERSIONR = 4) и W5100; других микросхем библиотека не поддерживает
- UIPEthernet library (UIPEthernet/UIPEthernet), README — библиотека для ENC28J60 с интерфейсом библиотеки Ethernet и стеком uIP; для новых проектов с ENC28J60 рекомендована библиотека EthernetENC
Нашли ошибку?
Смотрите также
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- Можно ли подключить ENC28J60 к Arduino на 5 В?Входы терпят 5 В, а SO и INT нужно поднять до уровня 5 В
- Как проверить, что W5500 отвечает по SPI?Прочитать VERSIONR (0x0039): ответ 0x04, затем бит LNK в PHYCFGR
- ATmega328PРаспиновка, фьюзы, Optiboot, периферия, питание, схема и код на C