Авторизация


...

Кто на сайте?

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

Статистика

-Посетители : 23007
-Материалы : 209

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

  DUB-E100

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

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

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

 

Инициализация enc28j60.

  1. Настраиваем модуль SPI в микроконтроллере .
  2. Настраиваем размер FIFO для приема данных.Регистры ERXST, ERXND
  3. Устанавливаем указатель FIFO , регистр ERXRDPT
  4. Фильтрацию пакетов оставляем по умалчиванию
  5. Очищаем регистр MACON2 .
  6. Устанавливаем MACON1.MARXEN   (разрешить прием данных MAC)
  7. Устанавливаем MACON1.RXPAUS и MACON1.TXPAUS  (аппаратное управление потоком)
  8. Настраиваем биты PADCFG, TXCRCEN в MACON3. (выравниваем пакеты 60 байт, добавляем контрольную сумму).
  9. Настраиваем максимальный  размер фрейма (кадра). Регистр MAMXF
  10. Настраиваем интервал между фреймами .Регистры MABBIPG, MAIPG
  11. Устанавливаем MAC-адрес.Регистры MAADR 0-5.
  12. Включаем бит PHCON2.HDLDIS.
  13. Настраиваем индикацию светодиодов . Регистры PHLCON.
  14. Устанавливаем биты PHCON1.PDPXMD и MACON3.FULDPX (полнодуплексный режим).
  15. Разрешаем прием пакетов.Регистр ECON1_RXEN.

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

Попробуем принять пакет.

В первую очередь после инициализации ENC28J60 мы должны проверить есть ли вообще принятый пакет,если он есть считываем его и обрабатываем . Для этих целей служит регистр EPKTCNT , в нем хранится значение  принятых  пакетов.После прочтения  необходимо уменьшить значение принятых пакетов установкой бита PKTDEC в регистре ECON2 , тем самым освобождая это место для новых пакетов.Все пакеты располагаются в отведенной нами зоне кольцевого буфера.Естественно мы должны знать а по какому адресу в буфера находится необходимый нам пакет.Первоначально мы считываем адрес пакета из регистра ERXRDPT , а после прочтения пакета ,  записываем в него новое значение (адрес следующего пакета ).

Рассмотрим ПП принятия пакета .

В начале проверяем в регистре ERKTCNT наличие пакетов.Регистр находится в первом банке , выбираем первый банк , указываем его адрес (0Х19) , читаем и проверяем наличие принятых пакетов.В случае отсутствия таковых возвращаемся.Если это первый пакет то считываем адрес пакета из регистра ERXRDPT.

 

 

 

Здесь читаем регистр ERXRDPT старший и младший байты , потом записываем эти значения в указатель адреса пакета ERDPT (адрес от куда мы будем забирать пакет).

 

 

 

Принимаем заголовок пакета 8 байт в ОЗУ с адреса 0100H.

 

 

 

Пропускаем первый байт и считываем  из ОЗУ микроконтроллера   адрес следующего пакета  (2,3 байты) и длину принятого пакета 3,4 байты (иначе откуда мы узнаем сколько нужно прочитать байт ?).Флаги (5,6 байты) пока не рассматриваем .Далее принимаем сам пакет и записываем его в ОЗУ микроконтроллера начиная с адреса 0200H.

Записываем адрес следующего пакета.

 

 

 

Результат:

Мы отправили пакет "ping" (обведено красным цветом).

 

 

И получили его в памяти ПИКа (с адреса 0200H).

По адресу 1001h,1002h адрес следующего пакета,1003h,1004h длина текущего пакета,и два байта флаги.

 

 

 

Последние четыре байта  это контрольная сумма .

На этом первая часть статьи закончена.  Отправка пакетов и реализация протоколов будет в следующих статьях.

Ссылки:

Вопросы можно задать на форуме.

Данный проект для pic18f46k20 можно скачать здесь 

Ссылка для скачивания доступна только авторизованным пользователям сайта !
.

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

Prev Next

ПП приема кода JVC с ИК пульта

22-05-2011 Super User

ПП приема кода JVC с ИК пульта

Один из авторов этой статьи столкнулся с проблемой поиска оригинального пульта JVC-RM362… Удавалось найти только китайские пульты, которые не удовлетворяли требованиям… Зато необходимый оригинальный пульт был найдет у второго автора данной статьи и было решено отсканировать его сигналы, а затем...

Простая программа для разводки печатных плат Sprint-Layout с дружеств…

03-06-2012 Игорь Безверхний

Простая программа для разводки печатных плат  Sprint-Layout с дружественным интерфейсом (часть 1)

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

Блок управления для духовки

11-03-2017 Super User

Блок управления  для духовки

  В этой статье автор представляет блок управления духовкой с поддержкой температуры в пределах  0-300 гр.С .  Описано очень подробно и предоставлены все материалы для повторения данной конструкции, включая  печатную плату  в 4-х форматах: DipTrace, Lay6, PDF, Gerber и мн....

Вычисляемый переход .

30-05-2012 Super User

Для чтения памяти программ  применяют,   в том числе и вычисляемый переход. Суть его заключается в том , что при выполнении команды  ADDWF PCL  происходит сложение содержимого регистров W и младшего регистра счетчика команд (PC). В результате программа «перескакивает» на выполнения...


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

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