Авторизация


...

Кто на сайте?

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

  • heydeeste

Статистика

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

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

   AV-S2G4B

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

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

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

 

Инициализация 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

Некоторые особенности чтения схем и ремонта радиоэлектронной аппаратур…

20-12-2011 Игорь Безверхний

Некоторые особенности чтения схем и ремонта радиоэлектронной аппаратуры

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

Cтек в PIC микроконтроллерах 18 серии.

14-05-2011 Super User

Микроконтроллеры  семейства PIC18XXXX  имеют стек глубиной в 31 адрес. Стек представляет собой  адреса возврата из подпрограммы или обработки прерываний. При выполнении команд CALL, RCALL, а так же при переходе на выполнение ПП обработки прерываний значение счетчика команд PC помещается в...

Термометр с выводом показаний на экран телевизора

12-08-2011 Николай Викторов

Термометр с выводом показаний на экран телевизора

Для тех  кто смотрит телевизор со спутника пригодится , на мой взгляд , интересная конструкция на микроконтроллере PIC18F25K20. Она интересна тем , что выводит температуру с двух датчиков DS18B20 на проходящий видеосигнал (PAL) в виде бегущей строки (сама температура отображается...

Контроллер радиолюбительского репитера RR1Z

07-02-2016 Иван Шевченко (R1ZK)

Контроллер радиолюбительского репитера RR1Z

В данной статье  рассматривается контроллер  радиолюбительского репитера, который был разработан по просьбе радиолюбителей клуба «Мурманск» и предназначен для установки в составе репитера RR1Z.  Устройство работает без нареканий с марта 2015 года. Автором предоставлены все необходимые для повторения материалы включая исходник...


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

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