Top.Mail.Ru
Уведомления
Очистить все

Отправка UDP с помощью STM32 + ENC28J60

Тимур
(@timur)
Level 1

Всем привет, прочел отличную статью по работе с enc28j60 на этом сайте состоящую из 4 частей, и очень захотелось добавить в нее поддержку udp протокола, но знаний по C не хватает, кто мог бы помочь в этом вопросе?

Ссылка на статью - 4 часть

Цитата
Topic starter Размещено : 28.02.2023 20:16
Тэги темы
Aveal
(@aveal)
Top level Admin

Привет, блин был проект под UDP, тогда еще, когда те статьи писал. Но что-то отвлекло, не было времени статью написать пятую, а теперь и проект почему-то не нашел 🤔 Если прямо совсем не срочно, то в течение 3-4 недель могу постараться время выкроить - статью добавить с UDP.

ОтветитьЦитата
Размещено : 28.02.2023 20:45
Тимур
(@timur)
Level 1

Был бы очень признателен, мне лично не обязательно прям целую статью с описанием, достаточно увидеть основную концепцию протокола, в любом случае, буду ждать, заранее спасибо 🙂 

ОтветитьЦитата
Topic starter Размещено : 28.02.2023 21:08
Aveal
(@aveal)
Top level Admin

@timur Договорились )

ОтветитьЦитата
Размещено : 28.02.2023 21:14
Aveal
(@aveal)
Top level Admin

@timur приветствую ) Свои ENC28J60 поставил в одном проекте, пришлось новые заказывать, доставку ждать... Набросал демо-проект с UDP, принимается пакет, данные инкрементируются, затем отправляются обратно:

 

ОтветитьЦитата
Размещено : 19.03.2023 10:33
Тимур
(@timur)
Level 1

@aveal Спасибо большое за 5 часть, оказывается не так все сложно было 👍 

Думаю теперь можно попробовать реализовать еще одну важную часть драйвера ENC, это генерация своих UDP пакетов. К примеру, сбор каких либо данных с датчиков температуры и т.п. устройств, формирование UDP пакета и отправка по сети на сервер 🤔 тут понадобится ещё функция арп кеширования, в общем надо нормально изучить этот Си 😀 

ОтветитьЦитата
Topic starter Размещено : 21.03.2023 08:27
Тимур
(@timur)
Level 1

@aveal а и еще один вопрос, я попробовал отправить по udp через микроскрипт написанный на питоне 212 байт цифр вида 111111..., контроллер вернул мне 22222..., окей работает, но если я пробую отправить больше чем 212 байт, то в ответе получаю 212 байт вида 22222... а после набор случайных байт.

Провел дебаг в STM32CuneIDE (st-link v2 + stm32f103c8t6), данные в переменной data udp кадра правильные, все 22222.... они идут через SPI в ENC, но wireshark показывает мне лабуду после 212 байта.

Можете по возможности проверить почему такое ограничение в длине ответа?

ОтветитьЦитата
Topic starter Размещено : 21.03.2023 10:07
Aveal
(@aveal)
Top level Admin

@timur решилось после изменения uint8_t на uint16_t? Для тех, кто читает - это в комментариях.

ОтветитьЦитата
Размещено : 21.03.2023 17:04
Тимур
(@timur)
Level 1

@aveal да, отправил 1000 букв А, получил 1000 букв В, до этого после 213 буквы был бардак, а и еще насчёт глюка четности длины кадра, пробовал разную длину, что-то его не словил или может в модуле enc 6 версии исправили это 🤨 

ОтветитьЦитата
Topic starter Размещено : 21.03.2023 21:18
Тимур
(@timur)
Level 1

Продолжая тему udp рассылки, а можно замутить статью про mpeg ts?Вроде есть библиотека lame и скорости stm32 должно хватить для кодирования звука в стрим например от fm радио и отправка в интернет как поток или просто передача звука по сети 🤔 

ОтветитьЦитата
Topic starter Размещено : 22.03.2023 21:54
Поделиться: