DDDDRRRRR 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба Здравствуйте, необходимо реализовать обмен данными между мк stm32 и пк посредством ethernet. МК передает данные с датчиков, АПЦ и тд, ПК передает управляющие сигналы - зажечь, потушить светодиод и тд. МК - stm32f746 dicovery, PHY - LAN8742. Предполагаю использовать CubeMX, соответственно HAL, т.к. stm32f7, IDE - STM32CubeIDE, в качестве стека LWIP без ОС (читал разные мнения относительно применения FreeRTOS при использовании LWIP, пока решил не прикручивать его сюда). Перечитал кучу информации, форумов, но ничего толком не нашел, что можно было бы использовать в качестве основы, т.к. с Ethernet сталкиваюсь впервые. МОжет кто сможет помочь информацией, как должна выглядеть архитектура такой программы, код, примеры? Вроде понимание теории есть, проблемы с реализацией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
.crz 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба Здравствуйте. Предлагаю посмотреть Cyclone TCP https://www.oryx-embedded.com/products/CycloneTCP В репозитории есть готовые примеры, так что старт будет довольно легким. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DDDDRRRRR 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 48 минут назад, .crz сказал: Здравствуйте. Предлагаю посмотреть Cyclone TCP https://www.oryx-embedded.com/products/CycloneTCP В репозитории есть готовые примеры, так что старт будет довольно легким. Спасибо за совет, но хотелось бы использовать что-то более распространенное, желательно поддерживаемое самим разработчиком, первый раз слышу об Cyclone TCP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба У вас же LWIP на борту будет. Вот по нему и ищите примеры. Распространённая штука. Ну и как бы устройство TCP/IP само собой от зубов должно отлетать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DDDDRRRRR 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 38 минут назад, VladislavS сказал: У вас же LWIP на борту будет. Вот по нему и ищите примеры. Распространённая штука. Ну и как бы устройство TCP/IP само собой от зубов должно отлетать. Из примеров по нему я нашел по сути только эхо, но нигде не могу найти какие настройки задавать в кубе, какие функции прописывать и использовать в коде, грубо говоря рабочий пример передачи данных, наподобие поставленной задачи, который можно перебрать под свои нужды Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 1 час назад, DDDDRRRRR сказал: в качестве стека LWIP без ОС Есть в нем пример web-сервера именно в такой конфигурации. Чем не устраивает? Вот вбил в гуглю "lwip sample" и прямо первая ссылка. 1 час назад, DDDDRRRRR сказал: МК передает данные с датчиков, АПЦ и тд, То есть вам либо надо использовать websockets, либо не нужен web вообще. В последнем случае непонятно, в чем сложности? Соединились и шлите себе данные в обе стороны, протокол поверх TCP самопальный. Это вообще нижний уровень любого примера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DDDDRRRRR 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 2 минуты назад, Сергей Борщ сказал: То есть вам либо надо использовать websockets, либо не нужен web вообще Насколько я понимаю websockets используются для связи с браузером, мне же необходимо передавать пакеты с программку на пк наподобие терминала, которая в дальнейшем будет обрабатывать данные. 4 минуты назад, Сергей Борщ сказал: протокол поверх TCP самопальный В этом основные сложности, что должен содержать этот самопальный протокол, какие проверки данных, какую информацию добавлять при отправке пакета и тд, действия в случае ошибок. Просто нет пока понимания архитектуры приложения и за что отвечает LWIP ,а какие функции необходимо дописывать самому Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 26 минут назад, DDDDRRRRR сказал: что должен содержать этот самопальный протокол То, что вам нужно. 26 минут назад, DDDDRRRRR сказал: какие проверки данных Заботу об ошибках берет на себя TCP. Считайте, что это такой безошибочный COM-порт с определением выдергивания кабеля. 26 минут назад, DDDDRRRRR сказал: какую информацию добавлять при отправке пакета и тд Протокол потоковый, по дороге пакеты могут фрагментироваться/дефрагментироваться, поэтому придется самостоятельно разбираться, где заканчивается одно сообщение и начинается следующее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 1 час назад, DDDDRRRRR сказал: мне же необходимо передавать пакеты с программку на пк наподобие терминала Это называется "соединение TCP-сокет". Обмен внутри TCP-сокета - байт-ориентированный. Если нужны кадры - это уже делаете сами, поверх него, собираете кадры из потока байт. Любым удобным протоколом. Гарантия доставки и правильность порядка байт этого байтового потока гарантируется TCP-стеком (как уже сказали выше). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alag57 1 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 6 hours ago, DDDDRRRRR said: Из примеров по нему я нашел по сути только эхо, но нигде не могу найти какие настройки задавать в кубе, какие функции прописывать и использовать в коде, грубо говоря рабочий пример передачи данных, наподобие поставленной задачи, который можно перебрать под свои нужды В репозитории куба есть примеры: STM32Cube_FW_F7_V1.15.0\Projects\STM32756G_EVAL\Applications\LwIP. Вам стоит посмотреть TCP Echo client и TCP Echo server. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BioWolf2000 3 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба Неплохо получается freemodbus+freertos+lwip. https://www.embedded-experts.at/en/produkt/modbus-slave-evaluation-version/ Без проблем зарегистрироваться и скачать. В eval версии полностью исходники и примеры для STM32 под STM32CubeMX. На первое время отладку на ПК можно делать через Modbus Poll. Датчики повесить на Inputs, управляющие сигналы на Coils, настроечные параметры - Holdings, в разборе Coils обеспечить вызов функций. Доступ к переменным через Union union{ uint16_t arr[10]; struct{ uint16_t reg1; uint16_t reg2; // } } mbHoldings; Модбас работает через mbHoldings.arr, программа через mbHoldings.reg1 и тд ps. Есть перевод UM1713 на русский http://pro-interes.com/wp-content/uploads/2020/02/LwIP_TCP_IP_stack_descriptionRus.pdf Про Modbus можно почитать тут https://habr.com/ru/post/281430/ И рекомендую поставить сниффер TCP - Wireshark. Без него никак. Там кстати плагин modbus тоже есть 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба On 6/12/2020 at 9:28 AM, DDDDRRRRR said: Перечитал кучу информации, форумов, но ничего толком не нашел, что можно было бы использовать в качестве основы, т.к. с Ethernet сталкиваюсь впервые. МОжет кто сможет помочь информацией, как должна выглядеть архитектура такой программы, код, примеры? Вроде понимание теории есть, проблемы с реализацией. Я бы вам предложил использовать во такую программу - https://www.nxp.com/design/software/development-software/freemaster-run-time-debugging-tool:FREEMASTER Целиком решение сотоит из программы на PC и программного модуля в вашем микроконтроллере. Программный модуль для микроконтроллера там отдельно скачивается. Поскольку программа работет через последовательный порт (и несколько других неподходящих интерфейсов), то вам надо еще дописать в микроконтроллере отправку данных не в UART, а в TCP соединение. Это элементарно. А на стороне PC надо будет поставить эту программу - https://www.hw-group.com/software/hw-vsp3-virtual-serial-port для конвертации TCP соединения в виртуальный последовательный порт. Решение очень универсальное, вам после этого даже не надо будет как то специальным образом объявлять переменные в микроконтроллере для доступа к ним из PC. Они могут импортироваться прямо из ELF файла получаемого после компиляции проекта. Дашборды во FreeMaster делаются буквально за минуту: Никакого кодирования, можно без всяких сторонних виджетов. Только конфигурирование и все. Поток информации получаете в реальном времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба 4 часа назад, AlexandrY сказал: Я бы вам предложил использовать во такую программу - Жуть какая! Это что, сегодняшняя мода программирования? Немудрено, что толковых прогеров сейчас днем с огнем... 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
razrab83 21 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба 12.06.2020 в 14:00, Сергей Борщ сказал: Считайте, что это такой безошибочный COM-порт с определением выдергивания кабеля. Считайте, что это такой безошибочный COM-порт БЕЗ определением выдергивания кабеля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 18 июня, 2020 Опубликовано 18 июня, 2020 · Жалоба 49 минут назад, razrab83 сказал: Считайте, что это такой безошибочный COM-порт БЕЗ определением выдергивания кабеля. Если включить keep-alive , то с определением выдергивания кабеля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться