Перейти к содержанию
    

STM32f407VEt6 + ethernet + LWIP плата стартует только через отладку после третьего нажатия RUN (Keil+CubeMX)

Доброго времени суток!
Пишу проект под stm32f407vet6 пробую подключать ethernet, собираю пробный проект, в котором только LWIP + диод, чтобы пропинговать, но после прошивки плата сама не стартует. Только из дебага и с 3го нажатия RUN.
На плате Nucleo stm32f429 все работает и стартует(там встроенный phy).
Код программы привожу. Пингуется через раз, один-два пинга из четырех.

Пробовал разные версии куба.

Пробовал ставить оптимизацию 0

IP статический, в системе и в программе определен верно. 

 

#include "main.h"
#include "lwip.h"
 
extern struct netif gnetif ;
 
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
 
int main(void)
{
 HAL_Init();
 
  
  SystemClock_Config();
 
  MX_GPIO_Init();
  MX_LWIP_Init();
 
  while (1)
  {
    
    ethernetif_input(&gnetif);
    
    sys_check_timeouts();
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
    HAL_Delay(10);
  
  }
  
}

Вопросы: почему плата не стартует сама, как сделать чтобы стартовала? 
Если по более конкретным вопросам - как происходит отправка данных по eth на самом низком уровне? Чтобы вопрос был более понятен:
Для другой физике, в её драйвере есть функция

 
1
enc28j60_send_packet((uint8_t *) uip_buf, uip_len);

А для моей dp83848 такой функции нет.
Как правильно реализовывать отправку кадров eth с ней? Как правильно инициализировать?
Хочу попытаться собрать на более простом uip, если кто знает, или  есть примеры, напишите, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему вы это считаете программной проблемой? Аппаратура ваша или покупная отладка, не совсем ясно.

407 проц +phy на MII при правильном подключении пинг стартует из "коробки". Тоесть собранный кубом проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, stm32_Junior сказал:

. . . . Для другой физике, в её драйвере есть функция

 
1
enc28j60_send_packet((uint8_t *) uip_buf, uip_len);

А для моей dp83848 такой функции нет.  . . . 

Вы путаете. В STM32 интегрированный контроллер Ethernet, + внешний IC трансивера ("физика сопряжени с линией")  dp83848

enc28j60 - внешний по отношению к STM модуль, подключаемый через интерфейс SPI, на специализированном чипе, со встроенной "физикой".

Судя по datasheet, трансивер dp83848 имеет пару десятков регистров конфигурации и требует настройки, а также контроля статуса в процессе работы. 

Если в Cube нет поддержки варинта API с dp83848, то быстро что-либо "прилепить" или взять со стороны не получится, IMHO, тк работу с трансивером надо встраивать в драйвер.

http://stm32f4-discovery.net/2015/02/library-52-ethernet-peripheral-on-stm32f4xx/     Library 52- Ethernet peripheral on STM32F4xx

Цитата

. . . . плата сама не стартует . . . 

она "стартует", но код, который в нее прописали в виде программы, или не выдал диагностики, или вошел в зацикл, или вообще отсутствует.

ps  работа контроллера Ethernet порядка на 2-3 сложнее, чем USART.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dp83848  Это обычная MII / RMII PHY

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

Если нужны какие-то особые режимы, тогда да надо писать и настраивать PHY.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, mitya1698 сказал:

dp83848  Это обычная MII / RMII PHY

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

Если нужны какие-то особые режимы, тогда да надо писать и настраивать PHY.

 

Наверное так, трансиверный интерфейс очевидно более-менее стандартизирован "по базе".

ТС надо покурить интернет по этой теме. И по Cube тоже.

https://community.st.com/s/question/0D53W00001UyDfJSAV/stm32f407-lwip-dp83848-cannot-ping-why  STM32F407 + LwIP + DP83848 = Cannot Ping - Why?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 20.01.2023 в 20:11, k155la3 сказал:

Вы путаете. В STM32 интегрированный контроллер Ethernet, + внешний IC трансивера ("физика сопряжени с линией")  dp83848

enc28j60 - внешний по отношению к STM модуль, подключаемый через интерфейс SPI, на специализированном чипе, со встроенной "физикой".

Судя по datasheet, трансивер dp83848 имеет пару десятков регистров конфигурации и требует настройки, а также контроля статуса в процессе работы. 

Если в Cube нет поддержки варинта API с dp83848, то быстро что-либо "прилепить" или взять со стороны не получится, IMHO, тк работу с трансивером надо встраивать в драйвер.

http://stm32f4-discovery.net/2015/02/library-52-ethernet-peripheral-on-stm32f4xx/     Library 52- Ethernet peripheral on STM32F4xx

она "стартует", но код, который в нее прописали в виде программы, или не выдал диагностики, или вошел в зацикл, или вообще отсутствует.

ps  работа контроллера Ethernet порядка на 2-3 сложнее, чем USART.

Спасибо за ответ! Разобрался с пингом на lwip  - дело было в проводах, сделал покороче - теперь пингует хорошо. Осталось разобраться почему запускается все только из под дебага.

 

В 20.01.2023 в 20:20, mitya1698 сказал:

dp83848  Это обычная MII / RMII PHY

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

Если нужны какие-то особые режимы, тогда да надо писать и настраивать PHY.

 

Спасибо, вы были правы

В 20.01.2023 в 21:16, k155la3 сказал:

Наверное так, трансиверный интерфейс очевидно более-менее стандартизирован "по базе".

ТС надо покурить интернет по этой теме. И по Cube тоже.

https://community.st.com/s/question/0D53W00001UyDfJSAV/stm32f407-lwip-dp83848-cannot-ping-why  STM32F407 + LwIP + DP83848 = Cannot Ping - Why?

 

Спасибо

 

В 20.01.2023 в 17:12, mitya1698 сказал:

А почему вы это считаете программной проблемой? Аппаратура ваша или покупная отладка, не совсем ясно.

407 проц +phy на MII при правильном подключении пинг стартует из "коробки". Тоесть собранный кубом проект.

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня вопрос по связке STM32+Ethernet. Опыт какой-никакой у меня имеется, но программировать Ethernet никогда прежде не приходилось. А тут возникла у меня идея-фикс, чтобы на базе Ethernet сделать виртуальный СОМ-порт. Ведь если его на USB делают, то вероятно и на Ethernet тоже можно сделать. Причем, не столько ради скорости передачи данных, сколько из-за того, что трансформатор у Ethernet'a может служить гальванической развязкой. А такая развязка нужна мне для того, чтобы с помощью АЦП (у меня ADS1256) можно было отрицательные напряжения мерить. Для этого я гальванически развязываюсь, а вместо земли вывожу из платы напряжение с опорника (Vref) - оно как раз посреди шкалы у этого АЦП находится.

Терзаемая такими желаниями 🙂, купила я себе на Aliexpress вот такую плату (STM32-ETH-47V/UET) :

https://aliexpress.ru/item/1005002921352110.html

Это связка контроллера STM32F407VG6 с EthernetPHY DP83848.

Продавец обещает: "Предоставляется интерфейс Ethernet и программа тестирования.", но никакой "программы тестирования" я не получила, а продавец на связь не выходит. Сама же плата при подключении питания признаков жизни не подает (за исключением горящего светодиода питания) - впечатление, что контроллер еще не прошит.

Где бы мне раздобыть демку для этой платы, желательно написанную на CubeMX (т.к. в программе, написанной на регистрах, логику работы с Ethernet мне не разобрать)?
В интернете уже рылась - самое близкое это:

Цитата

Приобрел пару лет назад платку STM32-V/UET c F207VGT6 и эзернетом на DP83848.
Валялась, вспомнил, решил поиграться.
Из доки - исходники проектов с примерами к STM3220F-EVAL 😃 и схемка.
Сгенерил проект с помощью cubemx (RMII Ethernet, lwIP), 50МГц MCO1.
Прошил, эзернет поднимается, даже вижу DHCP Discover...

http://forum.easyelectronics.ru/viewtopic.php?f=35&t=34172

Но этому товарище хотя бы повезло в том, что ему "дока" досталась, тогда как мне - ничего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, Xenia said:

на базе Ethernet сделать виртуальный СОМ-порт

А какой драйвер со стороны ПК предполагается использовать?

image.thumb.png.3107f0e63ec4c4581ca5ff35ef4c3f1e.png

Ну и ценник!

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, tonyk_av сказал:

А какой драйвер со стороны ПК предполагается использовать?

До выбора драйвера у меня еще руки не дошли - мне бы Ethernet довести хотя бы до того, чтобы он в сети был виден по TCP/IP. А пока плата мертва, заниматься выбором драйвера преждевременно. Но если у вас что-то есть на примете, то я бы с интересом вас послушала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, tonyk_av сказал:

Ну и ценник!

Я ее покупала за 6414.90 руб (с доставкой вышло 6845.52 руб). Заказывала 27 августа, получила на почте только вчера.

Тоже не дешево, но с чего-то мне надо начинать. А если изготовление такой платы у умельцев заказывать, то обошлось бы гораздо дороже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, Xenia said:

Но если у вас что-то есть на примете, то я бы с интересом вас послушала.

В своё время смотрел в сторону com2tcp. У него много производных на github, но качество этих проектов я не проверял.

Есть коммерческие варианты типа вариант от Элтима.

У китайцев на Али есть конвертеры на RISC-V, если не ошибаюсь, на CH32F307.

В моём случае требовался драйвер под Винду в исходниках, потому что требовалось, чтобы приложение видело СОМ-порт с параметрами 9600/8N1, а реально на МК шло 115200 вне зависимости от настроек порта. В итоге проблему успешно решил с другого бока и на W5500. Тем не менее, вариант с виртуальным портом всё равно интересен для бюджетных применений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, tonyk_av сказал:

У китайцев на Али есть конвертеры на RISC-V, если не ошибаюсь, на CH32F307.

И что во что они конвертируют?

Поймите, что мне никакая конвертация не нужна, т.к. для компьютера Ethernet-разъем родной, вы, даже если заходите, выковырить его из материнской платы не сможете. А с другой стороны у меня плата с Ethernet-разъемом, который через приемо-передатчик DP83848 непосредственно связан с контроллером. Соединяются же они между собой патч-кордом, и здесь нигде нет никаких посредников типа RS-232 или RS-485 с их бодами, четностью, битностью и прочими специфическими атрибутами.

А слово "виртуальный СОМ-порт" я произнесла вовсе не оттого, что через Serial-port связь хочу наладить, а исключительно потому, что так называется удобная удаленная связь через файловые операции, когда отправляемые сообщения пишутся в виртуальный СОМ-порт, открываемый как файл, и так же из того же файла читаются входящие сообщения. Это вариант привлекателен еще и тем, что такая передача буферизируется на уровне операционной системы - например, заказав буфер в 64КB, вы будете избавлены от ловли каждого входящего байта и получите возможность читать входящие сообщения блоками, которые накопились со времени предыдущего чтения.

Кроме того виртуальный СОМ-порт удобен еще и тем, что программы, работающие с внешними устройствами через реальный СОМ-порт, легко "обмануть", подсунув им вместо номера реального СОМ-порта номер виртуального. Они даже не заметят этого. Но если я возьму драйвер от какого-то умельца с Гитхаба, то в придачу к нему получу библиотеку на десятки мегабайт, предоставляющую функции, посредством  которых буду вынуждена связываться с отдаленным девайсом. Положим, что в своей программе я бы могла переделать файловый доступ на библиотечный, однако чужие программы мне на этот вариант не переделать (из-за отсутствия их исходников). С подобной ситуацией я уже встречалась в ... мобильных телефонах старых типов, которые при подключении к компьютеру по USB не показывают содержимое своей памяти в виде дерева директориев, а требуют специальную программу от производителя, которая содержимое памяти скрывает, а позволят только скачивать фотки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Xenia сказал:

А такая развязка нужна мне для того, чтобы с помощью АЦП (у меня ADS1256) можно было отрицательные напряжения мерить.

Это понятно. Непонятно - зачем для этого городить виртуальный COM-порт??? :scratch_one-s_head:

Передавать данные через Ethernet-интерфейс можно кучей разных способов. Например - посредством UDP-кадров или через TCP-сокет. TCP-сокет (с точки зрения юзера) наиболее близок к соединению UART-UART.

2 часа назад, Xenia сказал:

Терзаемая такими желаниями 🙂, купила я себе на Aliexpress вот такую плату (STM32-ETH-47V/UET) :

https://aliexpress.ru/item/1005002921352110.html

Сильно! Искали подороже?  :wink:

Если зайти на: http://starterkit.ru/html/index.php?name=shop&cat=95 

то можно найти гораздо дешевле. Например:

http://starterkit.ru/html/index.php?name=shop&op=view&id=93

и много других с Ethernet-разъёмом. Есть там и STM32. Причём - там для всех плат имеются схемы и кучи примеров. А не как на али....

Вот тоже:  http://starterkit.ru/html/index.php?name=shop&op=view&id=38

всего 2 тыр стоит. Всё есть для Ethernet. А в описании к последней сказано:

Цитата
Демо и приложения
   WEB сервер основанный на uIP стеке протоколов TCP/IP.
   WEB сервер основанный на LwIP стеке протоколов TCP/IP.
   USB Host Mass Storage  - контроллер читает содержимое USB флешки.
   USB Host Keyboard  - контроллер опрашивает USB клавиатуру.
   USB Virtual COM Port.
2 часа назад, Xenia сказал:

Но этому товарище хотя бы повезло в том, что ему "дока" досталась, тогда как мне - ничего.

Ну так - кто-ж Вас заставлял покупать на али, кота в мешке? На стартерките все платы со схемами и библиотеками примеров. И поддержка - на русском.  :smile:

2 часа назад, Xenia сказал:

Я ее покупала за 6414.90 руб (с доставкой вышло 6845.52 руб). Заказывала 27 августа, получила на почте только вчера.

Всего-то в ~3 с хвостиком раза дороже чем:  http://starterkit.ru/html/index.php?name=shop&op=view&id=38

:sarcastic:

44 минуты назад, Xenia сказал:

А слово "виртуальный СОМ-порт" я произнесла вовсе не оттого, что через Serial-port связь хочу наладить, а исключительно потому, что так называется удобная удаленная связь через файловые операции, когда отправляемые сообщения пишутся в виртуальный СОМ-порт, открываемый как файл, и так же из того же файла читаются входящие сообщения.

TCP-сокет точно также открывается как поток. В который затем можно писать и читать из него массивы байт.

Кроме того (в отличие от костыльного виртуального COM-порта) - он позволяет получать информацию о статусе подключения (есть подключение? нет? произошло отключение удалённой стороны? и т.п.). О чём, в варианте с COM-портом, и мечтать не приходится. А если что-то не так сделаешь с виртуальным COM, то и синий экран получить на раз можно и просто систему завесить. Поэтому - ну очень странный выбор.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, jcxz сказал:
3 часа назад, Xenia сказал:

А такая развязка нужна мне для того, чтобы с помощью АЦП (у меня ADS1256) можно было отрицательные напряжения мерить.

Это понятно. Непонятно - зачем для этого городить виртуальный COM-порт???

Потому что я работаю с программным обеспечением, написанном разными иностранными компаниями под связь с железом через СОМ-порт. Протокол связи я уже разгадала и уже сотворила замену их фирменного железа на самодельное из китайских модулей. Ибо скопировать чужую программу ничего не стоит, а покупать железо у фирмы стоит огромных (по моим меркам) денег, тем более что железо отдельно от программы они не продают, а ныне с Россией вообще не торгуют. Сперва работала через реальный СОМ-порт, купив у китайцев "промышленную" плату с интерфейсом RS-232, но потом перешла на виртуальный СОМ-порт, подключив USB-кабель напрямую к контроллеру, занимающимся периодическим съемом результатов с АЦП (по прерыванию), а в остальное время манипулирующего 32-мя цифровыми линиями (какие-то из них управляющие и ориентированы на вывод, а какие-то информационные, ориентированные на чтение). Избавившись от реального СОМ-порта, я избавилась и от досадного ограничения в 115200 бод, а теперь хочу еще большего. А компьютеры нынче быстрые пошли - программа с возросшим входным потоком справляется.

 

32 минуты назад, jcxz сказал:

Сильно! Искали подороже?  :wink:

Если зайти на: http://starterkit.ru/html/index.php?name=shop&cat=95 

то можно найти гораздо дешевле. Например:

http://starterkit.ru/html/index.php?name=shop&op=view&id=93

Я искала только на Aliexpress, т.к. и раньше там всё покупала, а по российским магазинам я не спец.
Просьба к вам - не забалтывать заданный мной вопрос о ПО для этой платы, переводя разговор о том, где дешевле покупать. Всё равно, чтобы вы мне ни посоветовали, купленную плату я уже не выброшу.

 

32 минуты назад, jcxz сказал:
32 минуты назад, jcxz сказал:

TCP-сокет точно также открывается как поток. В который затем можно писать и читать из него массивы байт.

точно также открывается как поток. В который затем можно писать и читать из него массивы байт.

Я это знаю, но чужую/фирменную программу мне с СОМ-порта на TCP-сокет не переделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...