Nano не может получить ответ от ENC28J60 Ethernet Shield

Мой Arduino Nano не может получить ответ от моего нового ENC28J60 Ethernet Shield — я не могу заставить работать какие-либо примеры библиотек. Используя библиотеку UIPEthernet и запустив пример EchoServer с включенным ведением журнала, я получаю:

ENC28J60::init DEBUG:csPin = 10
ENC28J60::init DEBUG:miso = 12
ENC28J60::init DEBUG:mosi = 11
ENC28J60::init DEBUG:sck = 13
ENC28J60::init DEBUG:Use Native hardware SPI
Enc28J60Network::writeOp(uint8_t op, uint8_t address, uint8_t data) DEBUG_V3:Function started
ENC28J60::init DEBUG_V3:Before readOp(ENC28J60_READ_CTRL_REG, ESTAT)
Enc28J60Network::readOp(uint8_t op, uint8_t address) DEBUG_V3:Function started
...

поэтому он отлично вписывается в функцию Enc28J60Network::init. Но вскоре после этого он выполняет phyWrite, пытается прочитать ответ, а затем истекает время ожидания.

ENC28J60::init DEBUG_V3:Before phyWrite(PHCON2, PHCON2_HDLDIS)
Enc28J60Network::phyWrite(uint8_t address, uint16_t data) DEBUG_V3:Function started
... lots of attempts to read
Enc28J60Network::phyWrite ERROR:TIMEOUT !!

А потом все начинает давать сбои и никогда не становится лучше. Я также попробовал библиотеку EtherCard, но она не работает точно так же.

Я устанавливаю осциллограф на контакты SPI и вижу разумные вещи: активность на SCK и MOSI, ничего на MISO, и SS (контакт 10) переключается нормально — и экран утверждает, что использует контакт 10 (я кратко попробовал контакт 8, когда я в замешательстве крутился, но и здесь не повезло).

Итак, на данный момент либо я что-то не понимаю, либо щит не работает.

Обновление: ранее я сильно подозревал линию SCK, потому что она показывала очень плохой сигнал на моем осциллографе. Но оказалось, что это плохое заземление зонда прицела, и сигнал был на самом деле в порядке, отвлекающий маневр. Спасибо @Majenko за то, что обратил на это мое внимание.

Обновление 2. После того, как ни при каких обстоятельствах не было получено ответа SPI от щита, моя рабочая гипотеза состоит в том, что это был DOA. Я вернулся к своему UNO с W5100: все работает нормально. Я заказал дополнительные экраны Nano ethernet, они прибудут через неделю или две, поэтому я попробую их, а затем предоставлю обновления/ответы.

, 👍1

Обсуждение

Какая пропускная способность у вашего прицела? Это выглядит ужасно низким разрешением, и такой результат я ожидал от осциллографа с недостаточной пропускной способностью для правильного отображения формы сигнала., @Majenko

кабель Ethernet подключен?, @Juraj

@Majenko хорошая мысль - и спасибо за указатель. Я не заземлил щуп прицела должным образом, поэтому исправил, и линия SCK теперь выглядит прекрасно. Ой, ошибка новичка. Я отредактирую это вне вопроса., @SusanW

@Juraj да, все подключено - и у меня на шилде и на хабе горит зеленый свет, так что я думаю, что там все хорошо., @SusanW

Какой ток может подать ваш 3,3 В на ENC28J60 Ethernet Shield? В техническом паспорте говорится, что он использует 120 мА, когда он «активен, не передавая пакеты Ethernet». При «Передаче пакетов Ethernet» требуется до 180 мА., @VE7JRO

@VE7JRO о, я никогда не думал об этом ... Я потратил целый день, пытаясь .... :-) хорошо, сейчас проверю ..., @SusanW

@VE7JRO Ваше предложение, похоже, подкреплено этим обсуждением: https://forum.arduino.cc/index.php?topic=452822.0 ... Я не нашел ничего особенного для тестирования: 3,3-вольтовый вывод моего nano стабилен. , но это может быть потому, что щит не потребляет энергию, когда видит, что питание такое слабое. Я сейчас строю независимый источник питания 3,3 В..., @SusanW

@ VE7JRO Я только что подключил источник питания 3,3 В 2 А к линии 3,3 В Nano, чтобы дать ему больше энергии - без изменений. Я думаю, что можно просто подключить питание прямо к нему, хотя линия 3,3 В номинально является выходом (я прав?); Я считаю, что в любом случае мне определенно нужно будет увеличить его, но я начинаю чувствовать, что щит - это DOA. Интересно, его работа со слабой мощностью убила его....? кажется немного слабым, если это так., @SusanW

Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (https://chat.stackexchange.com/rooms/97820/discussion-on-question-by-susanw-nano-cant-get-reply-from-enc28j60-ethernet-shi) ., @VE7JRO

Возможно, это могло бы принести какое-то решение. https://www.микроконтроллер.net/topic/477142, @Riad

@Riad, что случилось с твоим хорошим ответом?, @SusanW

@Riad Мой щит совпадает с тем, что на этом форуме, и имеет неверную связь. Я не пытался это исправить, потому что это сложно, и у меня сейчас есть другие щиты. Но я очень уверен, что это ответ. Если вы хотите получить кредит, пожалуйста, напишите ответ; в противном случае я сделаю это сам., @SusanW


2 ответа


Лучший ответ:

0

Спасибо @Riad, опубликовавшему это в качестве комментария. Проблема, по-видимому, связана с конструктивным дефектом Ethernet-щита DK ectronics версии 1.0.

Возможно, это поможет найти решение. https://www.mikrocontroller.net/topic/477142

Сайт на немецком языке, поэтому вот краткий перевод основных частей:

Я купил ENC28J60 для Arduino Nano, но он не отвечает с запрограммированного IP-адреса.

На нижней стороне экрана имеется надпись «NANO Ethernet Shield V1.0 DK ectronics» (орфографическая ошибка в оригинале). Там между контактами D11 и D12 внизу есть переходное отверстие, отсутствует на (другом) рабочем щите. Это сквозное соединение соединяет линию D12 с GND от AMS1117 сверху (легко проверить D12 на GND с помощью мультиметра). Если с вашим шилдом так, то проблема в этом: надо просто вырезать сквозное соединение. У меня есть Сделайте это с помощью сверла диаметром 1 мм, поместив верхний слой меди в через очень осторожно (действительно осторожно!) Отшлифуйте его. Если вы просверлите слишком глубоко, вы полностью разорвете соединение D12 и, возможно, припаять новый провод. Продолжайте проверять D12 и GND на непрерывность, чтобы увидеть, достаточно ли вы отшлифовали. Работайте очень аккуратно!

После того, как я сделал это и попробовал пример TCP-сервера в UIPEthernet библиотеки на Arduino, шилд был доступен.

-- Кристоф К.

Я еще не пробовал вносить изменения, описанные выше, потому что они неудобны, а у меня есть новая партия рабочих щитов. Но мое устройство точно такое, как описано Кристофом и его фотографиями, и описание неисправности совпадает с моим.

,

2

Шилд ENC28j60 для Nano имеет сброс микросхемы ENC28j60 на контакте 7 шилда/Nano. Попробуйте установить контакт 7 ВЫСОКИЙ.

,

Если это решит проблему, будет весело... ок, попробую на выходных - увы, я в отъезде. Итак, мне просто нужно добавить: pinMode(7, OUTPUT); digitalWrite(7, HIGH); при установке? Хм, интересно, почему в примерах библиотеки UIP/EtherCard этого нет. Возможно сброс нестандартный, или там (слишком) слабая подтяжка?, @SusanW

@SusanW, помогло?, @Juraj

нет, боюсь, я добавил pinMode(7, OUTPUT); цифровая запись (7, НИЗКИЙ); задержка(1000); pinMode(7, ВЫВОД); digitalWrite(7, HIGH); просто для того, чтобы дать ему наилучшие возможные шансы, но время ожидания при чтении все еще истекает, а строка MISO молчит. Что раздражает, потому что то, что вы предложили, было бы идеальным ответом - и, читая, кажется, что сброс вывода 7 - это малоизвестная функция. В любом случае, я заказал еще несколько щитов, которые должны прибыть со дня на день, так что я смогу исключить неисправность платы как фактор. Я буду держать вас в курсе... Спасибо!, @SusanW

@SusanW, не сбрасывай. только установите контакт ВЫСОКИЙ. сделайте это как сначала в setup()., @Juraj

Да, я попробовал это первым...., @SusanW

Ок, новые щиты подвернулись - и заработало с первого раза. У нас есть пинги и TCP. И по иронии судьбы, он работает даже без того, чтобы я устанавливал высокий уровень на 7-м выводе. Другая плата должна быть мертва. Хм ... не могли бы вы добавить это как «альтернативное объяснение» к вашему ответу или что-то в этом роде, тогда я могу пометить это как принятый ответ. (Я мог бы сам добавить/принять ответ о том, что «Плата была мертва», но это скрыло бы ваш более полезный ответ!), @SusanW

@SusanW, по крайней мере, вы знаете, что не можете использовать контакт 7, или вы должны согнуть его на щите, чтобы использовать его на Nano. Или вы можете использовать его для сброса щита, но я не нашел его полезным с модулем, который у меня есть., @Juraj

Это работает, если контакт 7 вводится на Nano, потому что контакт сброса ENC28j60 имеет подтяжку., @Juraj

Я написал ответ на основе ссылки Риада о неисправных экранах Ethernet, что соответствует моей проблеме. Но мне плохо, потому что ваш ответ информативен и полезен. Если есть лучший способ получить объяснение *"Сьюзен купила мусорную плату на eBay"*, дайте мне знать! Спасибо., @SusanW