KSZ8863 STM32 LwIP Связка пример

В этой статье я предоставляю 100% рабочие схему и исходные коды для STM32F4x7 для работы в связке STM32 + KSZ8863RLLI + HAL + LwIP.

Микросхема KSZ8863 от Microchip - двухпортовый PHY контроллер Ethernet'а. Умеет работать как standalone сетевой коммутатор 10/100 Мб. Современный, быстрый, надежный чип. Меня особенно привлекло то, что в нем есть функция MDI-X, это когда контроллер автоматически распознает, какой патч-корд к нему подключили, прямой или кроссовер. Он автоматически переворачивает пары TX/RX под любой кабель. Это особенно удобно, когда вы подключаете несколько устройств между собой обычными прямыми патч-кордами.

Особенно приятно, что есть KSZ8863RLL (бытовая версия) и KSZ8863RLLI (промышленная версия), которые по интерфейсу RMII можно подключить к STM32Fxx7, STM32Fxx9 (а так же к их китайским собратьям, поддерживающим ETH по RMII). Буква R в наименовании KSZ8863R означает, что микросхема предназначена для подключения по RMII. Так же существуют другие разновидности, например KSZ8863M или KSZ8863F - с интерфейсом MII. Кроме того, во всех этих чипах есть интерфейсы SPI и I2C. Но я сильно не вникал, т.к. мне нужны RMII и быстрая разработка на HAL и LwIP.

Прежде всего, стоит отметить, что при интенсивной работе двух Ethernet портов, микросхема греется до 42 градусов безо всякого теплоотвода. Это гораздо интереснее, чем лепить рядом 2 физики типа ENC28J60, которые разогреются до 50..60 градусов. И по сравнению с прочими известными мне ETHERNET PHY, эта самая "холодная".

Для того, чтобы оценить эту микросхему, мне потребовалось изготовить собственную испытательную плату, состоящую из микроконтроллера и сетёвки. И я сделал такую плату.

Но запустилась плата у меня не сразу. Часа два я не мог понять, в чем проблема: с непрошитым МК чип отлично работает как свитч, стоит залить прошивку (HALокуб с LwIP), гаснут светики на разъемах, встаёт кварц. Самое трудное при первом запуске неизвестного чипа - это то, что ты не понимаешь, в железе беда, или в софте, или в том и другом. Я начал нагугливать то да сё. И наткнулся на пост в STM Community, типа "не забудьте отпустить ножку RESET". И тут я кааак понял. Подал 3.3В на RST и все просто заработало, запинговалось. Я тыкал патч-корд и в один, и в другой разъем, и пинги шли, и линк был божественен.

Ну а теперь мне остается поделиться с вами схемой. Вот она.

KSZ8863 STM32 Schematic

Скачивайте по ссылке (клик).

Рабочий проект для Keil на HAL (нахальный) так же публикую по этой ссылке (клик).

В этом проекте KSZ8863 может пинговаться (ICMP) по статическому IP адресу 192.168.66.191. USB порт настроен как Virtual COM Port и поднят Modbus RTU по этому виртуальному COM Port'у. Через Modbus мы наблюдали график изменения температуры чипа в тех или иных условиях.

Наш коллега Alex Smith в своем проекте грамотно настроил LWIP для работы с двумя PHY, исходники lwip  с рабочим кодом здесь

Желающие приобрести платы, пишите в телегу (клик)

Обсудить статью можно на нашем телеграмм канале (клик)