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

Можно ли подключить ENC28J60 к Arduino на 5 В?

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

ENC28J60 — микросхема на 3,3 В: питание от 3,1 до 3,6 В (Microchip, с. 1). При этом Microchip специально сделала её удобной для систем на 5 В: входы CS, SCK, SI и RESET выдерживают 5 В (разд. 2.5), так что линии от Arduino к модулю можно подключать напрямую. Проблема в обратном направлении — с выходами SO (MISO) и INT.

ЛинияНаправлениеНапрямую к Arduino 5 В
CS, SCK, SI (MOSI), RESETArduino → ENC28J60можно: входы выдерживают 5 В
SO (MISO)ENC28J60 → Arduinoнужен преобразователь уровня
INTENC28J60 → Arduinoнужен преобразователь уровня
CLKOUT (если используется)ENC28J60 → Arduinoнужен преобразователь уровня
VDDпитаниетолько 3,1–3,6 В

Почему SO не годится напрямую

По табл. 16-1 даташита ENC28J60 выход SO в состоянии «1» даёт не меньше VDD − 0,7 В. Наш расчёт: при питании 3,3 В это 2,6 В. Вход ATmega328P при питании 5 В гарантированно считает единицей напряжение от 0,6 · VCC = 3,0 В (DS40002061B, табл. DC-характеристик). Между 2,6 и 3,0 В — зона, где поведение не гарантировано. Microchip прямо пишет, что микроконтроллер на 5 В в этом случае, скорее всего, окажется вне спецификации, и советует однонаправленный преобразователь уровня: 74HCT08, 74ACT125 или другую микросхему на 5 В со входами ТТЛ-уровня (разд. 2.5, рис. 2-5, 2-6).

Питание модуля

При передаче кадров ENC28J60 потребляет 160 мА типично и до 180 мА (табл. 16-1). Стабилизатор 3,3 В должен отдавать такой ток с запасом. У многих готовых модулей свой стабилизатор и вход 5 В — сверьтесь со схемой конкретного модуля, прежде чем подавать 5 В на его вывод питания.

Если плата и модуль одинаково работают от 3,3 В — например, Arduino на 3,3 В, ESP32 или STM32, — преобразователь не нужен. Что значит «вход выдерживает 5 В», объясняет термин «вывод FT (5 V tolerant)», устройство шины — статья «SPI». Сравнение с W5500 — в ответе «Что лучше для Arduino: W5500 или ENC28J60?», подробности о контроллере — в статье «Ethernet для микроконтроллера».

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

Почему ENC28J60 с Arduino на 5 В иногда работает и без преобразователя уровня?

Наш расчёт: при питании 3,3 В выход SO даёт не меньше 2,6 В, а ATmega328P при 5 В гарантированно считает единицей только напряжение от 3,0 В. Реальный порог входа обычно ниже гарантированного, поэтому на столе схема может работать, но запаса нет — сбои появятся от экземпляра, температуры или длины проводов.

Можно ли питать ENC28J60 от вывода 3.3V платы Arduino?

Только если стабилизатор платы рассчитан на ток с запасом: при передаче ENC28J60 потребляет до 180 мА. Надёжнее отдельный стабилизатор 3,3 В на модуле или на плате; многие готовые модули ENC28J60 питаются от 5 В через свой стабилизатор — проверьте схему модуля.

Какой преобразователь уровня поставить на SO?

Microchip предлагает однонаправленный буфер с входами ТТЛ-уровня, питаемый от 5 В, — например, 74HCT08 или 74ACT125. Трёхстабильный 74ACT125 удобен, если на шине SPI есть другие устройства: его выход отключается, когда ENC28J60 не выбран.

Источники

  1. Microchip. ENC28J60 Stand-Alone Ethernet Controller with SPI Interface, DS39662E — с. 1 — питание 3,1–3,6 В, входы, выдерживающие 5 В; разд. 2.5 — CS, SCK, SI и RESET выдерживают 5 В, для микроконтроллера на 5 В выходы SO и INT нужно поднять однонаправленным преобразователем уровня, например 74HCT08 или 74ACT125, рис. 2-5 и 2-6; табл. 16-1 — VOH выходов INT и SO не меньше VDD − 0,7 В, ток при передаче 160 мА типично, 180 мА наибольший
  2. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet, DS40002061B — разд. 29.2, табл. DC-характеристик — VIH не меньше 0,6·VCC при VCC 2,4–5,5 В для всех выводов, кроме XTAL1 и RESET

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