Авторизация


...

Кто на сайте?

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

  • orroughalis

Статистика

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

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

  Корпус

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

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

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

 

 

 

При использовании микроконтроллера с 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

Велоспидометр

17-04-2013 Александр Маюнов

Велоспидометр

  Не для кого не секрет, что велосипедист передвигающийся по населенной местности особенно если он спешит от пункта А в пункт Б, не имеет перед глазами: часов, спидометра, одометра, и термометра. Для сельской местности это врятли создало бы кому-нибудь неудобство, но...

Программная реализация BAM (Binary Angle Modulation).

25-04-2013 Александр Беглецов

Программная реализация BAM (Binary Angle Modulation).

   В данной статье рассмотрен алгоритм BAM «двоичного управления положением бита»   который во многих случаях может заменить общеизвестный ШИМ (PWM), задействуя при этом значительно меньше процессорной мощности.          

Светодиодное табло.

02-11-2011 Sergey Roslik

Светодиодное табло.

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

Программирование c нуля в AVRStudio 5 (ч.5)

14-03-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.5)

 Сегодня рассмотрим программу “бегущих огней” и “бегущих теней”. Примеры “бегущих огней” можно найти почти в любой обучающей литературе. Чтобы получить “бегущие огни” на выходах порта, нужно последовательно переключать один бит.      “Бегущая тень” получается при инверсии “бегущих огней”. В принципе...


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

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