Авторизация


...

Кто на сайте?

Сейчас 83 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 26605
-Материалы : 210

Пользователь сайта продает...

  MB913 C-01

Пользователь сайта покупает...

Подключение ENC28J60 + PIC к локальной сети .

Автор: Николай Викторов Просмотров: 17448

 

 

 

При использовании микроконтроллера с 5 вольтовым питанием  необходимо согласовать  уровни ,  на пример как показано в даташите.

 

 

 

 

 

 

 

 

 

 

 

 

  В  конечном итоге попробуем реализовать устройство удаленного управления и контроля (мониторинга) . В него предполагается внести функции контроля напряжения , температуры ,цифровые входа сигнализации и управления нагрузками. Все это будет работать по WEB интерфейсу , что в свою очередь очень удобно , нет необходимости в дополнительном ПО.

Сразу хочу определиться. Я не «крутой спец» в данной теме и практически сам постепенно разбираюсь в деталях , хотя и собирал различные конструкции (на СИ) в основном из  доработанных примеров. Так что прошу сильно не ругать. Но в любом случае все , что здесь будет написано (программа ) в начале проверяется  в «железе». Если будут замечания , или предложения , то пожалуйста на форум…

В этой части статьи мы дойдем  до приема пакетов, что уже позволит тем , кто более менее  разбирается в протоколах TCP/IP написать  ПП  для своей задачи.

Ну что ж начнем :

И начнем  с отладочной платы  , которую я использую для тестирования . Хотя это могут быть и другие платы или готовые модули на базе Ethernet контроллера NC28J60 (MM-ENC28J60 на пример ) или собственные , главное что бы они соответствовали рекомендаций производителя . Но лучше конечно собрать такую же плату, тем более что она не столько отладочная , сколько в конечном итоге должна стать законченным устройством.

 

 

 

 

 

Как видно из фотографий плата собрана из одностороннего текстолита и имеет минимальное количество деталей . Все свободные "пины" портов выведены на разъемы , к которым в последствии мы будем подключать различные датчики и управления нагрузками. Разъем RG-45 с интегрированными трансформаторами , полностью совместимый с контроллером enc28j60 . На плате установлен стабилизатор на 3.3 вольта , для питания как самого адаптера enc28j60 ,так и микроконтроллера PIC18F46K20 .Ток потребления enc28j60 приличный  - 250 мА . В начале я подумал , что мне попалась бракованная партия т.к.  сильно греются (температуру не измерял , думаю градусов 40 есть ) . Потом  выяснилось что это нормальное состояние для этой микросхемы .

Ну и теперь  что нам необходимо знать о enc28j60 , что бы понять как все это работает.

Микросхемы enc28j60 выпускаются в разных корпусах  (DIP, SOIC и QFN) и назначение выводов могут отличаться. Я использовал в SOIC-28 , правда они чуть дороже чем DIP . Схему подключения , печатную плату можно будет скачать в конце статьи по ссылке ,  рассматривать технические характеристики будем частично , т.е. только то , что непосредственно нам необходимо . Ниже , на рисунке показана упрощенная архитектура ethernet-контроллера  и связь с PICом ,обмен данными   производится   по протоколу  SPI , прерывания не задействованы и соответственно в схеме не указаны .

 

 

 

  1. TX/RX Bufer -буфер , размером 8КБ , большая часть используется для приема пакетов ,другая  для передачи.
  2. MAC -  MAC (Medium Access Controller) модуль, который реализует IEEE 802.3 MAC-логики.
  3. PHY - (Physical Layer) модуль, для работы с витой парой (интерфейс , физический уровень) .

 

Организация памяти:

Вся память в ENC28J60 реализован в виде статической оперативной памяти. Есть три типа памяти в ENC28J60:

  • регистры управления
  • буфер Ethernet памяти
  • PHY регистры

 

 

 

Управляющие регистры - находятся в  4 банках , в каждом по 32 регистра (0х00-0x1F) ,  последние 5 регистров  в каждом банке одни и те же , т.е. при обращении к этим регистрам не нужно переключать банки.

Ethernet буфер (0х00-0FFF) - (8KB) буфер.

PHY регистры - регистры состояния, управления и конфигурирования модуля PHY . Прямого доступа к этим регистрам нет, к ним можно обращаться только через регистры Media Independent Interface (MII), реализованных в MAC.

 

Регистры управления.

На стадии "изготовления " программы нам необходимо постоянно "подглядывать"  где какой регистр расположен и за что отвечает, для удобства подкрасим регистры  и выделим по группам . Регистры прерывания и DMA использовать не будем , как и встроенный тест. По большей части к регистрам будем обращаемся только в процессе инициализации , когда настраиваем ENC28J60.

 

 

 

 

Повторюсь , что последними 5 регистрами можно работать не переключая банки .При обращении к другим регистрам в начале необходимо указать в каком банке они находиться . Разберем назначение отдельных регистров.

Банк0. 2 байта L и H (младший и старший).

  • ERDPT    (L/H) - указатель чтения буфера .      
  • EWRPT   (L/H) - указатель записи буфера.
  • ETXST (L/H) - начало  отправляемого пакета.
  • ETXND (L/H) - конец отправляемого пакета.
  • ERXST (L/H) - начало кольцевого буфера
  • ERXND (L/H) - конец кольцевого буфера.
  • ERXRDPT(L/H) - указатель кольцевого буфера .
  • ERXWRPT(L/H) - указатель кольцевого буфера .
  • ESTAT  - основной регистр (флаги)
  • ECON2 - основной регистр (авто инкрементирование указателей чтения и записи,уменьшение счётчика пакетов....)
  • ECON1 - основной регистр (выбор банка,разрешение прием данных ,разрешение отправка пакетов....)

Банк1

  • EPKTCNT - основной регистр (указатель (счетчик)принятых пакетов).

Банк2

  • MACON1- регистр MAC (управление потоком ,разрешение приема пакетов...)
  • MACON2- регистр MAC
  • MACON3- регистр MAC (режим работы,контрольная сумма,проверка длины фреймов...)
  • MACON4- регистр MAC
  • MABBIPG- регистр MAC (задержка между отправляемыми пакетами - 0x15 в полнодуплексном режиме)
  • MAIPGL - регистр MAC   (задержка между отправляемыми пакетами-0х12 рекомендация )
  • MAIPGH - регистр MAC  (задержка между отправляемыми пакетами-0х0C рекомендация )
  • MACLCON1 -регистр MAC (задержка  при возникновении коллизии= по умолчанию.)
  • MACLCON2 -регистр MAC (задержка  при возникновении коллизии= по умолчанию.)
  • MAMXF(L/H)-максимальная длина пакетов (прием , передача)
  • MICON  - регистр MII  (rezet MII)
  • MICMD - регистр MII (управление , операции с PHY) .
  • MIREGADR-регистр MII(указатель регистра PHY с которым будем работать)
  • MIWR (L/H) - регистр MII (данные для записи  в  регистр PHY)
  • MIRD(L/H) - регистр MII ( чтение данных из регистра PHY)

Банк3

  • MAADR1 - MAC адрес , байт № 5 .
  • MAADR0 - MAC адрес , байт № 6
  • MAADR3 - MAC адрес , байт № 3
  • MAADR2 - MAC адрес , байт № 4
  • MAADR5 - MAC адрес , байт № 1
  • MAADR4 - MAC адрес , байт № 2
  • MISTAT  - регистр MII (проверка занятости PHY регистра....)
  • EREVID - номер ревизии enc28J60
  • ECOCON - управление CLKOUT
      Регистры PHY:

Как отмечалось ранее , прямого доступа к этим регистрам нет. Для того что бы сделать с ними какие либо действия необходимо обратиться к регистрам MII, которые и созданы как раз для этих целей .Процедура обращения к регистрам следующая:
Чтение:

  • Указываем адрес регистра к которому мы обращаемся в MIREGADR.
  • Устанавливаем бит MIIRD в регистре MICMD.
  • Ждем сброса бита BUSY в регистре MISTAT.
  • Сбрасываем бит MIIRD в регистре MICMD.
  • Читаем данные из регистров MIRDL и MIRDH

 

Запись:

  • Указываем адрес регистра к которому мы обращаемся в MIREGADR.
  • Записываем данные в регистры MIWRL (младший байт) и после младшего MIWRH (старший байт).
  • Ждем сброса бита BUSY в регистре MISTAT.

 

Регистры PHY:

  • 0х00  PHCON1 (управление режимом работы  PHY)
  • 0х01  PHSTAT  (статус PHY)
  • 0х02  PHID1    (идентификатор PHY)
  • 0х02  PHID2 (идентификатор PHY (остаток))
  • 0х10  PHCON2 (управление режимом  работы  PHY)
  • 0х11  PHSTAT2 (статус PHY)
  • 0х12  PHIE      (управления прерываниями PHY)
  • 0х12  PHIR      (флаги прерывания PHY)
  • 0x14  PHLCON (управление светодиодами)

С регистрами более менее понятно  , а что дальше ? Как с ними работать?

 

Случайные статьи....

Prev Next

Автомобильный преобразователь для ноутбука

14-10-2015 Александр Милевский

Автомобильный преобразователь для ноутбука

    Необходимо было иметь зарядное устройство для ноутбука в машине. Хотя аккумулятор ноутбука и держит почти 3 часа, но часто этого не хватало.  Порылся в Интернете, очень понравилось устройство. https://www.elektormagazine.com/magazine/elektor-200601/18157. (в приложение статья из журнала в pdf). Ничего не надо выдумывать....

Универсальный цифровой спидометр

09-03-2011 wws63

Универсальный цифровой спидометр

  Предлагаемый ниже автомобильный цифровой спидометр предназначен для установки в автомобили со штатными аналоговыми спидометрами, управляемые электрическими импульсами, поступающими от установленных датчиков скорости. Также возможно использование такого устройства в случае самостоятельной установки на автомобиль  подобных датчиков.    

Автомобильный преобразователь для ноутбука

14-10-2015 Александр Милевский

Автомобильный преобразователь для ноутбука

    Необходимо было иметь зарядное устройство для ноутбука в машине. Хотя аккумулятор ноутбука и держит почти 3 часа, но часто этого не хватало.  Порылся в Интернете, очень понравилось устройство. https://www.elektormagazine.com/magazine/elektor-200601/18157. (в приложение статья из журнала в pdf). Ничего не надо выдумывать....

ПП бегущей строки для LCD (ЖК) индикатора.

03-06-2012 Super User

  Ниже предоставлен один из способов вывода информации  на LCD (ЖКИ) индикатор  в виде бегущей строки. Коды (0-255) таблицы знакогенератора, прошитые в индикатор,  обычно совпадают с  кодами  ASCII.   По этому достаточно прописать необходимую текстовую информацию как показано в примере (в...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru