STM Урок 68. LAN. ENC28J60. Часть 10

 

 

 

 

Урок 68

 

Часть 10

 

LAN. ENC28J60

 

 

В предыдущей части нашего урока мы изучили протокол ICMP и написали код для приёма пакетов данного уровня.

 

Вызовем данную функцию  отправки IP-пакета в функции icmp_read

 

  icmp_pkt->cs=checksum((void*)icmp_pkt,len);

  ip_send(frame,len+sizeof(ip_pkt_ptr));

}

 

Вернёмся теперь в функцию ip_send и установим указатель на пакет IP

 

uint8_t res=0;

ip_pkt_ptr *ip_pkt = (void*)frame->data;

 

Заполним заголовок IP

 

ip_pkt_ptr *ip_pkt = (void*)frame->data;

//Заполним заголовок пакета IP

ip_pkt->len=be16toword(len);

ip_pkt->fl_frg_of=0;

ip_pkt->ttl=128;

ip_pkt->cs = 0;

memcpy(ip_pkt->ipaddr_dst,ip_pkt->ipaddr_src,4);

memcpy(ip_pkt->ipaddr_src,ipaddr,4);

ip_pkt->cs = checksum((void*)ip_pkt,sizeof(ip_pkt_ptr));

 

 

И отправим фрейм

 

ip_pkt->cs = checksum((void*)ip_pkt,sizeof(ip_pkt_ptr));

//отправим фрейм

eth_send(frame,len);

return res;

 

Соберём код. Прошьём контроллер. Посмотрим результат

 

image41

 

Всё работает!

Остальные протоколы мы поизучаем когда-нибудь позже, а то уже и так наше изучение затянулось. Возможно, будет UDP, TCP, DHCP.

А пока всем творческих успехов. Всем спасибо за внимание!

 

Предыдущая часть Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Техническая документация:

Документация на микросхему ENC28J60

Перечень ошибок ENC28J60 (Errata)

 

 

Отладочную плату можно приобрести здесь STM32F103C8T6

Ethernet LAN Сетевой Модуль можно купить здесь ENC28J60 Ethernet LAN

Переходник USB to TTL можно приобрести здесь USB to TTL ftdi ft232rl

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM LAN. ENC28J60

 

4 комментария на “STM Урок 68. LAN. ENC28J60. Часть 10
  1. Слава:

    Здравствуйте! Переделывал этот проект под stm32f3 discovery, но не удачно — горит светодиод ошбки. Как-то неправильно конфигурируется SPI1.Могли бы вы помочь разобраться?

    • Здравствуйте!
      Да я вроде уже помог, записав и выложив данную серию уроков.

      А зачем переделывать?

      Лучше начните заново и создайте проект и напишите его. Причём быстрее даже получится.

      • Слава:

        Я переделал проект под stm32f303VCT — настроил переферию через CubeMX.

        Проект запустился , ловились пакеты в WIreShark от enc28j60 ,работала утилита ping, arp- запросы.Проект с udp-протоколом не заработал. Откат к 68 уроку не помог. 

        Постоянно загорается светодиод ошибки. Мак адрес устройства не виден компьютеру. То есть начальная инициализация модуля enc28j60 не проходит.

        Аналогичный проект на AVR отлично работает, это работа протоколов ip и udp.

         

  2. Vi Thanh:

    Спасибо большой. Всё работает,я работал STM32F4

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*